The BBC homepage, which I worked on from January until October last year, has finally gone public (well, beta). You can get to it one of two ways: either hit the current homepage and opt in to the new one (link on the top of the page). Or just load the website.
So, whats new (well, that I know about – there may be more since I left)?
Note to the usual BBC-bashers out there: This is my opinion on a lot of things, and also a snapshot of how it was when I left in October. Things may have changed. I may not have remembered them quite right. People may have made decisions which you dont agree with. Get over it. And if you think I speak for the BBC, BBC Worldwide or anyone but myself, I have a bridge I’d like to sell you…..
The criteria of the homepage rewrite was a lift and shift, which means that functionality that the end user sees and uses should not change much, if at all, but it needs to run on a totally new platform, be somewhat future-proofed, and be updated for changes in technology.
The basic idea of a movable, customisable set of boxes with the various news items, launching you deep into other BBC properties, hasn’t changed. There are a number of smaller UX changes – eg the size of the header is different, the media box has changed completely and can now do video amongst other things – but the basics haven’t changed.
If you loved the old homepage, you’ll most likely love this one. If you hated it before, I doubt you’ll like it now, either. That’s just how things are. If you really want to change it, I suggest you apply for a job at BBC FM&T.
On the backend is where most of the changes are. The BBC has invested in a new platform, internally called Forge, and the homepage is the first major project I know of to launch on the new platform. Forge is a complete re-work of the BBC platform – the existing one evolved over time since web 1.0, and was having trouble handling the large load of events like 7/7, or the projected load of the 2012 Olympics. Most of the code was a mix of Server Side Includes (SSI) and Perl, with some Java thrown in for good measure. The existing homepage had issues around how long it took to make a new widget, which was addressed in the new homepage.
The Forge platform uses a lot of up-to-date techniques and technologies. At the front end lies PHP, which is used to render the pages to the end user. I can only summise why PHP was chosen (as I wasn’t at all part of the decision), but I imagine it was for a number of reasons: it’s known to be able to be scaled (facebook/yahoo anyone?), and there are a lot of people out there with PHP and front end skills. Finding people with the right skills easily and (fairly) cheaply is always going to be more of a problem than throwing some more hardware at a problem, within reason. I have my own feelings about PHP (especially after using it for 9 months), but I think, in this case, it’s a good decision.
Forge uses a SOA-based architecture, and the base platform provides a number of different services to all applications, such as databases (mysql), key-value stores (couchdb, abstracted away to look like a dumb store), memcached, image manipulation, monitoring, geo-ip, inter-layer caching and a rather brilliant internal feed engine, which allows for feeds to be pulled from various internal and external sources, cached and managed for availability, and then served to the requesting page in a very short amount of time.
Other services – REST-based and usually delivering JSON or XML – can be written as needed and hosted on the Forge platform, using Java (preferred) or Perl (for legacy apps, usually).
Forge is also a development environment, designed to allow easy development both inside and outside of the BBC firewall. For example, during the snowpocalypse last year, working at home was as easy as just plugging in the laptop and turning off the proxies. From there, we had full access to all source code, continuous dev/test/stage environments, wikis, bug tracking systems, IRC etc. We even had one team member working from New Zealand using the same system. This aspect alone makes forge one of the best overall development environments I’ve used. Work anywhere with a ‘net connection. Really. Bravo to BBC’s Forge people on the design and implementation.
If you look at the homepage, the architecture is fairly simple (tho the implementation isn’t)
The first step is to work out if we know who you are. If we dont, you get a default page, which is served out of cache if possible, which puts almost zero load on the platform for 80% of users.
If we know who you are, PHP generates the page, based on a document definition stored for you in the key-value store. Updates to the definition can be applied here, for example adding a new widget (Olympics? Wimbledon?) to all users layouts.
The feed engine provides all the content – news items, weather, TV listings etc – to the PHP code. The default homepage had, last time I checked, around 75 feeds on it. This come from various sources, from databases, web services, RSS and ATOM feeds, and other sources, some of which could never handle the load of the homepage. The feed engine abstracts that away, meaning that the homepage only deals with one format, and the source sites don’t get slammed.
Most steps in this process – each widget, each sub item with in a widget, each feed, each document – are cached, reducing the load on the platform as much as possible.
One thing that new site does which the old one couldn’t do well, is having separate layouts for different geographical locations. At the moment*, it’s “UK” and “everyone else”. UK gets the normal page and everyone else gets a more world-focused page (eg, no London news unless you ask for it, world news above UK news), and also ads and promotional stuff via BBC.com, BBC Worldwide’s online business unit (which I used to work for), which is how the homepage pays for itself outside of the UK (which is paid for by the license fee). This allows BBC.com to sell campaign’s for the “rest of the world”, and have them integrate into the site seamlessly, where as before these additions looked somewhat out of place, as well as being quite hard to implement.
So, all up, it’s a massive change to a well-used page, but not one that most users will notice – which is the point. What people will notice is, over time, a richer availability of content and interaction, which couldn’t be done in either a timely manner or a scalable manner on the old system. Nice work to the team who developed this – both those who are still at the BBC, or have since left. Must be time for a beer on Jo….
- You did read the bit up the top regarding “at the moment” being “when I left”, didn’t you?