The Story of Board 5.0 is a long and messy affair littered with false-starts. I don't know the exact date that discussion about 5.0 truly began, but I do know that it started before I was hired on as a developer and system administrator at the beginning of June in 2006. So I'd put its genesis somewhere around April-May 2006. We finally released Board 5.0 on Friday, July 30, 2010. So it spent at least 4 years in gestation.
When I was hired on I was given access to the document being created by Fractile to discuss the reasons for creating a 5.0 and what the requirements of such a system would be. Contributions to this thought process spanned four editorships, from Pa Grape through Miss Editor, Optimistic., and Yellow. Over time the document grew and some good ideas were formed, but nothing really happened. At some point Fractile retired and Dinomight sort of disappeared and eventually retired leaving me to continue working on the vision of 5.0. I seem to recall us having started writing code for the 5.0 during this time period, but, if we did, it never got very far and is now lost.
I was a busy Junior and then Senior working to finish my degree and didn't have the time or motivation to build a new system from scratch single-handedly while still trying to keep up with maintenance on the existing system. During this time period we dealt with a few occurrences of unauthorized access to the server and I spent some long days and nights working to re-secure the system and clean up after the intrusions. I even had to dedicate some time to fending off a denial of service attack (December of 2008). It was a tough gig.
In the Summer of 2008 we were given a new, much nicer (actually, awesome) server. So Board 4.0 migrated for at least the third time in its lifespan. At some point in time or another Board 4.0 lived on a Mac server, a Windows server, a Linux server, and finally onto another Linux server. There are enough differences in those systems that several oddities and errors were introduced into the Board's data due to the various changes. I knew we needed to update the entire software stack the Board was running on from the operating system all the way through our application code, but it was a daunting task for one person.
Board 4 had been custom built in PHP 4 (meaning it was not properly object-oriented, making maintenance more difficult). The plan had been for a complete rewrite again done in PHP, but this time PHP 5 with a proper object-oriented approach. Unfortunately there was simply no way that I was going to be able to pull that off, especially since I didn't particularly like working with PHP.
In the Fall of 2008 I decided the best option would be to use an existing framework and customize it to our needs. I selected the Drupal framework for PHP. It was going to save us a lot of pain and suffering as well as prevent us from needing to reinvent many wheels (so to speak). By this time Yellow had agreed to help with the development of Board 5.0. We did some searching and found some people who had agreed to get involved with the development. We even had a development server configured and ready to go. Things were looking bright.
In November 2008, we had some meetings with our new developers, I started customizing our Drupal installation and progress on Board 5.0 had officially begun. Work continued for a few weeks and then we began having difficulty getting in touch with our new developers. They had become busy with other things in their lives and, understandably, didn't have the motivation or dedication for the (admittedly time-consuming and difficult) task of creating Board 5.0. Progress stalled.
We hadn't made much progress by this point and with the loss of our developers we felt like we were back to square one. So Yellow and I re-evaluated our choice of framework. I've never particularly cared for PHP as a language and don't enjoy working with it. So we wanted to move away from a PHP-based approach. I, correctly, believed that if we were to use a language I actually liked that I'd be less demotivated when working on the code. Yellow had been using Ruby on Rails for a class and had even put together a prototype Board interface. We liked the idea of using a more modern language, but weren't quite sold on Ruby.
After some research we landed on the Django framework for Python. As Python happens to be my favorite language to work with I was excited to dive into this new approach. This decision was made on December 16, 2008 and work began over Christmas break. I reconfigured our development server for Django and on Friday, January 9, 2009 at 7:06pm I committed the first chunk of code for Board 5.0 to our code repository.
Around this time, in addition to Yellow, Laser Jock had agreed to work on Board 5.0 with us. So we had a real and dedicated development team to keep things moving. We were all very excited as we wrote code and saw actual progress being made.
Since we used a code repository (as any software project should) I am able to gather some interesting statistics about our progress. I present them here in graphical form with some explanation below:
Understanding the graph:
The revision number is simply an identifier given to each new change-set of code as it's included in the repository. So it will always increase over time. Rapid increase in the revision number represent a rapid inclusion of individual change-sets. The size of the dot represents how many lines of code changed in that revision. So, for instance, May-July 2010 shows rapid increase in revision numbers but only small change-sets. This is indicative of the polish we were doing fixing small things to prepare for launch. Whereas February and March of 2010 show very large change-sets; indicative of adding major features and changing large swaths of the system at a time. Gaps in the graph indicate periods of inactivity.
As you can see, development progressed rather slowly. This was exacerbated by the fact that I was trying to finish up my Master's Degree during Winter/Spring 2009 while simultaneously preparing to get married, move, and start a job. By August I was settled into my new life and progress continued, but paused again for Thanksgiving and Christmas. A year after initiation we'd still only managed fewer than 200 revisions representing some few thousand lines of code.
After a year with little meaningful progress we really buckled down, set a target date, and made real progress. The bulk of the work was completed between February and April of 2010 and then all the details were filled in over the course of May-July. At the end of July I took a trip to Utah to upgrade the server, take down Board 4.0 and install Board 5.0. We celebrated with a ribbon cutting ceremony which almost went as smoothly as we would have hoped.
Since we released 5.0 we haven't stopped working on the Board. The current code base is comprised of over 169,500 lines of code in over 1,750 files (a good chunk of those are externally-maintained libraries though). We still have a substantial list of feature requests that we're slowly working through. We continually strive to make the Board a better place for readers and writers alike.
-Curious Physics Minor