OK, it's been way too long since I've blogged.  I've been swamped with work as well as a bunch of non-work creative projects that are sucking the blogging juices away from me.  So, I am relegated to newsworthy stuff as opposed to my random blabbing.  Well, I got something pretty "newsworthy" and it merges my past world (patterns & practices) and my present world (collaborative development).


Back in January, before I left patterns & practices, I was on my soapbox about doing something to help the device developer.  Given I do a lot of device development in my free time, maybe this was a little selfish, but I had heard a bunch of customers asking for it and I figured it was the right thing to do. While there was a lot of agreement, there were also issues around budget and resources.  After all, p&p was already working hard on a bunch of major projects, including Enterprise Library and Global Bank, and it was difficult to find the resources to add anything to the project plan that required the rigorous QA that p&p blocks go through.  With shared source on the brain in advance of my shift to the GotDotNet team, I proposed a different concept--let's partner with someone else to do a community version of the blocks.  I'm not talking about just throwing code up on a Workspace and hoping people do something.  Instead, let's work closely with the community and hand over stewardship and evolution of the blocks to them.  With the .NET Compact Framework as the platform, it was very obvious who we needed to seek out:  the OpenNETCF team.


We connected with the OpenNETCF guys to do a .NET Compact Framework version of some of the application blocks.  As many of you know, OpenNetCF was started as an independent source for CF development information working under the spirit of the open-source movement. They built the Smart Device Framework, a free, shared source, set of classes and controls that enrich and extend the CF.  OpenNETCF framework has been embraced and endorsed by Microsoft as a powerful tool to extend the CF.  This seemed like a perfect opportunity.  We could work with them to build out the code and then let them own the evolution and modification of the blocks as part of their shared source model.  It was as much an experiment in collaborative development and giving assets to the community as anything else.  In particular, we focused on deprecated versions of the Data Access, Exception Management, Caching, and the Offline blocks.  Naveen Yajaman, one of p&p's many talented devs, joined me in my quest to work with the OpenNETCF team and played co-Program Manager and lead dev.  There's no way this could have happened without him.  Special kudos go out to Neil Cowburn of OpenNETCF, who was the primary liasion from the OpenNETCF side.  He's been working hard at the next version of the SDF and still managed to find time to build an integration tool into the VS IDE.  Also, Michael Fosmire of Microsoft's PSS did a great job helping foster the relationship with the community and making things happen.


It should be noted that while these blocks are functional and should be completely usable, they haven't been through the p&p traditional process and therefore aren't "official releases".  Also, the p&p team may still release official guidance and assets around the .NET Compact Framework in the next year or so (still undetermined, but I personally hope they do and the success of these blocks may help encourage taht), but this is a great start that will help a lot of device developers now and I couldn't be more excited that it has happened.


So, if you want to get the blocks, head over to
http://www.opennetcf.org/appblocks/.  And be sure to let me know what you think!

{REM - Lifes Rich Pageant}