I’ve had several people ask me about the state of various open source projects that I’m involved with or advocate. They ask questions such as “Is it alpha or beta?”, “Should we start using it?”, and “Where can I get started learning more?”.
I find these questions difficult to answer since they’re very relative and subjective depending on your environment, tolerance for change, tolerance for bugs, issues with “bleeding edge” technology, etc.
In an effort to try to come up with a more objective framework for answering these types of questions, I decided to take a stab at putting into words my experience with various frameworks and how they have progressed in their lifecycle.
Phase 1: Concept
Some ideas have been kicked around by a few people. Some spike code has been written. A project site is up (Google Code, CodePlex, etc) and there is maybe a working prototype to show off and talk about. Definitely no documentation, wiki, or anything like that. There may be a blog post or two about the concepts.
Phase 2: Bootstrap
There are one or two serious authors/committers. There might already be one or two actual users experimenting with the framework. The build is continually in a “works on my machine!" state. Some more blog posts have been done and maybe a wiki with a few articles, but otherwise no docs to speak of.
Phase 3: Early Development
A few more committers have signed on, but still there is only one or two primary contributors. A few more users have started playing with it now and are providing feedback. A mailing list has certainly been set up by now, if not earlier. The build is more stable and works in many environments. More blog posts and wiki articles have emerged, but still no serious documentation effort yet.
Phase 4: Early Adoption
More committers are signing on now and contributing more and more. The project is at a state with many of the baseline features are done and the product is quite usable now. There are a few dozen users experimenting with it and even building some interesting applications upon it. Multiple people are blogging about it. The wiki is starting to materialize into categories and sub-topics. Some sparse documentation has started to emerge in the form of some limited API docs and some FAQ’s and getting started guides.
Phase 5: Development
There are several devoted committers now, cranking out serious features and functionality. There are dozens of users – approaching 100 or more. There is an automated (nightly?) build. Binaries are available for download regularly. Many people are blogging about it and buzz is growing. The wiki is really taking shape and being fleshed out. At this point documentation is “moderate” and is growing into more scenarios and topics.
Phase 6: Adoption
Many people are submitting patches and other forms of contributions. The inner circle of committers is growing. There are more than 100 users, perhaps several hundred. There are frequent “point” releases available for download. There’s now likely a basic installer which helps configure your environment for the framework. Frequent, in-depth blog posts by noted authors. The Wiki is now very rich and there are frequent contributions. Documentation at this point is “adequate”. You would likely start seeing “contrib” projects sprouting up here and there and coalescing .
Phase 7: Maturity
There are so many patches and contributors that a hierarchy has been set up to evaluate and approve changes. Multiple releases creates management issues with patches and defects requiring more organization. There over a thousan users by now and like thousands. There are releases and installers for various scenarios (maybe x86/x64, or a Mono compatible release, etc). There is lots of documentation activity and many contrib projects have emerged.
Phase 8: Mainstream
By now, many of the original contributors have moved on or are less involved. A new generation of contributors have taken over and are taking the project into different directions and expanding it greatly. There are hundreds of thousands of users. Perhaps there are even consulting companies forming business services around the project and offering commercial support. There are now multiple “dot-oh” releases. There is no doubt this project is here to stay and provides real value to people. The project has its own active web site with lots of content, guides, add-ons, forums, blogs, etc.