For the last 10 years, I have had a front row seat on one of the leading open source projects on the Microsoft stack. In the process I have learned a lot about building communities, building products and building companies. One thing that I didn’t fully appreciate before I became involved with DotNetNuke is how much an OS project is not some static entity that is fully formed on the day the code is first released. Instead, I have found that OS projects are living, breathing entities. They are born, they grow up and can even become financially independent.
A Star is Born
Like any newborn baby, most open source projects start out with very little capability. Newborns can’t walk or talk or do many of the things that their older brothers and sisters can do. Likewise, a new open source project often has just enough features to make it useful to a small group of individuals (sometimes it is just a group of one). People are often attracted to a new OS project, not because of all the features and functionality that it possesses, but because of all the potential they see in the project.
This is what first attracted me to DotNetNuke. It could build simple webpages (if you could look past the ugly UI), it had a basic security model, and if I didn’t mind getting my hands dirty I could open a code editor and extend the project to meet my needs.
The early days of an OS project are all about vision. Where does the founder(s) want to go with the project? I could see in those few thousand lines of DotNetNuke code the potential for something truly spectacular, and I could see in Shaun Walker someone who had a vision on how to unlock that potential and build a truly amazing product.
With babies, parents get excited about every new milestone: the babies first words, their first step, their first tooth. It is a very exciting time as a parent, and it is a lot of work. There are many late nights and not much sleep. The same is true with OS projects. The team is so excited about every new feature: the new skinning engine, the packaging model for extensions or even the ability to recover deleted modules and content. Those days on a new OS project are often filled with late night coding sessions and long weekends in front of the computer. Team members are often showing up for their day job, having gotten very little sleep the night before. But they enjoy it. It is new and exciting and they can see their little project growing up.
One of the primary duties of every parent is to provide the guidance and discipline that a child needs to help them grow into a productive member of society. During this time, the parents shield their children from harm and provide the food and shelter that the child is unable to obtain on their own. Likewise, the team behind an Open Source project has a responsibility to be good stewards of the platform: to provide guidance and caring for the project so that it will serve the needs of the community that is growing up around it.
Like parents, the stewards of an OS project soon learn that the processes and procedures that worked when the project was just getting started will not work once you have a sizeable community established. As the project and the community grows, the way you manage the project must also change. Like new parents, OS project leaders often find that there are no hard and fast rules. Processes that work for one project or community are not a good fit for another project. There is a lot of trial and error as the project stewards seek to find a balance between the needs and desires of the community and the needs and desires of the OS team. I am often amazed when I hear someone say that a “true” OS project does something a certain way. The reality is that every OS project is different, just as every child is different and a good steward of an OS project will recognize that they need to find out what works for them and their community.
As children grow, they will reach a time in their life where they need to become financially independent. They need to figure out how to become productive members of society and figure out what they are going to do to earn a living. Some young adults become doctors, or lawyers, or bankers or programmers or teachers. They each contribute to society in a different way.
Similarly, when open source projects reach a certain maturity, they will need to find a way to become self-sustaining. A recent article by Eran Galperin on Sitepoint, called “Not Your Grandfather’s Open-source”, discusses some the common reasons that many OS projects evolve into commercial open source entities. This article reaches the same conclusion that Shaun, Scott, I and a few others reached backed in 2005 – to remain viable and continue growing, we had to find a way to pay the bills while focusing full time on making DotNetNuke an even more awesome platform. The CMS market was in the middle of a massive explosion in growth and if we didn’t figure out this fundamental issue, the DotNetNuke team would have a hard time keeping up.
While Eran Galperin does a good job of describing why projects often follow the commercial OS route, he doesn’t go into much depth on how that ultimately translates into a commercial business. When a young adult chooses to pursue a profession they are forced to make a choice. Which part of society do I choose to serve? Do I help those people who are sick and need a doctor? Do I help those people who need legal assistance? Do I help businesses by creating computer applications that make their business run more efficiently? Even within those broader choices there is often further specialization and a narrowing of the skill set to address a very small segment of the overall market. An individual cannot effectively be both a Heart Surgeon, a criminal defense attorney and a web programmer.
Just like individuals, small businesses need to choose their target market. This is true even for commercial open source businesses. When someone asks me why doesn’t DotNetNuke Corp. offer a product for this price or this market segment, what I hear them asking is why I don’t perform heart surgery in addition to my programming job. Likewise, our business has chosen to serve certain commercial customers in specific markets. That is how we choose to generate the revenue necessary to sustain and grow the open source project. These choices are not written in stone, and as the project and company grows we may choose to serve a larger or different set of customers. That is one of the great things about a growing business – the constraints on a young business will change as they grow. The inability to target multiple markets as a small company don’t necessarily apply throughout the life of a company and a product.
As people grow into middle age, they have gone through multiple changes in their lives. They are much more in touch with their place in the world and have grown and advanced in their chosen profession. At this phase in their life OS projects have also matured and grown. They are often serving a very large communities. They have matured in their processes and they often look much different than they did when they were a much younger project.
Today, the DotNetNuke project includes a dedicated product management team, an international engineering team, a number of QA engineers, a support team and even a marketing team. Even the way the project interacts with the community has changed over the years as the organization has grown and matured. Today we are becoming more open and transparent than we have been at any point in our life. Our project is more active than ever and you can see the project which was born with so much potential becoming that truly spectacular product that we all dreamed of so many years ago.
Just as no two people live the same life, no two open source projects will make the same choices, will develop the same product or the same community. As I look back on my last 10 years with DotNetNuke I feel proud of the what the project has become. Like any parent, as one of the stewards of an open source project, I have been there for the times of joy, the times of disappointment, the times of great growth and the times of doubt. The last decade has truly been an exciting period for me and I look forward to many more years to come with all the great friends we have made as we all participate together in the life and times of this one amazing open source project.
This article is cross-posted from my personal blog.