Summit is the code that runs the session scheduler for the Ubuntu Developer Summit (UDS) and, as of last cycle, the Linaro Summit as well. Summit has had a rather troubled past, being passed from one maintainer to another, evolving organically as it went. But during UDS-N, it started gaining a team of community contributors, specifically Chris Johnston and I. This expanded further for UDS-O, when Nigel Babu took the helm as the project manager. We were also joined by Linaro developers who wanted to make Summit support two simultaneous events, using the same schedule, the same rooms and the same attendees.
Many changes were made in the run-up to UDS-O, and by “run-up” I mean all the way up to the first day of sessions. Unfortunately, nowhere along Summit’s organic growth did it gain the proper test suite and deployment processes that are a necessity for a project of this size. In fact, one of the bugs that was discovered during UDS-O was a script running on the server that wasn’t even part of Summit’s revision control tree!
Well this part of Summit’s history is coming to an end. After UDS-O, the community developers started to plan out how to stabilize Summit, both it’s code base by adding testing, and also the deployment process by strictly managing how new code gets into production.
The bug fixing started early this cycle. Nigel was submitting merge proposals by the end of the week of UDS-O, and Chris and I were pair-programming on the flight from JFK back to Orlando. So far there have been 30 branch merges into the summit tree and fixes for 20 bug reports. Nigel gives the full list over at his blog.
Setup and Development
Summit can now be easily setup for development using Virtualenv, which makes getting started with development significantly easier. LoCo Directory recently gained a script that fully automated the setup of a development environment, and this will soon be coming to the Summit code. At the time I’m writing this post, Jorge Castro has even begun work on an Ensemble formula, that will make deploying a fully configured instance of Summit on Amazon’s EC2 platform a matter of a few simple commands.
Making development setup easier lowers the barrier to new contributors, and we hope this will encourage more community members to get involved in such a fun and important project. Making sure we’re all using the same development environment, and having it easily replicated for others to develop and test, will help improve the accessibility and stability of our code.
During UDS-O we got some help setting up and writing the very first testing code for Summit. From now on, writing test cases for new features or bug fixes will become a normal part of our development process. We recently held an online classroom session about how to write test code for Summit (and LoCo Directory too). There is still a lot of Summit code that needs tests written for it, but we’re going to cover as much of that as we can while continuing to move forward with development. More than any other change this cycle, I’m excited about the huge improvements to stability that we can gain through aggressively testing our code.
Branch based deployments
Summit has always used branch-based deployments, that is our production server has a copy of our bzr tree that it runs from, instead of a package that gets installed. Unfortunately, up until last week the only branch we really had was trunk, which made it harder to properly track emergency fixes when we already had revisions committed to trunk that weren’t ready to be deployed. To fix this we’ve split off a production branch, which is the only branch we will deploy from, and will always have a copy of the exact code that is running in production.
We will also, for the short term, have two branches for development. The 1.x branch is our “stable” tree, that’s where we will make any changes that will be ready to deploy in the coming days or weeks. This means that we can use our trunk branch for long-term development, where we can perform some much-needed refactoring and code cleanup, without worrying about blocking deployments while these changes settle into place. There are some major and necessary changes coming to parts of the Summit code, and this development setup will let us start landing those quickly so that we can test them and build off them, without destabilizing the currently used code tree or blocking minor fixes from being deployed.
Ubuntu Website integration
If you visit the Summit website today, you’ll already see some of our recent changes. To better integrate with the WordPress instance running uds.ubuntu.com, we have changed our main navigation and 960px width to match. Once the WordPress theme updates are rolled out, both sites will have the new community top navigation bar too. No longer will it feel like you’re being thrown from one site to another without a means of getting back. This should lead to a less confusing user experience for both sites, and much happier UDS attendees all around.