What would you have us build?


OK, I am about to take a community leap of faith. There’s been several discussions going on on the web about p&p, specifically about CAB and SCSF. Without going into details, one the key arguments around our deliverables is that they are too complex and too heavy. A further argument is that we build these products with our heads in the clouds and are not really connected with customer needs. Without either defending or denying, let me ask you quite simply. What would you have us build? The time is ripe for the client team to ask this question as we are about to begin development of our Web Client Software Factory.

This is not the first time I’ve posted on this, though in my past list I gave a set of starter items. I think this sent the message that suggestions needed to be confined to that list, they didn’t. So let’s forget the starter items and pretend the slate is wiped clean. Your task is to come up with a solution to help developers build enterprise web applications on top of ASP.NET. You’ve got a team of about 10 devs and testers for a period of 4 months.

What would the next release look like to you? This can include something as radical as throwing out the Web Software Factory altogether starting from scratch (though I am not suggesting this 🙂 ), or maybe it’s suggestions of additional scenarios we should support within the factory that we don’t currently. Perhaps you think we need to change what we are doing and do it in a different way. The main thing I am interested in are what are your pain points, and how can we help you address them. Scenarios here is key, not technical details and you can be as free-form as you would like.


Share this post : del.icio.us it! digg it! live it!

Comments (17)

  1. Mike says:

    Nobody mentioned how well P&P documents and provides samples, but they guys making these claims need better documentation to ease the trail-and-error pain that comes from some of their libraries.

    On the VAB, it is designed to solve a problem that in my opinion should have never existed in the first place. What good is a business object without validation? What good is an input control without validation?

    Why do we have so many ways to databind asp.net, winforms, wpf? What good is an input control without databinding? Why wasn’t consistant databinding there from the start.

    Every time I see a "string" referencing a class, property, etc. passed in an attribute, event or method call, I get a sick feeling in my stomach, trouble ahead… This should be part of the compiler, I have brought this up with the dotnet team and I am not sure they see the value. I personally feel alot of pain just trying to write code that breaks at compile time instead of runtime.

    The point I am making here goes beyond your question and I see this in so many libraries, not all but some, trying to fill gaps for things that should be part of dotnet.

    .NET is a fantastic framework, but things are not there that should be there.

    1) In your quest for creating tools that solve real-world problems, keep asking yourself should this be part of dotnet, and what is missing in dotnet that would make this tool better. And it’s a good time to do this with 3.5 comming out, please lean on the dotnet team.

    2) Create a database that has every type of simple and complex relationship that a real world app would have and start working against that and use it with your samples. Sorry Northwind soesnt cut it.

    3) Buid the following apps against this database, ASP.NET, Winforms, WPF, WCF Service, ASMX Service, Silverlight. Use your libraries and and also ask is this to complex and should this be part of dotnet.

    4) Lean on the DSL Tools team, great concept, but way to hard to create.

    I am 100% behind the P&P efforts, and understand the reason you exist.

    You have great documentation and samples.

    You are raising awareness and exposing developers to more complex patterns.

    These are all good things, keep up the good work.

  2. David Hayden says:

    Here are my initial thoughts on the WCSF.

    I think the key is to get the CORE done right. There are two pieces that I see as the CORE:

    Dependency Injection

    UI Model

    I am not overly fond of either of the solutions used right now. I think radically improving these solutions will make a big difference.

    Dependency Injection – Let’s be honest, real honest. ObjectBuilder doesn’t seem to be getting it done. The P&P Team is spending all this time making containers that do dependency injection and I believe they are having to fight and work around limitations of ObjectBuilder. I don’t know what the answer is here. I don’t know if it is to allow me to plug in my own dependency injection tool; improve ObjectBuilder; and/or create a more streamlined, lighter-weight dependency-injection application block that can compete with tools like Windsor, StructureMap, Spring.NET, etc. Whatever it is, the key to performance, extensibility, etc. is the dependency injection tool which is the heart and soul of the WCSF.

    UI Model – View-Presenter works, but it feels like a bandaid. I end up having to pass all events up from my view to the presenter and to an application controller or service. Let me say that it has really opened my eyes to good development practices, but I think what we really need is an MVC Framework like in Rails, MonoRail, etc. I don’t want the View to be in charge of propogating actions. It has taken me awhile to understand the value of MVC, but now that I do, I wonder why in the hell WebForms does what it does? Certainly, keep your View-Presenter Pattern as an option, but can we get an alternative like MVC? I mentioned before about talking to Scott Guthrie about his prototype. I don’t know what impact this will have on the richness of the UI, but MVC should be seriously investigated.

    I think those two pieces are mission critical and deserve top priority because they are at the center of the WCSF.

    From there, I would just like to focus on some of the more monotonous tasks in web development:

    DataBinding – Give me some seriously cool labor saving UI DataBinding Features.

    Validation – Use of EntLib 3.1 VAB with PropertyProxyControl that doesn’t require PostBack.

    Security – More automation around this and finer control over role based privileges, etc.

    Database-Driven Features – A sensible combination of UI and Backend Help.

    AJAX – Don’t go crazy. Give me biggest bang for my buck.

    Page Flows – Make this easier and handle more complex scenarios.

    Policy Injection Application Block – Would love the Integration. A lighter weight injection mechanism is necessary.

    I put the Policy Injection Application Block at the end, because I think the current injection mechanism is a bit heavy. In Ent Lib 3.1, we now have an extension point to replace the injection mechanism. If we could get a more performant and lighter-weight injection mechanism to replace the Remoting Proxy one, this could be a super cool feature.

    Regards,

    Dave

  3. I think Microsoft’s p&p is doing a great Job. There’s a lot of space for improvement, but that doesn’t make it bad.

    Glenn, have you looked at http://www.codeplex.com/websf/WorkItem/AdvancedList.aspx ? Shouldn’t this be the privileged way to submit feature requests?

    I have submitted one in the past that I think is very important Allow Hierarchical Module Composition (http://www.codeplex.com/websf/WorkItem/View.aspx?WorkItemId=6603).

    Another example of this would be a site with a public area, a registered customers area and a employees area. If each area had a products sub-area, this could easily be the same module but with different behavior depending on the area.

    Suppose the site layout was something like this:

    /site/public

    /site/public/products

    /site/customers

    /site/customers/products

    /site/employees

    /site/employees/products

    Suppose that the products module uses a IGetProducts service. Depending on where the products module is installed, it would have a different implementation of the service. Pretty much what you can do with CAB (when you have a WorkItem hierarchy, not with CAB modules – yet, I hope).

    What I feel is missing is a better development and deployment module. It should be easier to build modules and deploy them on site without having to build and deploy and entire site (unless I’m missing something).

    On top of this and what Mike and David said, I would like to see a real session solution for a web application. The ASP.NET session state is more like a server side view state than a real session state. ASP.NET also lacks of real authentication support. Logging in an application sometimes implies more than verifying if the user is in some database (like the MembershipProvider). Sometimes it involves logging into a backend server (or servers) and establishing a session that is more the just the use of a username. Sometimes these backends are also profile and role providers. You can “easily” build it on top of FormsAuthentication, but it should be in WCSF to make it really Enterprise-able.

  4. gblock says:

    Hi Paolo, thanks for the acknowledgement of our efforts.

    Yes, I am very familiar with the workitems posted on that site. I better be being that it’s part of my job 🙂

    The workitem voting plays a big part in our decision making process. For example AJAX support is one of the top items people have voted on, and this is something that we are driving into the release.  As to the hierarchical module composition, we delibarately have not gone to this level in WCSF in order to avoid being over complex (as we have been ‘accused’ of in CAB 😉 ). Also looking at the number of votes, there are many other items that the community sees as a higher priority.

    As to posting vs workitems, my goal for this post though was to get feedback on the general bigger picture of what we “should be building” and what we “shouldn’t” . This is a bigger discussion than individual features. Also, it was to let people know that we are more than willing and eager to change what we are doing if it’s not working for you.

    We try to collect information from as many datapoints as possible to play into the decision making process, this includes TFS Workitems, blog feedback, emails, direct customer feedback, surveys etc. This gives us a more holistic point of view.

  5. Thank you for your clarification, Glenn. I’m glad you are covering all the basis.

    I wonder if this is something to consider for performance improvements:

    http://blogs.msdn.com/vancem/archive/2006/10/01/779503.aspx

  6. Glenn is opening up some discussion about what we should build in the next release of WCSF . We have

  7. Khuzema says:

    most of requirement is as mentioned by David Hayden.

    thanks for good work.

    Khuzema/Kuwait

  8. BennyXNO says:

    I dont like the authorization modell.

    Why is it in the web.config? Its hard to make changes here. Give med database-option here so its easier to customize. Im into a site with more then 200 pages. And if i should do every authorization rule in the web-config i wouldnt come long. I also have 10 or more roles.

    Who has only Administrator and Customer role? Give us an better way to do this. In a realtime big system, u have to give a larger range.

  9. BennyXNO says:

    And I 2 am a big fan of Dave, he has some good thoughts.

    So listen to him.

  10. So over the past week, I’ve been following a bit of a stirring the blogosphere over the deliverables

  11. Tim says:

    I’d settle for some good documentation with whatever you put out. So when I run the SCSF guidance project, and get a slew of project automagically generated for me, I could refer to a handy CHM that explains what each project and class does. Don’t get me wrong, a lot of the classes do in fact have a comment at the top, that is oftentimes helpful. However, The methods and such in the classes are usually missing comments. An all-encompassing guide would go a long way to helping us out.

  12. I would like short 10 minute step by step videos which show how to use these tools. I have seen the documentation and videos on the overview of why to use them but jumping in with Visual Studio is not intuitive, especially in earlier releases which had bugs which blocked my progress. Either videos or screenshots with a step by step tutorial would be helpful.

    These videos would help me get my team on board so we can adopt the tools coming out of the P&P team.

  13. Corey says:

    I personally would like better support for user controls / control containers. Much like the SCSF ability to load parts dynamically. Not that it can’t be accomplished as is, but making this easier would be much appreciated. I would also like better hooks for the menu display at runtime. Either toggle visibility or changing the text value. Once again, not impossible but could be much more elegant. IMHO there is plenty of documentation and community feedback available (and David’s webcasts), so I personally would rather see time spent elsewhere.

    Although there is room for improvement. Our development team finally feels like each piece of code has a place and that moving to WCSF has been great. Not to mention that is the similarities to SCSF make it easy for our developers to jump between web and windows development.

  14. gblock says:

    Thanks Corey

    We are looking into this. Can you describe a few specific application scenarios of how you would use this, i.e. creating an order entry screen, etc.

  15. Ray Zhang says:

    Wish WCSF project will grow better and better.

    Wish Glenn and all of the WCSF team have a greatful new year holiday!

  16. Shell Smith says:

    I love that you have taken our comments to improve. Thank you for being an example of what all companies should be doing – getting feedback.  I was just introduced to this <a href="http://www.deliverandmeasure.com/&quot; title="book">book</a> that talks about feedback and customer service – and I just wanted to thank you for doing this.  Good luck with all the changes – and future programs.

  17. Carrie T says:

    Thanks for the info on the book Shell.  I have been reading it and would also recommend it to others.