We are currently drafting a document around 'Community Process' , that we intend to use for the Smart Client program. You'll see it coming up in the gotdotnet workspace for Smart Client soon. As I was writing it I imagined how the name by itself could convey some wrong messages. So what will this community process be about?
The community process will be about:
- Having more predictability of p&p. Have you ever wondered what we are working on? Have you wished we would have @#! told you we were about to release something? The http://www.microsoft.com/practices site does a good job of keeping you up to date on up-and-coming projects, but you can do little but guess what will be coming out. Being more predictable gives you a chance to plan with a p&p roadmap in mind.
- Improved traceability to requirements. Sometimes folks ask me why did you do this block this way? or that way? We try to capture a lot of the design rationale for blocks in the 'design' section of the docs, but sometimes the nitty-gritty decisions aren't really easy to trace to a set of requirements. Sometimes, I feel if we had exposed design decisions earlier (and more explicitly) we could have gotten better feedabck. The UIP v1 back button story comes to mind. By exposing decisions earlier we hope we help you give a vote - is this useful, for you?
- Exposing heroes & experts. We have worked with amazoing people during the course of p&p projects. We feel that we would all benefit more if we could 'open the window' to the projects and let you see what is built & how by these amazing teams.
- Giving you earlier access - Many users of blocks & guides are under tight timelines and they can't wait for our release date. Others just reuse some design concepts and a little code, not the full shebang. We want to help this important set of customers by exposing them to our earlier work. We hope to get more feedback early, but most importantly, we care that we help you get your dayjob done.
- Better participation by using iterations- we have been increasingly using iterations, unit testing, and other practices from agile practices as a building blocks of our lifecycle at p&p (See the myriad of blogs from the entlib team). We can have higher-quality results, earlier, by following these practices. So why not share it out? Executing projects as iterations can help us support all of the above goals (predictability, transparency, who's who and earlier reuse).
So these are the goals. We expect to learn from the best & worse of our own community efforts, and put them out for your input. I'll talk about the shape of the process itself (phases, iterations, roles etc) in some other post.
But to make it clear - what is this process NOT about?- It's NOT about having all development being done 'by community' - in this version, you could think of it as opening the doors & windows into the workshop- It's NOT about discontinuing all the things and guarantees you like in p&p assets - Testing, Product Group reviews for correctness and alignment w tech directions, docs, installers, etc- It's NOT about 'starting to work with community' but rather having a uniform way of doing so in the Smart Client program- lots of other projects (Shadowfax/EDRA, Application Blocks, Guides, patterns etc) have been working with a lot of community involvement.
Sounds good? What should we make sure we do? What should we avoid?
Thanks - Jumping back into the fray in 10..9..8..