Monday, February 16, 2009 -
This is my fault. Boom - there it is. No excuses, no lame attempts to laugh it off and blame Phil (even though it really is his fault). A lot of people have been messaging me via Twitter and leaving comments on my blog with the same question:
Dude, where's the source! You promised 1-2 weeks! It's been a month!
My response has been the same every time: the source will be ready by MIX. As you can imagine, people haven't taken to this very well and have decided that:
I can understand the frustration - honestly I can because I told you something that's not happening and that's not cool. Well I'm here to tell you that nothing's changed really - I still can't load the source (but I'll tell you why in just a second) - but it's not for any of those reasons (obviously).
Good Things Happen
The Storefront was probably one of the most organic applications I've ever worked on - something that was allowed to morph and change based on community feedback and changes in technology allowed. It changed faces twice:
What you don't know is that a 3rd refactor has just happened - and for a good reason: Microsoft is taking this effort seriously and it is now my 100% full time commitment (as opposed to before - the Storefront was almost completely an extracurricular thing for me). Now I know what you're thinking:
OMFG Great!1!1! Another Pet Shop or Fitch and Mather!1!1!
I have nothing against those sample apps - nor do I have an issue with Starter Kits. But this is neither of those things. It has changed, it has matured, and it's becoming the application I wanted it to become when I started this effort last spring: it's becoming relevant.
We're not all evil here. It's not always about marketing, and it's not always about pimping our stack - sometimes Good Things Happen and I'm asking for your patience for just another 4 weeks, while we tidy this thing up and I get ready to show it off (and some other things) at MIX.
So Why No Source!1!1!
Because it's not working yet and we're still nailing out concepts - architectural shifts (slight, but awesome) that will make this thing work in a relevant way. It's always been in the spirit of the Storefront to do these kinds of things in the open and to remain transparent - but we have a "concept shift" happening that I've been pushing for, and we're "spiking it" right now to see if it makes sense (which I think it really, really does!) - it really helps if you can do these kinds of things in small groups.
So I'm taking this 45 days to work this thing and I'm asking for your patience - it's coming together and I think it will rock at MIX. This has been a great experience in learning in every way, and if there's something specific you'd like to know more about (in terms of patterns or code I've shown with the Storefront) I'm more than happy to show you and write a blog post on it. Someone just today asked for more information about the Presentation Model Pattern - so I'm working up a post on that currently.
I'm not playing you and I have no other agenda right now except to devote as much of my time as possible to getting this right. It could flop, or it could fly. I just need my head down right now with the rest of the team to nail this - and I'm asking you to be patient with me. It's only another 4 weeks.
your client find you with your pants down - WRITE TESTS.
Tests don't take that long - I did 30 of them in 40 minutes. No excuses...
test your stuff. "Git er done" isn't what pro's do - they get it done and do
it right :). And I'm not saying you're not a pro - not at all. "Done" just
has to include testing is all...
Your reply to my comment doesn't make sense.. I agree with you 100%.. but at the end of the day a client isn't going to pay you for a half done system.
all the client wants is to make money that's why someone goes into business.. what Rob has done is show the world different ideas and my favourite Store Front vid would have to be the one with the Birthing Process..
bottom line is unfinished product === failure!!
sometimes you have to suck up a few poorly writen lines of code just to finish the project
How about Rob comes to your organisation, works for 6 month 24 hours a day for free and then allows you to claim the work as yours? Would that please you? Give the guys a break, your an embarassment to yourselves.
compliment for the storefront project.
I have a question about the concept of aggregate defined in DDD.
"An Aggregate is a cluster of associated objects that are treated as a unit for the purpose of data changes"
For this purpose in storefront you have created the IAggregateRoot interface used to mark an entity as an
aggregate root, and you set Customer and Product entities as aggregates:
- customer contains shopping cart entity,
- product has related products, cross sells and recommended entities.
First question:
the definition of the aggregate says that "associated objects are treated as a unit for the purpose of data changes",
does it mean that if I save the customer I save also the shopping cart?
If so the SimpleCustomerRepository doesn't consider customer and shopping cart as a unit, it has
Save and SaveCart methods respectively for customer and shopping cart entities.
Second question:
an aggregate could be also the order entity, is it right?
Rob can you publish a roadmap about storefront evolution?
I'm interested to the implementation of an Entity Framework repository :))
I like very much the first version of storefront with the use of IQueryable extensions
________________________________
Can you give us more information on when you will have this completed?
Thanks for an engaging and thought provoking series.
clear. My point was simply that if I did work for you, I wouldn't be
bouncing all over the place :). I sort of have to when doing things like
this because people have a LOT of questions so I want to cover everything...
Anyway - I've stayed true to TDD/DDD, even up until now. The only major
thing I've shifted is that the biz logic is in plugins :).
Either way - I'm workin up the webcast now...
part 26 - it was tight and I liked exactly where it was. I would have kept
going with what I had if I was working in a company setting and tightened it
down, etc.
The difference with what you see is that we're making the app a community
app now - which to me is an entirely different focus. If you watch the MIX
presentation, we have a very clear goal - which is completely different then
most "enterprise" apps have: the ability to quickly change/theme/tweak.
I do appreciate your feedback (it's the 3rd time I've been fired!) - the
main thing I'd like to remind you is that I'm not working as your consultant
:) - I'm more or less trying to "educate" from a position of putting myself
on the firing line :):). Bit of a difference - if *you* were my client, I
wouldn't be doing this.
Anyway - I have a series of posts explaining this in the cue - first up
today.
I recognize this, because I often have the exact same problem of getting sucked into the rabbit hole of the continually improving design. But at some point a deadline pops up and I just have to get it done.
You said very early on that you considered the community to be your customer. I have to say that if I were truly your customer, I think I'd have fired you after the third architecture change because I'd have been like "I paid this guy to write software, not experiment". Or worse, I'd think you just didn't know what the hell you were doing if you have to change your whole strategy every few weeks.
Anyway, just to be clear, I have enjoyed reading the series and will continue reading it. It does give a good intro to some patterns and tools I didn't even know existed. But, if your plan is to have a finished e-commerce starter kit, at this rate it's never going to get done! Hard to hit a moving target, you know?
It's hard to implement a "backbone" while making sure you still pay the most
attention to the commerce stuff.
But .NET development is getting very compelling already, in particular with elements of code generation and better tooling. And cleaner XHTML in Webforms 4.0 and MVC.
On the specifics of the Plugin work, how would the App_Code dynamically compiled Plugin approach work with Windows Azure style deployment? Where pre-packaged applications have to be deployed, without FTP or normal file access?
And back thinking about the Framework stuff that's coming out... though running the risk of trying to fit in a more complex framework piece of tech in the small app... how would it eventually play nice with MEF?
On the CMS stuff, I'd be keen for a simple Personalisation/Content Targetting architecture. As adding Widgets/Modules to every page individually gets unmanageable. It would be nice to target these by user or site area or product category with the beginnings of a little rules engine, which cuts out the need for some of the drag-drop interface customisation. Though I realise that's the route many open source products go, in their Admin areas.
Moved off linq to SQL to broaden DB support.
The tangent is CMS stuff - watch the presentation :)
Got your MIX09 video and the new AdventureWorks source code. Thanks for all the hard work.
"Simplicity is compelling" keep it going...I really hate YAGNI.
https://content.visitmix.com/2009/sessions/default.aspx?keyword=There%27s+a+Little+Scripter+in+All+of+Us%3a+Building+a+Web+App+for+the+Masses
I've been pleased to see the NerdDinner and Contact Management samples come to some consensus on Repositories, Services, Validation, LINQ and the like. And had thought MvcStorefront was going in a similar direction.
Has some "strategic" decision been made to realign the Storefront sample? The source really confuses me, so I suppose I'll have to be patient and wait for Rob's blog posts.
[1] using Microsoft namespace opens up "approved application" can of worms like with Oxite?
[2] what no LinqToSql sample repositories? No IQueryable for filtering and to play nice with ADO.NET Data Service and .NET RIA Services?
[3] using T4 for database generation, object store, themes, widget and module features seem to be going off on a tangent from a simple ecommerce reference app?
Did Rob write this or the other Commerce Starter Kit guys?!
Thanks so much for the good stuff, Rob
"Trying to load demo bits to Codeplex... and it's down. Yay!"
Patience is a virtue :)
"Trying to load demo bits to Codeplex... and it's down. Yay!"
It's the weekend here in Australia .. so have you finished your demo @ MIX09? Any news on how it went? any code / session vid available?
(just trying to get these q's in quick before u go on a long. most desereved, vacation with the family, which i'm guessing cause most of the other boys (scott, phil, etc) sound like they are :) )
PS. Pre-orded the book, out of resepect and interest.
Source code will be on codeplex?
think you'll like it :)
I am very much impressed and inspired with your work .. basically i am a java developer .. but due to some project work it happend to see your blog and started the work in ASP.net .. and i am continuing it happily .. I feel that i should continue to work in asp/c# for further works ..
Expecting lot more from you soon .. especially DDD
How hard would it be to just create a designer like the Linq2Sql classes use currently?
That would be really cool.
Bringing the Agile and TDD into traditional boiler plate app. Making it possible to actually trash long overdue and smelly code that managers of small businesses cling to. "It works fine..... it's just this little thing which I'm sure will be no effort at all after you've heard my motivational speech..... even though the guy who originally wrote it sold it at a discount with the clause of never being contacted for any form of support...."
This will save me a lot of headache.
Thanks again for doing this project and seeing it through to its completion. I have an eCommerce site that I volunteered to do for a friend and I think your solution may be idea.
She has a PHP/MySQL site now, but is refocusing her company to deliver services to at-risk people and also sell a sub-set of the products she used to sell. It needs to intergrate with a results-based management and tracking system for case management that I'm developing for her using the MS Entity Framework.
She needs to have regular web pages as well as catalog and I think your system will allow her to do this.
Lastly, it would be useful to have some sort of purchase order or "other" payment method where a code (or PO Number) could be entered.
Thanks again! I can't wait to see the results of all of your work. I have learned a lot from you!
Bill
Thanks a bunch for all your work on this project, it's incredibly useful to me.
Anyways, I'm posting looking for a suggestion. I'm building an application using the model you've presented here (with some tweaks). It's a different sort of app, so I'm hoping this all works out for it, and I'll certainly let you know of any challenges I run into (especially my solutions to those challenges).
So, my app involves an MVC web application, which will be hosting a Silverlight app. I've built out repositories, and services just like you've presented here. Currently, I'm presenting the data to Silverlight through a WCF service hosted in my Web application (under Services/Private, we'll have a public API later). But, my WCF service is essentially the same as my normal data service that I've built in the services library, except that it is in a .svc file (with a .svc.cs codebehind), and all of the methods have [DataContract] on top of them. The WCF service simply calls the underlying services layer's methods, so it's a pretty simple solution. However, I'm wondering if it might make sense to turn the services (for example, CatalogService in your app) into a WCF service, having the web application just call the class library directly through code, so that one service is available both straight through the compiled assembly, and exposed on the web site as well, as a WCF service. The upshot is that I don't have to manage changes at two different levels, and I reduce redundant code. However, there must be a downside!
I've tested that this, does, in fact work, but I'm wondering if there are any undesirable implications of doing it this way that I haven't noticed. Any ideas?
Greatness takes time ;)
Keep up the fantastic work Rob... it's very much appreciated :)
Congratulations! Great webcast!!!!!
Everyone has been saying really nice stuff about this project, so I'm just going to state something. It's still NOT finished.
You know how i feel about your stuff.. I think you're great, everything you've done has been an inspiration.
I don't know if you've achieved what you set out to achieve by what was the main goal of the MVC Store Front.
To sell stuff
1. Can i sell stuff?
2. Is the end client going to be happy?
at the end of the day my client doesn't care about DDD or all these man design patterns. He/She just wants to make the big $$$$$$$'s.
I have a friend who is still using ASP, yes classic stuff. He's clients love him, I'm thinking to myself he's a B Grade developer, however he knows how to finish.
being a good developer is %30 Skill Set %70 Delivering on time with no bugs.
That's my opinon
Some people will always bitch and moan in the meantime, but at the end of the day, the end product will be better for it. Happened with WoW and look at it now, license to print money.
For me, Rob's built up a lot of credibility, genie wishes, date my sister type of gratitude stuff with regards to this series. I got way more from him then he got from me (can't divide by zero).
I hope the capable others, who are in a position to produce this kind of material, see an overall positive outpouring of sentiment from the community.
-----------------
>>> >>> this definition placed the community in a cooperative decision-making position (which I fear was never truly the case)
>>> I think I've been asking for your feedback, not really your consent. At some point *I* have to be responsible for what I've made - therefore *I* make the final decision :).
You appointed the community to be the client, right?
-----------------
>>> >>> I don't know of any "clients" out there that would settle for the explanation you've given
>>> Probably not. In this case there's not much else I can do here. Feel free to fire me :p.
Learn from the experience? Wasn't that the original goal?
-----------------
>>> >>>Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
>>> Are you hammering me? It sounds like it...
This was intended to convey a sample dialog with the "client", not me hammering you personally. Apologies if you read it that way.
-----------------
>>> >>>Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD)
>>> 26 Screencasts +4 blog posts. The most public and transparent thing Microsoft has ever done, and you're lecturing me about communication? Really?
I believe I said something about the series being WONDERFUL! The communication breakdown I was referring to was everything that happened after the last episode.
-----------------
>>> >>>How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
>>> Wow. Not sure I've had a worse comment than that on my blog. As I mention - feel free to fire me and move on.
Again, this wasn't intended to be a personal attack. Everyone is learning from this experience, right? Dealing with these situations is part of what we're learning (hopefully). Not taking feedback as a personal attack is also something we should learn. :)
-----------------
>>>Please don't take my comments as abusive or negative
Sure, why not. I love lectures.
Me too!
-----------------
>>> >>> Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
>>> Sure - with comments like this you can see why it's so motivating.
I'm a programmer, not an author or a poet. My inter-personal relationship skills may be lacking, but
that wasn't the focus of the course, was it? Wait, this isn't the hostile takeover skills workshop
? Damn, I must be in the wrong forum again. :)
-----------------
>>> I have no idea if people actually work for you, but I feel sorry for them.
Yes, I feel sorry for myself sometimes too. Thanks for your support!
If you weren't getting "angry," feedback or any at all I'd be worried but the fact that people are taking this much time to write up a comment on one of your posts show much people really care about this project.
Just try to take it in stride, there's no perfect happy area (as we've seen with Oxite LOLOLLOLOL).
Be happy with what you've accomplished and just remember that these types of comments come out of good, not bad. We're all cheering for you on this one and just want to see the fruits of your labor.
I think I've been asking for your feedback, not really your consent. At some point *I* have to be responsible for what I've made - therefore *I* make the final decision :).
>>> I don't know of any "clients" out there that would settle for the explanation you've given
Probably not. In this case there's not much else I can do here. Feel free to fire me :p.
>>>Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
Are you hammering me? It sounds like it...
>>>Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD)
26 Screencasts +4 blog posts. The most public and transparent thing Microsoft has ever done, and you're lecturing me about communication? Really?
>>>How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
Wow. Not sure I've had a worse comment than that on my blog. As I mention - feel free to fire me and move on.
>>>Please don't take my comments as abusive or negative
Sure, why not. I love lectures.
>>> Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
Sure - with comments like this you can see why it's so motivating.
I have no idea if people actually work for you, but I feel sorry for them.
In part 5 of the series you introduced the idea of the "client" which you defined to be "you [the community], some big-whigs at Microsoft, and me [Rob Conery]." While I'm sure your intention was to keep the audience interested and involved, this definition placed the community in a cooperative decision-making position (which I fear was never truly the case).
According to the roles of the project (as defined by you [Rob Conery]), the community is the client (or at least part of the client). Like most clients, we want to know what's going on. I don't know of any "clients" out there that would settle for the explanation you've given, which is more or less "I'm currently refactoring the code, but don't worry, it will be done in 4 weeks and it's going to be awesome." (BTW, I have no doubt the final release will be awesome). Umm... refactoring? Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
If your project focus or goals have changed, fine, but let the client (the community) know about it. Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD).
How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
Please don't take my comments as abusive or negative. I understand this was a learning process, and I want to make sure that everyone gets the most out of it. Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
Again, thanks for all your hard work. I look forward to seeing more high-quality content in the future.
PS: The comment "We're not all evil here." Does that mean that some of you ARE evil? :)
terms of the beta for SubSonic - there are a couple of outstanding issues
that I need to resolve, primarily when working with two projected types in a
query and I also want to make the templates 100% easier.
I want to know how it ended up, but I suspect that it is one of the things that have not been finished completly yet and is still being refactored / tweaked ?
I have just started a new project, and as i am not the most experienced developer i want to wait for the release of the source and base my new application upon it. I have been waiting for it the last couple of weeks, expecting it to be released at anytime - but unfortunatly now have to wait 4 weeks more.
Rob: Please dont confuse it with me being mad at you - because i am not - it just feels like a bomb being dropped when you are as excited as you can get. Like a kid being promised to go to Disney World and then 10 minutes after you are expected to leave you are being told you have to wait until next year (thats how it feels) :)
Speaking of Subsonic 3, are you using it in any of your current projects? I'm anxious for a beta release!!
Thanks Rob, I'm a big fan of your project and can't wait for the source code release.
Your Mix session attendees are gonna throw their undies at you.
recorded and I"ll follow up with some defensive posts i"msure :)
Thanks again!
I only brought up Ayende because he's had some more to say about it since he was on one of the episodes.
Thanks
Tobi
don't do what you want me to do and Boom, I'm an a**hole and Microsoft
sucks. If you think this process was all "pull" - all I can tell you is you
are dead wrong.
"It's ready when it's ready"
When you get popular politics starts.
Rob -> you go dude! Rip it home and save all the blog posts until _AFTER_ MIX .. so when the dust settles we can then pick it apart adnausum and love it, like a child.
I so hope this project will revolutionise the way a lot of us mid range developers work .. because as much as we think we're pro, u just gotta listen to Ayende, etc and u feel dumb (with all due respect).
Finally - for suggested blog posts (i so hope we get more after MIX discussing the various technologies and reasons) .. I drolled at your AsQuerable stuff .. and u teased us with some Unit Of Work magic ... so can u please elaborate on this stuff, with respect to Repository Pattern.
Unless I completely missed something, in which case I'll just rewatch the video! Thanks!
Ayende, for what it's worth (and Steve Harman) are the guys that came up
with the foundation of this idea :).
has 3 sessions - one with me, one with Phil, and one with Hanselman. I think
MVC is also involved with another one but I'm not too sure yet.
- what did I leave out?
Probably somebody who promised a client a new store front app and was going to use your code and charge them for it while taking out any reference to you and or MS so they could say it was written from scratch. Now that you are behind in what you promised they are in a jam as well. Dirty, filthy apes...
Yeah probably unlikely, but it makes for a good story...
Take as much time as you need Rob and get it done right, we all know that quality code does not happen overnight.
And to quote Hedonismbot, "I will would consider it a smashing success if it kepts me entertained through the overture."
offtopic
half of MIX was "plagued" with Silverlight...
I'm not in war with Silverlight (battling with Flash really badly though ;-) but somehow I got feeling it is a MS marketing meeting not a web dev conference...
Why do I think this would be a good idea? Because, this could be a very good pattern to use by shops that don't want to go full ORM. However, I feel that it needs some critical review before it can gain acceptance.
I'm looking forward to seeing this finished, I know you have put a lot of hard work into it.
Any chance you could write a post about your repository pattern and how you used custom business objects as well as LINQ to SQL?
Looking forward to seeing this live at Mix!
anyway will it still under the Microsoft Public License ?
It's painful that we have to wait 45 days, given that we want to start yesterday. But if you really are putting the spit-polish on it like you say, I can only imagine the difference 45 days will make.
Please see if you can give us faithful readers of your blog a peek earlier than MIX!!
I sure hope It'll be the MVC application that really rocks. And I also hope that it'll be easy to get running and extend with all sorts of things, internalization, plug-ins...
Ohh, and it'll still be very, very open source, right?
Thank You, it was a great fun following the development of the whole thing.
so have this in mind when you are wasting your time with sleep and such ;p
Don't people know that if they want it now they can actually write the rest themselves. ohhh wait a second. Lets just wait for someone else. I can't do anything.....haha.
Keep up the good work! and don't listen to anyones Sh!t
Charlie
so have this in mind when you are wasting your time with sleep and such ;p
I sure hope It'll be the MVC application that really rocks. And I also hope that it'll be easy to get running and extend with all sorts of things, internalization, plug-ins...
Ohh, and it'll still be very, very open source, right?
Thank You, it was a great fun following the development of the whole thing.
It's painful that we have to wait 45 days, given that we want to start yesterday. But if you really are putting the spit-polish on it like you say, I can only imagine the difference 45 days will make.
Please see if you can give us faithful readers of your blog a peek earlier than MIX!!
anyway will it still under the Microsoft Public License ?
I'm looking forward to seeing this finished, I know you have put a lot of hard work into it.
Any chance you could write a post about your repository pattern and how you used custom business objects as well as LINQ to SQL?
Looking forward to seeing this live at Mix!
Why do I think this would be a good idea? Because, this could be a very good pattern to use by shops that don't want to go full ORM. However, I feel that it needs some critical review before it can gain acceptance.
Ayende, for what it's worth (and Steve Harman) are the guys that came up
with the foundation of this idea :).
I only brought up Ayende because he's had some more to say about it since he was on one of the episodes.
- what did I leave out?
Unless I completely missed something, in which case I'll just rewatch the video! Thanks!
I want to know how it ended up, but I suspect that it is one of the things that have not been finished completly yet and is still being refactored / tweaked ?
I have just started a new project, and as i am not the most experienced developer i want to wait for the release of the source and base my new application upon it. I have been waiting for it the last couple of weeks, expecting it to be released at anytime - but unfortunatly now have to wait 4 weeks more.
Rob: Please dont confuse it with me being mad at you - because i am not - it just feels like a bomb being dropped when you are as excited as you can get. Like a kid being promised to go to Disney World and then 10 minutes after you are expected to leave you are being told you have to wait until next year (thats how it feels) :)
offtopic
half of MIX was "plagued" with Silverlight...
I'm not in war with Silverlight (battling with Flash really badly though ;-) but somehow I got feeling it is a MS marketing meeting not a web dev conference...
has 3 sessions - one with me, one with Phil, and one with Hanselman. I think
MVC is also involved with another one but I'm not too sure yet.
Probably somebody who promised a client a new store front app and was going to use your code and charge them for it while taking out any reference to you and or MS so they could say it was written from scratch. Now that you are behind in what you promised they are in a jam as well. Dirty, filthy apes...
Yeah probably unlikely, but it makes for a good story...
Take as much time as you need Rob and get it done right, we all know that quality code does not happen overnight.
And to quote Hedonismbot, "I will would consider it a smashing success if it kepts me entertained through the overture."
Rob -> you go dude! Rip it home and save all the blog posts until _AFTER_ MIX .. so when the dust settles we can then pick it apart adnausum and love it, like a child.
I so hope this project will revolutionise the way a lot of us mid range developers work .. because as much as we think we're pro, u just gotta listen to Ayende, etc and u feel dumb (with all due respect).
Finally - for suggested blog posts (i so hope we get more after MIX discussing the various technologies and reasons) .. I drolled at your AsQuerable stuff .. and u teased us with some Unit Of Work magic ... so can u please elaborate on this stuff, with respect to Repository Pattern.
don't do what you want me to do and Boom, I'm an a**hole and Microsoft
sucks. If you think this process was all "pull" - all I can tell you is you
are dead wrong.
Your Mix session attendees are gonna throw their undies at you.
Greatness takes time ;)
Keep up the fantastic work Rob... it's very much appreciated :)
"It's ready when it's ready"
When you get popular politics starts.
Some people will always bitch and moan in the meantime, but at the end of the day, the end product will be better for it. Happened with WoW and look at it now, license to print money.
Thanks
Tobi
Thanks again!
recorded and I"ll follow up with some defensive posts i"msure :)
Thanks Rob, I'm a big fan of your project and can't wait for the source code release.
Speaking of Subsonic 3, are you using it in any of your current projects? I'm anxious for a beta release!!
terms of the beta for SubSonic - there are a couple of outstanding issues
that I need to resolve, primarily when working with two projected types in a
query and I also want to make the templates 100% easier.
How hard would it be to just create a designer like the Linq2Sql classes use currently?
That would be really cool.
In part 5 of the series you introduced the idea of the "client" which you defined to be "you [the community], some big-whigs at Microsoft, and me [Rob Conery]." While I'm sure your intention was to keep the audience interested and involved, this definition placed the community in a cooperative decision-making position (which I fear was never truly the case).
According to the roles of the project (as defined by you [Rob Conery]), the community is the client (or at least part of the client). Like most clients, we want to know what's going on. I don't know of any "clients" out there that would settle for the explanation you've given, which is more or less "I'm currently refactoring the code, but don't worry, it will be done in 4 weeks and it's going to be awesome." (BTW, I have no doubt the final release will be awesome). Umm... refactoring? Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
If your project focus or goals have changed, fine, but let the client (the community) know about it. Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD).
How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
Please don't take my comments as abusive or negative. I understand this was a learning process, and I want to make sure that everyone gets the most out of it. Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
Again, thanks for all your hard work. I look forward to seeing more high-quality content in the future.
PS: The comment "We’re not all evil here." Does that mean that some of you ARE evil? :)
I think I've been asking for your feedback, not really your consent. At some point *I* have to be responsible for what I've made - therefore *I* make the final decision :).
>>> I don't know of any "clients" out there that would settle for the explanation you've given
Probably not. In this case there's not much else I can do here. Feel free to fire me :p.
>>>Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
Are you hammering me? It sounds like it...
>>>Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD)
26 Screencasts +4 blog posts. The most public and transparent thing Microsoft has ever done, and you're lecturing me about communication? Really?
>>>How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
Wow. Not sure I've had a worse comment than that on my blog. As I mention - feel free to fire me and move on.
>>>Please don't take my comments as abusive or negative
Sure, why not. I love lectures.
>>> Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
Sure - with comments like this you can see why it's so motivating.
I have no idea if people actually work for you, but I feel sorry for them.
If you weren't getting "angry," feedback or any at all I'd be worried but the fact that people are taking this much time to write up a comment on one of your posts show much people really care about this project.
Just try to take it in stride, there's no perfect happy area (as we've seen with Oxite LOLOLLOLOL).
Be happy with what you've accomplished and just remember that these types of comments come out of good, not bad. We're all cheering for you on this one and just want to see the fruits of your labor.
-----------------
>>> >>> this definition placed the community in a cooperative decision-making position (which I fear was never truly the case)
>>> I think I've been asking for your feedback, not really your consent. At some point *I* have to be responsible for what I've made - therefore *I* make the final decision :).
You appointed the community to be the client, right?
-----------------
>>> >>> I don't know of any "clients" out there that would settle for the explanation you've given
>>> Probably not. In this case there's not much else I can do here. Feel free to fire me :p.
Learn from the experience? Wasn't that the original goal?
-----------------
>>> >>>Didn't you say the code would be finished 4 weeks ago? As a client, all I hear is you need 4 more weeks before I have the code I was promised 4 weeks ago.
>>> Are you hammering me? It sounds like it...
This was intended to convey a sample dialog with the "client", not me hammering you personally. Apologies if you read it that way.
-----------------
>>> >>>Communication is paramount for any development process, especially the ones you claim to be following (i.e. TDD and DDD)
>>> 26 Screencasts +4 blog posts. The most public and transparent thing Microsoft has ever done, and you're lecturing me about communication? Really?
I believe I said something about the series being WONDERFUL! The communication breakdown I was referring to was everything that happened after the last episode.
-----------------
>>> >>>How would you handle this situation if the community were an actual client? Hopefully not as you've done, because I know it would probably be the last time you would work for me.
>>> Wow. Not sure I've had a worse comment than that on my blog. As I mention - feel free to fire me and move on.
Again, this wasn't intended to be a personal attack. Everyone is learning from this experience, right? Dealing with these situations is part of what we're learning (hopefully). Not taking feedback as a personal attack is also something we should learn. :)
-----------------
>>>Please don't take my comments as abusive or negative
Sure, why not. I love lectures.
Me too!
-----------------
>>> >>> Besides, I'm hoping you (or someone else at Microsoft) will continue to provide for the community as you've done with this series.
>>> Sure - with comments like this you can see why it's so motivating.
I'm a programmer, not an author or a poet. My inter-personal relationship skills may be lacking, but
that wasn't the focus of the course, was it? Wait, this isn't the hostile takeover skills workshop
? Damn, I must be in the wrong forum again. :)
-----------------
>>> I have no idea if people actually work for you, but I feel sorry for them.
Yes, I feel sorry for myself sometimes too. Thanks for your support!
For me, Rob’s built up a lot of credibility, genie wishes, date my sister type of gratitude stuff with regards to this series. I got way more from him then he got from me (can’t divide by zero).
I hope the capable others, who are in a position to produce this kind of material, see an overall positive outpouring of sentiment from the community.
Don't people know that if they want it now they can actually write the rest themselves. ohhh wait a second. Lets just wait for someone else. I can't do anything.....haha.
Keep up the good work! and don't listen to anyones Sh!t
Everyone has been saying really nice stuff about this project, so I'm just going to state something. It's still NOT finished.
You know how i feel about your stuff.. I think you're great, everything you've done has been an inspiration.
I don't know if you've achieved what you set out to achieve by what was the main goal of the MVC Store Front.
To sell stuff
1. Can i sell stuff?
2. Is the end client going to be happy?
at the end of the day my client doesn't care about DDD or all these man design patterns. He/She just wants to make the big $$$$$$$'s.
I have a friend who is still using ASP, yes classic stuff. He's clients love him, I'm thinking to myself he's a B Grade developer, however he knows how to finish.
being a good developer is %30 Skill Set %70 Delivering on time with no bugs.
That's my opinon
Your reply to my comment doesn't make sense.. I agree with you 100%.. but at the end of the day a client isn't going to pay you for a half done system.
all the client wants is to make money that's why someone goes into business.. what Rob has done is show the world different ideas and my favourite Store Front vid would have to be the one with the Birthing Process..
bottom line is unfinished product === failure!!
sometimes you have to suck up a few poorly writen lines of code just to finish the project
your client find you with your pants down - WRITE TESTS.
Tests don't take that long - I did 30 of them in 40 minutes. No excuses...
test your stuff. "Git er done" isn't what pro's do - they get it done and do
it right :). And I'm not saying you're not a pro - not at all. "Done" just
has to include testing is all...
Congratulations! Great webcast!!!!!
Thanks a bunch for all your work on this project, it's incredibly useful to me.
Anyways, I'm posting looking for a suggestion. I'm building an application using the model you've presented here (with some tweaks). It's a different sort of app, so I'm hoping this all works out for it, and I'll certainly let you know of any challenges I run into (especially my solutions to those challenges).
So, my app involves an MVC web application, which will be hosting a Silverlight app. I've built out repositories, and services just like you've presented here. Currently, I'm presenting the data to Silverlight through a WCF service hosted in my Web application (under Services/Private, we'll have a public API later). But, my WCF service is essentially the same as my normal data service that I've built in the services library, except that it is in a .svc file (with a .svc.cs codebehind), and all of the methods have [DataContract] on top of them. The WCF service simply calls the underlying services layer's methods, so it's a pretty simple solution. However, I'm wondering if it might make sense to turn the services (for example, CatalogService in your app) into a WCF service, having the web application just call the class library directly through code, so that one service is available both straight through the compiled assembly, and exposed on the web site as well, as a WCF service. The upshot is that I don't have to manage changes at two different levels, and I reduce redundant code. However, there must be a downside!
I've tested that this, does, in fact work, but I'm wondering if there are any undesirable implications of doing it this way that I haven't noticed. Any ideas?
Thanks again for doing this project and seeing it through to its completion. I have an eCommerce site that I volunteered to do for a friend and I think your solution may be idea.
She has a PHP/MySQL site now, but is refocusing her company to deliver services to at-risk people and also sell a sub-set of the products she used to sell. It needs to intergrate with a results-based management and tracking system for case management that I'm developing for her using the MS Entity Framework.
She needs to have regular web pages as well as catalog and I think your system will allow her to do this.
Lastly, it would be useful to have some sort of purchase order or "other" payment method where a code (or PO Number) could be entered.
Thanks again! I can't wait to see the results of all of your work. I have learned a lot from you!
Bill
Bringing the Agile and TDD into traditional boiler plate app. Making it possible to actually trash long overdue and smelly code that managers of small businesses cling to. "It works fine..... it's just this little thing which I'm sure will be no effort at all after you've heard my motivational speech..... even though the guy who originally wrote it sold it at a discount with the clause of never being contacted for any form of support...."
This will save me a lot of headache.
I am very much impressed and inspired with your work .. basically i am a java developer .. but due to some project work it happend to see your blog and started the work in ASP.net .. and i am continuing it happily .. I feel that i should continue to work in asp/c# for further works ..
Expecting lot more from you soon .. especially DDD
think you'll like it :)
Source code will be on codeplex?
It's the weekend here in Australia .. so have you finished your demo @ MIX09? Any news on how it went? any code / session vid available?
(just trying to get these q's in quick before u go on a long. most desereved, vacation with the family, which i'm guessing cause most of the other boys (scott, phil, etc) sound like they are :) )
PS. Pre-orded the book, out of resepect and interest.
"Trying to load demo bits to Codeplex... and it's down. Yay!"
"Trying to load demo bits to Codeplex... and it's down. Yay!"
Patience is a virtue :)
Thanks so much for the good stuff, Rob
I've been pleased to see the NerdDinner and Contact Management samples come to some consensus on Repositories, Services, Validation, LINQ and the like. And had thought MvcStorefront was going in a similar direction.
Has some "strategic" decision been made to realign the Storefront sample? The source really confuses me, so I suppose I'll have to be patient and wait for Rob's blog posts.
[1] using Microsoft namespace opens up "approved application" can of worms like with Oxite?
[2] what no LinqToSql sample repositories? No IQueryable for filtering and to play nice with ADO.NET Data Service and .NET RIA Services?
[3] using T4 for database generation, object store, themes, widget and module features seem to be going off on a tangent from a simple ecommerce reference app?
Did Rob write this or the other Commerce Starter Kit guys?!
https://content.visitmix.com/2009/sessions/defa...
Moved off linq to SQL to broaden DB support.
The tangent is CMS stuff - watch the presentation :)
But .NET development is getting very compelling already, in particular with elements of code generation and better tooling. And cleaner XHTML in Webforms 4.0 and MVC.
On the specifics of the Plugin work, how would the App_Code dynamically compiled Plugin approach work with Windows Azure style deployment? Where pre-packaged applications have to be deployed, without FTP or normal file access?
And back thinking about the Framework stuff that's coming out... though running the risk of trying to fit in a more complex framework piece of tech in the small app... how would it eventually play nice with MEF?
On the CMS stuff, I'd be keen for a simple Personalisation/Content Targetting architecture. As adding Widgets/Modules to every page individually gets unmanageable. It would be nice to target these by user or site area or product category with the beginnings of a little rules engine, which cuts out the need for some of the drag-drop interface customisation. Though I realise that's the route many open source products go, in their Admin areas.
It's hard to implement a "backbone" while making sure you still pay the most
attention to the commerce stuff.
I recognize this, because I often have the exact same problem of getting sucked into the rabbit hole of the continually improving design. But at some point a deadline pops up and I just have to get it done.
You said very early on that you considered the community to be your customer. I have to say that if I were truly your customer, I think I'd have fired you after the third architecture change because I'd have been like "I paid this guy to write software, not experiment". Or worse, I'd think you just didn't know what the hell you were doing if you have to change your whole strategy every few weeks.
Anyway, just to be clear, I have enjoyed reading the series and will continue reading it. It does give a good intro to some patterns and tools I didn't even know existed. But, if your plan is to have a finished e-commerce starter kit, at this rate it's never going to get done! Hard to hit a moving target, you know?
part 26 - it was tight and I liked exactly where it was. I would have kept
going with what I had if I was working in a company setting and tightened it
down, etc.
The difference with what you see is that we're making the app a community
app now - which to me is an entirely different focus. If you watch the MIX
presentation, we have a very clear goal - which is completely different then
most "enterprise" apps have: the ability to quickly change/theme/tweak.
I do appreciate your feedback (it's the 3rd time I've been fired!) - the
main thing I'd like to remind you is that I'm not working as your consultant
:) - I'm more or less trying to "educate" from a position of putting myself
on the firing line :):). Bit of a difference - if *you* were my client, I
wouldn't be doing this.
Anyway - I have a series of posts explaining this in the cue - first up
today.
clear. My point was simply that if I did work for you, I wouldn't be
bouncing all over the place :). I sort of have to when doing things like
this because people have a LOT of questions so I want to cover everything...
Anyway - I've stayed true to TDD/DDD, even up until now. The only major
thing I've shifted is that the biz logic is in plugins :).
Either way - I'm workin up the webcast now...
Can you give us more information on when you will have this completed?
Thanks for an engaging and thought provoking series.
________________________________
compliment for the storefront project.
I have a question about the concept of aggregate defined in DDD.
"An Aggregate is a cluster of associated objects that are treated as a unit for the purpose of data changes"
For this purpose in storefront you have created the IAggregateRoot interface used to mark an entity as an
aggregate root, and you set Customer and Product entities as aggregates:
- customer contains shopping cart entity,
- product has related products, cross sells and recommended entities.
First question:
the definition of the aggregate says that "associated objects are treated as a unit for the purpose of data changes",
does it mean that if I save the customer I save also the shopping cart?
If so the SimpleCustomerRepository doesn't consider customer and shopping cart as a unit, it has
Save and SaveCart methods respectively for customer and shopping cart entities.
Second question:
an aggregate could be also the order entity, is it right?
Rob can you publish a roadmap about storefront evolution?
I'm interested to the implementation of an Entity Framework repository :))
I like very much the first version of storefront with the use of IQueryable extensions
How about Rob comes to your organisation, works for 6 month 24 hours a day for free and then allows you to claim the work as yours? Would that please you? Give the guys a break, your an embarassment to yourselves.
Got your MIX09 video and the new AdventureWorks source code. Thanks for all the hard work.
"Simplicity is compelling" keep it going...I really hate YAGNI.