Making Open Source work in .Net
For the past week or so there has been a lot of discussion around the recent announcement concerning the demise of NDoc. This announcement, I believe has been a watershed moment in the .Net Open Source movement. You can look at the blogs of Phil Haack, Scott Hanselman, Eric Wise, Peter Provost, Derek Denny-Brown, Jeff Atwood, Rick Strahl, DonXML and Dare Obasanjo to see that this has created a bit of a stir. While many people have discussed what they think the user community should do, or what Microsoft should do, I am going to take a different tack. I am going to discuss what I think every Open Source project should do.
I grew up with an alcoholic father and after going through that I learned that it is futile to try and control other people's actions. It is out of my control. I may be able to influence it slightly, but in the end people will do what they are going to do, and it doesn't really matter whether I like it or not. I can complain that user's have not contributed enough time, money or resources for my project, or that Microsoft should have given the project more help or that the volunteers were not writing enough code or documentation, but in the end I can't control any of that. The only thing I can control are my actions and my attitude.
DotNetNuke has been very fortunate as a project. We have enjoyed tremendous support from our user community. From the very outset the user community has provided feedback to the project. Even when Shaun Walker was the entire team and the community consisted of a couple thousand users, we all spoke up about what we would like to see. We contributed code where possible and helped each other out. This strong sense of community continues to this day. You see members of the community actively answering questions in the forums, so much so that we became the most active forum on the Asp.Net website before moving off to DotNetNuke.com where the community continues to grow. You see members actively supporting our Benefactor program, which has provided the funding necessary to further platform development and the creation of the DotNetNuke Review program, along with other programs still under development. You see members of the community who develop modules and skins and freely provide them under Open Source licenses. Yes we are very fortunate to have a tremendous community.
We have also enjoyed substantial support from Microsoft. As Shaun discusses in Chapter 1 of Professional DotNetNuke Asp.Net Portals, Scott Guthrie and the ASP.Net team took an early interest in the DotNetNuke project and community. Scott and his team have provided substantial technical assistance and have even sponsored a few of the early enhancements to the project. Early on, our entire infrastructure was hosted by Microsoft, and it was only recently that we finally moved our support forums off of the Asp.Net website. The support from Microsoft was critical in sustaining DotNetNuke until we could achieve a critical mass. Over time, the support from Microsoft has changed. While we still receive some technical support from the Asp.Net team, the project, through our team members, has established relationships with Microsoft in Europe and in Australia. These relationships are independent of the relationship with Scott Guthrie and his team. We maintain an active relationship with Microsoft as part of the Shared Hosting program. Needless to say, Microsoft has done a lot to help get DotNetNuke where it is today.
The third area where we have been fortunate is in our project teams. Since the early days of the project, Shaun has cultivated the most talented and enthusiastic members of the community. Through Shaun and his representatives we have given members of the community the opportunity to become involved in the core development. Whether that was code development, documentation, user interface design, marketing or testing, we have looked for ways to allow people to become involved in the project. Over time we have developed a tiered system that recognizes different levels of contributions from the team members. Some members have become more active and others less so, but all of their contributions, no matter how small or large have helped make DotNetNuke better. The team members are very passionate about DotNetNuke and have helped spread the word about DotNetNuke throughout the world. The passion of our team has been a tremendous asset to DotNetNuke and I believe is one of the key reasons we continue to grow.
Yes. DotNetNuke has been very fortunate, but it has not all been an accident. I believe that DotNetNuke enjoys the support it does from the community, from Microsoft and from our team because of the example set by Shaun very early on. I believe most Open Source projects succeed and thrive because of their ability to connect with people. That begins on day one with the founder of the project. Shaun has actively pursued developing relationships with the community. Early on Shaun spent a lot of time in the forums, answering posts, adding requested features and generally making everyone feel like they were a part of something bigger. While Scott Guthrie made the initial overtures to Shaun, it is Shaun that has continued to grow that relationship. To find ways that DotNetNuke could help promote the .Net platform and ASP.Net development. Shaun has actively looked for ways to partner with Microsoft, to gain their assistance where needed, but also to promote Asp.Net as a first class development platform, equal to or better than anything offered by Java, PHP, Perl, Ruby or any other web platform you care to name. Out of Shaun's cultivation of the community he was able to forge friendships with many talented individuals who subsequently became members of the core team and the various project teams. I am proud to be included in that list.
Because of Shaun's leadership, he has fostered this same spirit in DotNetNuke team. Over time we have had more than 10 members of our team, both past and present, who have been recognized as Microsoft MVPs. This recognition occured because we followed Shaun's example and stayed active in the community. Not just the DotNetNuke community, but the broader .Net community. Many of us answer questions on the Asp.Net forums, or assist in moderating the forums. We have several members who have authored books or actively blog about .Net development or even write for .Net magazines and publications. A few team members have started .Net and DotNetNuke User Groups. Several members of the team are active presenters at various User Groups Meetings, CodeCamps and conferences. Not only have our team members followed Shaun's lead in being active in community building efforts, but team members have also forged relationships with Microsoft, independent of Shaun's relationship with Scott Guthrie. These relationships occur at both the International as well as at the regional level. We do this because we all recognize that it is Microsoft that controls .Net and Asp.Net and therefore they can provide us access to technical information that is not available from any other source. We also recognize however, that this is not a one sided relationship. We work closely with our Microsoft contacts to provide feedback on the .Net platform and the associated tools and we gladly evangelize the .Net platform. We don't do this out of any sense of obligation, but because we are all passionate about the platform, warts and all. Sure there are things we would like to see changed in .Net or Visual Studio or Team System etc., but we feel that these tools and this platform are far superior to the alternatives. We look at DotNetNuke and recognize that this would not be possible without the great tools and the great platform that Microsoft provides. Finally, our team members have also begun growing their own little teams under the DotNetNuke Projects banner. These team members are actively taking control of and enhancing various elements of DotNetNuke. They are building small teams of their own to work on documentation or quality assurance or even the various DotNetNuke Modules. And once again they are following Shaun's lead.
So my take on this issue, and my question to other members of .Net Open Source projects, is not what the community or Microsoft can do to ensure the success of your project, but instead: What are the leaders and team members of your project doing to ensure your own success. What are you doing to build and excite your community? What corporate relationships are you building - not just with Microsoft, but with various corporations who are more than willing to provide support to Open Source projects if you would just ask? What are you doing to grow your team with a group of individuals who share your passion for your project? How are you controlling your actions and your attitudes, because in the end, that is all you can control.