OK, so here are the main points I am hearing..... Do. 1. Guidance on core concepts and principles like OOP, separation of concerns, layering, etc 2.Message 1 of 92 , Oct 27, 2007View Source
OK, so here are the main points I am hearing…..
1. Guidance on core concepts and principles like OOP, separation of concerns, layering, etc
2. Guidance on good software engineering and design practices, code quality, TDD, DDD, BDD, code smells, CI
3. Patterns / Anti-patterns – GOF / Fowler, etc (Don’t make up new ones)
4. Tutorials / examples
5. Be Neutral / Pragmatic
a. Trusted advisor on different tools, techniques and methods i.e. Stored Procs vs Dynamic SQL
b. Existing OS solutions (NHibernate, Log4Net, etc)
6. Be Critical including of community efforts
7. Advocate community endeavors
8. Engage with the OSS community
1. Focus on toolkits and factories
2. Become an evangelism org / marketing machine for the platform
3. Be Dogmatic (our way is the only way, or even the best way)
4. Dumb down developers
A few comments.
a. All of our deliverables have community sites on Codeplex. Each site has WorkItem voting where the community votes on what features / guidance we should deliver. We take these into heavy consideration as well as other sources like direct customer engagements, etc. For example one of the reasons we focused more on UI responsiveness with AJAX in this current WCSF release is due to AJAX being the highest voted item.
b. We are (and will continue) working to engage more with the community. The new contrib projects (SCSFContrib, WCSFContrib, EntlibContrib and recently the Repository factory) are efforts that we’ve worked with the community to establish. These are purely owned by the community not by us.
c. We have advisory boards for all of our guidance deliverables. Oren knows, he was on the Web Client advisory board for a short stint. We’d welcome any folks on this group that would like to be involved in future efforts.
d. Jeremy mentioned (and I will be posting on my blog) that we are looking to co-design new Composite Client Guidance with community.
2. Guidance on core concepts,etc, patterns, etc.
a. Part of the challenge here is that much of this work has already been done. Is there value in us duplicating these efforts? patterns & practices focus has primarily been on individuals that already know and practice many of these concepts (at least we think they do). What can we say about this that other thought leaders have not already said. I believe PatternShare was an attempt to point to existing literature however it didn’t have much uptake which is I believe why it died.
We do incorporate many of these principles within our deliverables. For example in the Composite Web Client Application Block documentation you will find the blurb below on how it helps with Separation-of-Concerns. In this case we are discussing how CWAB implements this rather than on the principle itself. Actually you can find this concept throughout many of our deliverables. PIAB for example is all about Separation of concerns.
Separation of Concerns
Developers can use the Composite Web Application Block to develop Web applications composed of independent, but collaborating, modules. Productivity increases because each developer (or team) is able to concentrate on a specific task. For example, developers of service components work with only the business logic in the component; they do not have to be concerned with background issues, such as security or the appearance and behavior of the application.
Applications built with the Composite Web Application Block have a design that delineates the difference between writing common UI elements, such as menu items or toolbars, infrastructure components, such as logging, exception handling, authentication, or authorization (built only once per application or re-used from other applications), and business logic, such as the user interfaces, logic, entities, and service agents of the specific application. This means that the application architecture supports developers and teams that have different concerns during the creation of an application. Figure 1 illustrates an example of a Web application built using the Composite Web Application Block that supports concerns of different teams and individuals with different expertise within a team.
Part of how we ended up where we are has to do with the fact that this is where customers asked us to go. Here’s a quick history lesson. Back about 5 years ago we had no reusable anything and there was a thing called the App Architecture Guide that illustrated a set of patterns and architectures. Customers said the patterns were great but they needed more, they needed implementations. This lead to the blocks. Then customers told us we need to be able to integrate the blocks together. And so we went toward libraries. Next they told us that the guidance we had was great for cross-cutting concerns, but didn’t help building real apps. So then we moved on to app specifics blocks like CAB and CWAB. Finally we heard it’s too hard to build, help us. So we ended up at factories. Now I wouldn’t argue that we may have moved a bit too far towards elegance and further away from pragmatic. At that time, .NET was still very young as a matter of fact I know at least a few people on this list were very supportive of those efforts.
b. A lot of the guiding principles you mentioned are actually within the factories themselves i.e. the code is part of the guidance. For example in WCSF / SCSF we include unit tests for all the guidance, mock objects for testability. Our hands on labs and quickstarts also discuss how to test a presenter, etc. Most of our factories / blogs implement a plugin model thus allowing extensibility.
It sounds like what we are saying here is we want you us to focus on the concepts / patterns pure and simple rather than on reusable libraries that implement those patterns. Is that right? Also it sounds like you would like us to be a definitive source on process guidance such as TDD, XP, Agile Dev, Scrum, etc.
3. Tutorials / Examples
a. This is one area where we’ve put in a lot of effort. Just open up any one of our client factories and you’ll find Quickstarts, and How-To’s Just recently we shipped a new Reference Implementation that is a Composite Web Client. In addition to being an illustration of using the Composite Web Application block, it also includes an implementation of the Repository pattern with a mock respository that does not require a database. We’ve also shipped WATN acceptance tests for WEB UI acceptance testing.
4. Focus on Toolkits / Factories
a. This something that we are actively work on now. Don Smith and I talk about this as “Getting back to the Guidance” (GTG) J and not focusing on the next reusable thing. Now in your minds does this include libraries that build on top of the platform?
For example we recently shipped a very small piece of guidance on what we called Contextual Autocomplete. Essentially the crux of the guidance is about how to get Autocomplete functionality into your apps. As part of the guidance we extended the Autocomplete extender included with AJAXControlToolkit to add the ability to pass additional control context. This extender is reusable, but we didn’t set out to build the extender. It fell out as part of our building our Order Entry Reference Implementation. Now it would be a huge stretch to call this a framework, I call it a simply library. 95% of the guidance in the Contextual Autocomplete is about using ASP.NET AJAX and the toolkit in a coherent way. There’s nothing really revolutionary inside, if anything its biggest value is in showing a practical use of the platform as well as talking about AJAX patterns. It would be great to know if you guys think this type of approach is heading in the right direction or not.
5. Neutrality / Pragmatism
a. I am all for this (as are many others in my team all the way to my PUM ). I can tell you guys that several times I’ve suggested to my management that I’d like to do some guidance for example on how to integrate with NHIbernate. We’ve also talked about for new guidance we are planning to look at how we could integrate with Windsor, etc. There is a fine line in what we can and cannot do (which I don’t think needs a lot of elaboration), but we’re certainly open.
OK….I am going to quit now because A. I am losing marital points J and B. This reply has been on my screen for like 5 hours as I went back and forth on what to say.
This is great feedback. If I look at the state of the .NET community today then it’s evolved tremendously. A lot of the concerns coming from this group seem to reflect that evolution. p&p needs to evolve as well, and we’re open to doing that. It’s one of the reasons I am here, aside from the other fact that I was a bit of an OS junkie prior to Microsoft. Now I don’t want to set false expectations since things don’t happen over night. The timing is good since we have been having a ton of p&p what’s next discussions these days. I look forward to us working together on making this a reality (and no that’s not m$ marketing speak). All I ask in return is that you your money where your mouth is.
Glenn, I think you've got you answer :)
Where do I sign?
On 10/27/07, Evan Hoff wrote:
** I would challenge you to find a single page on P&P (or any other part of MSDN) that mentions any OO principle **
I couldn't find any on google.
I don't have any problem with MS putting out frameworks, however, what ends up being construed from the frameworks that are written is that they are the "golden" Microsoft implementation (usually due to lack of knowledge).
Stored procedures are a good example. Probably everyone on this list has been in a shop where stored procedures were touted as the "Microsoft best practice". If you weren't using stored procedures for database access, it was the equivalent of trying to get the team to switch to perl (for instance). This plays heavily into the O/RM topic and even Microsoft got some blowback on this topic with the entity framework. Nearly everyone here knows the sproc myth is just dogmatic thinking. I would imagine that most of the 'softies would agree with us (I'm speculating).
How do you change this? More guidance in the patterns and practices (maybe a microsoft.com article explaining benefits/examples of pragmatic database access without stored procs).
Here's another huge pain in my side. Microsoft has created a set of tools which brings the barrier of entry down extremely low (not a bad thing in and of itself). In fact, they've even released the free hobbyist versions of Visual Studio to reduce the economic barrier. A side effect is that you are bringing many people who can just "wing it" in development, but who lack the knowledge/motivation/interest in learning the principles behind developing a clean code base (think OO). If I had to generalize, I would say it's mostly a knowledge issue. All the developers I have worked with (including the ones who just picked it up as a hobby and started "winging it"--including myself), wanted to be good developers, but aren't aware of that side of development. Basic principles are a huge gaping hole in the .NET community. I could probably find you a few dozen User Group leaders, RDs, etc who couldn't name a single development principle. I know a few who think Pattern is a four letter word.
It might be a valid point to say that educating the .NET community is not the job of Microsoft, but the problem is that the barrier of entry is so low (again, not a bad thing) that it's causing problems (and ultimately, an ALT.NET reaction). Microsoft has positioned itself as the end all for everything .NET (rightly so), but then it leaves this huge hole looming in it's community of developers.
In short, patterns and practices could fundamentally change the .NET community (in a HUGE way), by doing a blitz on Principles and Patterns (and don't make up your own)--more principles than anything at this point in time (that's where we are at Today).
In fact, if you look closely, you will find that ALT.NET is really a conglomeration of Principles, Patterns & Practices. Don't take this as offensive, but even the user stories floating around this mailing list are around building a type of CMS for aggregating P&P literature. It's because principles are a huge gaping hole in the community (along with newer development methodologies and practices), and they are completely missing from P&P.
It's just compounded by the fact that those of us that take the time to learn the principles/patterns get shut down by dogmatic thinking (see sprocs above). If P&P led a "principles" assault, it would make the .NET world a completely different community.
How about a "Development Principles" caravan that travels to the big conferences? A few screencasts on code quality? An article on what constitutes a good object? A presentation on object modeling at teched?
I could jump into the topic of Components from here, but I think I'll quit while I'm ahead. :-)
Of course, we know that principles are only a starting point. After you learn the principles, things like patterns start making sense. It would only be after a "principles" assault that the community could really start moving forward.
And you don't have to take my word for this, go to your local (non-redmond) user group and ask a handful of developers what principles they develop by. Many will give you a blank stare. Ask them what OO principles are, and they might mutter inheritance or polymorphism. They don't know that Liskov or Demeter fellow (or even what a Responsibility is).
Peek-a-boo FREE Tricks & Treats for You!
I have had a few more conversations on this. Pattern Share is actually not dead. It has been maintained internally by one of the founders Larry Brader. He andMessage 92 of 92 , Oct 31, 2007View Source
I have had a few more conversations on this. Pattern Share is actually not dead. It has been maintained internally by one of the founders Larry Brader. He and I are in talks about what might be possible. Currently we talking around putting the code / data on CodePlex and possibly leasing the domain name for usage by this group. There’s a bunch of legal issues around the content (patterns) that is within PatternShare that need to be worked through. Larry was pretty excited about the prospect, and said if we could do it there are a bunch of universities and such that might want to contribute as well. I’ll be off to Tech-Ed Europe and vacation for a few weeks, but will follow up on this when I return.
Most of us are MVPs, and I know OrcsWeb is giving hosting plans to us, so we can talk to them about hosting it – it would be nice to have the old domain as well.
OK, I am having a quick meeting on this tomorrow. Be ready…I have a feeling it’s coming real soon.
Can you find out if using the old domains would be possible? If the powers that be want to retain the domain names or transfer them, either would be great. Otherwise, we will have to find it a new domain name to call home.
-------- Original Message --------
> From: Glenn Block <gblock@...><email@example.com>
> Sent: Monday, October 29, 2007 5:46 PM
> To: "firstname.lastname@example.org"
> Subject: RE: [altnetconf] What happened to Pattern Share[mailto:email@example.com] On Behalf Of Evan Hoff
> Cool. I'll work on things on my end and get back to you.
> From: firstname.lastname@example.org
> Sent: Monday, October 29, 2007 3:43 PM(assuming we don't want to put it on one of the community domains).
> To: email@example.com
> Subject: RE: [altnetconf] What happened to Pattern Share
> I've got hosting covered. I'll offer up the $10 for the domain as well
> What does everyone else think?
> Evan Hoff
> -------- Original Message --------
> > From: Glenn Block <gblock@...<mailto:gblock%40microsoft.com>>
> > Sent: Monday, October 29, 2007 5:40 PM
> > To: "firstname.lastname@example.org<mailto:altnetconf%40yahoogroups.com>"
> > Subject: RE: [altnetconf] What happened to Pattern Shareit.
> > We'd get all the code from p&p and have to find a place to host
> >[mailto:email@example.com<mailto:altnetconf%40yahoogroups.com>] On Behalf Of Evan Hoff
> > Glenn
> > From: firstname.lastname@example.org<mailto:altnetconf%40yahoogroups.com>
> > Sent: Monday, October 29, 2007 3:26 PM<email@example.com<mailto:altnetconf%40yahoogroups.com><mailto:altnetconf%40yahoogroups.com>>
> > To: firstname.lastname@example.org<mailto:altnetconf%40yahoogroups.com>
> > Subject: re: [altnetconf] What happened to Pattern Share
> > I'm in. What would the next steps be?
> > Evan
> > Evan Hoff
> > evanhoff.com
> > -------- Original Message --------
> > > From: Glenn Block <gblock@...<mailto:gblock%40microsoft.com><mailto:gblock%40microsoft.com>>
> > > Sent: Monday, October 29, 2007 5:20 PM
> > > To: "email@example.com<mailto:altnetconf%40yahoogroups.com><mailto:altnetconf%40yahoogroups.com>"
> > > Subject: [altnetconf] What happened to Pattern ShareApparently we gave it including the full source to folks from the community (including one of the original GOF) who said they were going to drive it. Shortly thereafter it died. If folks here see that work as valuable, we can become the new inheritors. The ball's in our court.
> > >
> > > "Where did PatternShares go by the way?"
> > >
> > > I just had a discussion with my boss about Pattern Share.
> > >
> > > Glenn