OK, soon the new ubuntu website will release.
That is such a heavy statement. For the last three months, my sole focus at work has been getting this site ready. It has involved a major redesign, a major architectural change and dramatic streamlining of the content.
This process has been a lot of work. We decided to switch away from the Moin Moin platform (we still use it on all of our wikis and for several smaller websites though). As you may know, we at Ubuntu love Python and use it whenever possible. However, we had a bad taste in our mouth from a haywire Plone incident, and decided we just couldn’t use plone again. There are no other major oss python CMSs out there. That means we needed to consider Java or PHP based CMSs as well.
The fact is, we don’t have that much in-house java expertise. Several of us have done a bit of java coding, but collectively we have a much greater pool of PHP experience. I personally have been coding primarily in PHP for over 5 years and invested 4.5 years writing a commercial CMS. Taking this into consideration, we narrowed the list down to a few choices and began evaluating and contacting the devs and security teams for each of our final choices.
The decision was difficult. We finally chose Drupal. They have excellent documentation, the cms is easy to extend through modules, they have a responsive security team and it’s easy to learn to edit and add content.
By mid February we had the new theme in place. I found it quite easy to create themes for Drupal. I started from scratch and referenced a few of the included themes. I had to ask for some layout advice in #css on freenode. After some discussion about equal height columns, Zeroes (correct me if I got your nick wrong) suggested using a sliding doors layout. This blew my mind at first because I’d only used sliding doors for tabs, but it was brilliant. It works perfectly. You’ll notice if you inspect the code that I have equal height columns inside equal height columns. The outer columns use sliding doors, the inner columns are created using “skidoo too“, which is the way I’ve been using for years to achieve equal height columns. The benefit of sliding doors over skidoo is that sliding doors can use a background image for the columns.
Around this time I also started noticing a few problems in the layout for IE 6. I was faced with the choice of using CSS hacks or adding a few lines of javascript. I opted to use javascript. This led me to search out a js library that could make my life easier. I found mootools by way of transcorners. What a find. I’ve used prototype, scriptaculus, jquery/behavior and mochikit. I fell in love with mootools because of its small size (35k packed) and complete functionality. It’s fast, has a ton of time-saving helper functions/classes, easy ajax/json (and I mean *easy*) and some beautiful special effects. I’m only barely scratching the surface of this library, but I’m so impressed with it I will definitely be using it more soon.
The biggest challenge has been migrating content. We’ve been working on it, working on it and working on it. I don’t think we can get it all done perfectly before release, but that’s ok, because a lot of our content is fluff. We know it, we have plans to do something about it and it will work for now.
Also around mid-Feb we begin doing a burn in of Drupal on the new website. The fabulous Canonical sysadmins found a problem. Drupal was not able to handle more than about 75 simul connections with our configuration. That’s not good. However, the sysadmin’s skills are eclipsed only by their tenacity and they soon worked out a solution. In the final analysis, each server can now handling 5,000 to 6,000 simul connections. You guys rock.
So as the site releases, my favorite part is the new download page. Right now you’ll just be impressed by its vastly simplified layout. However, I’ve already written the code to enable automatic mirror detection. When we release, you’ll have to choose a mirror. However, shortly after we’re sure everything is OK, we’ll turn on the mirror detection code which will use a little AJAX to randomly choose a mirror that is close to you and pre-select it. We’ll still give you the choice to change the mirror but most likely you won’t need to. The brilliant launchpad devs have written some code that probes the mirrors to see which ones have gone away. The new site will benefit from this information to help prevent problems with dead mirrors, something that was a painful tragedy when 6.10 released.
We use launchpad to track bugs with the website. There are some known glitches. I’m eager to hear about any others that turn up. You can also e-mail me or /msg me on freenode (I’m newz2000). If I’m online, you can always find me in #ubuntu-matt.
I could go on and on. I’d love to discuss some of the design decisions and go into details over technical hurdles, but this post is long enough now and I really need to focus my time on getting the site out.



