Two weeks. That's right, I want to try to get a 1.0 version of Mongrel2 out the door by the 31st of Aug. That would mean 3 months of development to produce a 1.0 release. It obviously wouldn't be feature complete if you compared it to older servers, but the goal for a quick 1.0 release will be to take the features we've got and make them rock solid. Solid enough that, if you need these features, then you can start building on them. That's what I want for a 1.0 by Aug 31st.
The thinking with this is that I've always waited forever to do a 1.0 release, and that to me and everyone else 1.0 means:
It's got two kitchen sinks, a winnebego, and can feed a mountain lion as well as server up web sites. Yep, it's got everything. Ship it!
For most of my other projects, and I think for many open source projects, 1.0 has meant that it has every feature they ever wanted. They slaved on it for 5 years or 10 years and finally they've got it all. It's 1.0 baby.
Then of course, 1.0 is released and that's when people decide to use it and that's when people find the little bugs in the 80% of the features everyone actually uses. Then right after this monumental 1.0 you find all sorts of features you should have added, tons of features you shouldn't have, and the entire world changed so you have to rewrite it.
I want to change 1.0 to mean:
It does X, Y, and Z. Really well. Without crashing.
In fact, I could almost just say that I believe most open source projects just have an off-by-one error on their version numbers. The 0.1.x projects are actually 1.x projects. The 1.0 projects are really 10.0 (or 30.0?) projects.
I'm going to try limiting features, getting them tight and rock solid, then releasing a full version release. I'd also like to get into a pattern of doing these quickly and going with the Linux style of certain version patterns mean not-stable.
That leads me to....
The idea is that we'll knock out larger and larger sets of features because each previous set will be more solid and we'll have more user feedback to guide further development. We could potentially get up to like 7.0 but that could be years from now. By releasing quick releases, smaller numbers of features, and focusing on quality for each release, we should avoid feature creep and adding things nobody needs.
This also means, and yes it is kind of stupid, but people will try it. If it's not 1.0 then people avoid it, but if it's an official release there's a psychology that it won't set your house on fire if you kick the tires a little. It also sets up a good target in my mind and gets me focused on the release rather than wanking on crazy epoll ideas.
Doing periodic full point releases will help keep Mongrel2 tight and tested and full of only the things people really need.
It's ambitious, but I'm gonna give it a shot. I finished off the last major thing I wanted for his first cut of a release, so now I'm just gonna tighten it all up and see if we can pull it off. Really the main thrust of the next two weeks will be testing the hell out of the code and making it solid.
Starting tomorrow I'll be going into the tickets and cleaning them up, adding new ones. After that we'll be focusing on closing bugs and writing testing infrastructure. I'll also be moving mongrel2.org over to a new server and running everything under its own power entirely. We'll be throwing up demos and I'll start getting a build farm going more officially.
I'll also be fixing up the main website so that it's got the list of sponsors so far, the nice big manual and all sorts of important information I've been neglecting.
Should be fun!
As usual, if you like the project then please help me out by donating and let me know if you want to be on the donors page too.