Perl on Rails — Why the BBC Fails at the Internet

Perl on Rails is a pro­ject by the smart chaps over in BBC Audio and Music Interactive that rep­lic­ates the Ruby On Rails MVC frame­work in Perl. They’re obvi­ously rather proud of them­selves, and I under­stand that intern­ally the pro­ject is mak­ing waves. Whilst I applaud the tech­nical achieve­ment of the indi­vidual developers, I deplore the situ­ation that has forced them to do this.

The prob­lem is that the BBC doesn’t con­trol its own tech­nical infra­struc­ture. In an act of stag­ger­ing short-sightedness it was out­sourced to Siemens as part of a much wider divest­ing of the BBC Technology unit. In typ­ical fash­ion for the BBC, they man­aged to select a tech­no­logy sup­plier without inter­net oper­a­tions exper­i­ence. We can only assume that this must have seemed like an accept­able risk to the tower­ing intel­lects run­ning the BBC at the time. Certainly the staff at ground level knew what this meant, and resigned en masse.

Several years later this puts the BBC in the unen­vi­able situ­ation of hav­ing an incum­bent tech­no­logy sup­plier which takes a least-possible-effort approach to run­ning the BBC’s inter­net ser­vices. In my time at the BBC, crit­ical oper­a­tional tasks were known to take days or even weeks des­pite a con­trac­tual ser­vice level prom­ising four hour response times. Actual code changes for deploy­ing new applic­a­tions were known to take months. An upgrade to provide less than a dozen Linux boxes for addi­tional server capa­city — a pro­ject that was over a year old when I joined the BBC — was still being debated by Siemens when I left, eight­een months later.

The BBC’s infra­struc­ture is shock­ingly out­dated, hav­ing changed only by frac­tions over the past dec­ade. Over-priced Sun Enterprise serv­ers run­ning Solaris and Apache provide the front-end layer. This is round-robin load bal­anced, there’s no man­age­ment of ses­sion state, no load-based con­nec­tion pool. The front-end serv­ers proxy to the applic­a­tion layer, which is a hand­ful of Solaris machines run­ning Perl 5.6 — a lan­guage that was super­seded with the release of Perl 5.8 over five and a half years ago. Part of the reason for this is the bizarre insist­ence that any nat­ive mod­ules or any­thing that can call code of any kind must be removed from the stand­ard lib­rar­ies and replaced with a neutered ver­sion of that lib­rary by a Siemens engineer.

Yes, that’s right, Siemens forks Perl to remove fea­tures that their engin­eers don’t like.

This means that developers work­ing at the BBC might not be able to code against doc­u­mented fea­tures or inter­faces because Siemens can, at their sole dis­cre­tion, remove or change code in the stand­ard lib­rar­ies of the sole pro­gram­ming lan­guage in use. It also means that patches to the lan­guage, and widely avail­able mod­ules from CPAN may be sev­eral major ver­sions out of date — if they are avail­able at all. The recent deploy­ment of Template Toolkit to the BBC serv­ers is one such example — Siemens took years and objec­ted to this con­stantly, and when finally they assen­ted to provide the single most pop­u­lar tem­plate lan­guage for Perl, they removed all code exe­cu­tion func­tions from the language.

So tal­en­ted, under­paid, and frus­trated soft­ware engin­eers at the BBC are forced to make a decision. Either they can pro­duce web­sites using static HTML, and make a few remote calls to lim­ited Perl func­tions, dec­or­at­ing their page with SSIs, or they can fight against a reti­cent and incom­pet­ent tech­no­logy sup­plier to make use of a crippled and out­dated lan­guage on serv­ers that more than likely are unable to meet the capa­city require­ments of a dynamic applic­a­tion being used by the BBC’s audi­ence. Software engin­eers at the BBC must become mas­ters of the sleight-of-hand, using every smoke and mir­rors tac­tic they can to con­jure the appear­ance of dynamic web­sites, not exactly what you would expect from one of the largest media cor­por­a­tions in the world. Oh, and if you’re an external agency work­ing for the BBC and hop­ing to write a new applic­a­tion or build on tech­no­lo­gies that the rest of the world has taken for gran­ted for the best part of a dec­ade, you might as well for­get it. There’s only one extern­ally avail­able devel­op­ment server, and it’s not in syn­chron­isa­tion with the live environments.

It doesn’t have to be this way. If, instead of for­cing its teams to waste valu­able license fee pay­ers’ money on duplic­at­ing exist­ing free soft­ware, the BBC decided to take con­trol of its tech­nical infra­struc­ture and provide a viable plat­form for com­plex, dynamic applic­a­tions, then that cre­ativ­ity, effort, and time could be dir­ec­ted at mak­ing more of the kind of applic­a­tions that make the BBC great.

Some work is already pro­gress­ing in this dir­ec­tion. A large part of the BBC’s Creative Futures pro­ject is what the BBC calls “BBC 2.0″ (often mis­takenly referred to by exec­ut­ives and television-types as “Web 2.0″). The last I heard this was plan­ning to deploy an archi­tec­ture based around Java, Tomcat, Hibernate, Velocity, and MySQL. Whilst I dis­agree with the choice of tech­no­logy for many reas­ons, this is at least an import­ant step in the right dir­ec­tion for the BBC — as long as they exert con­trol over the infra­struc­ture from end to end.

It’s a ridicu­lous situ­ation, and I know that many tal­en­ted and respec­ted tech­nical staff have left the BBC in the past few years cit­ing frus­tra­tion at the insuf­fi­cient tech­nical infra­struc­ture, and the inab­il­ity of both Siemens and BBC man­age­ment to keep up with the pace of tech­no­lo­gical change. Unfortunately, unless some­thing dra­matic changes with the upper levels of BBC man­age­ment to recog­nise the nature of the prob­lem, it’s a situ­ation that will remain the status quo for a long time to come.

Tags: , ,

21 Comments

  • […] we can’t — we are restric­ted in what can be installed on the live envir­on­ment (Perl 5.6 etc.) ‘I am Seb’ has some more inform­a­tion on the infra­struc­ture. Believe me if we could have used an exist­ing frame­work then we would have done — we all want to […]

  • […] Check This Out! While look­ing through the blo­go­sphere we stumbled on an inter­est­ing post today. Here’s a quick excerpt: Perl on Rails is a pro­ject by the smart chaps over in BBC Audio and Music Interactive that rep­lic­ates the Ruby On Rails MVC frame­work in Perl. They’re obvi­ously rather proud of them­selves, and I under­stand that intern­ally the pro­ject is … […]

  • maui_project_28 wrote:

    Although I agree with the over­all sen­ti­ment with your art­icle (the BBC infra is def­in­itely way behind the times and com­pletely out of date, Perl on Rails seems insane to me even if it is a com­mend­able tech­nical achieve­ment, the BBC and Siemens JOINTLY move way too slowly), there are a couple of points worth correcting:

    - The BBC abso­lutely does con­trol this infra­struc­ture. Siemens just com­mis­sion hardware/software accord­ing to BBC spec. i.e. the BBC man­date that Siemens run Solaris and a home brew ver­sion of Perl (e.g. due to InfoSec require­ments). There’s an archi­tec­ture team in the BBC (FM&T) who spe­cify this stuff and are com­pletely empowered to change the stack if they want to. If you asks the Siemens’ archi­tects that sup­port the BBC they abso­lutely would not agree with the cur­rent stack and would love to be mov­ing this stuff for­ward.
    – You can’t say Siemens as a tech­no­logy sup­plier does not have inter­net ops exper­i­ence because then you are imply­ing that the BBC does not have that exper­i­ence. Almost all of the staff there were transitioned from the old BBC Technology — they just changed employer, and the BBC very much have con­trol of the steer­ing wheel.

    Maybe part of the prob­lem is the half-heartedness of the out­sourcing deal in the inter­net area (I can’t com­ment about other parts of the out­sourcing deal). It seems they’ve only partly out­sourced whilst try­ing to con­trol everything from a single point. Maybe fully out­sourcing or fully insourcing would be a more pro­duct­ive environment?

  • @maui_project_28: whilst the BBC does have nom­inal con­trol of the infra­struc­ture, at a prac­tical level it’s taken five years to get Perl 5.8 avail­able (and it’s still not live) simply due to delays in the pro­vi­sion­ing of hard­ware and test­ing soft­ware.
    If the BBC were in con­trol, I know for cer­tain it would have taken weeks, maybe months at the out­side.
    Sure, there are prob­ably some people work­ing for the sup­plier who want the archi­tec­ture to move for­ward just as there are many people at the BBC who want to ditch Perl — the trouble is they’re not the people call­ing the shots. I spent a great deal of time work­ing with the Architecture team because I was run­ning sev­eral large tech­no­logy pro­jects, and believe me they are not empowered to change the stack. Even with the BBC 2.0 pro­ject the new Java stack is some­thing that will go through huge exec­ut­ive review before it gets signed-off. I heard of at least one highly-placed per­son at the BBC who has assigned them­selves veto power over these new developments.

    Siemens as a sup­plier has had almost 100% staff turnover in their internet/unix oper­a­tions since the out­sourcing of BBC Technology. I think there was only one ori­ginal staff mem­ber still at Siemens when I left, though there may still be oth­ers lurk­ing in the shadows.

  • […] Perl on Rails — Why the BBC Fails at the Internet | I Am Seb Ugh, Siemens. (tags: siemens bbc busi­ness cor­por­ate infra­struc­ture perl rails out­sourcing oper­a­tions inter­net enterprise) […]

  • nicolaw wrote:

    “Yes, that’s right, Siemens forks Perl to remove fea­tures that their engin­eers don’t like.”

    That state­ment is mis­lead­ing and incor­rect. BBC Technology (later sold to Siemens Business Services) was instruc­ted by the BBC to secur­ity audit all code before it was installed on the BBC web serv­ers. This included (as man­dated and required by the BBC) remov­ing any code that would make sys­tem calls or dir­ect unfiltered/unmoderated disk I/O, to name but a couple of requirements.

    The prob­lems that you doc­u­ment in this post where there long before BBC Technology was sold.

  • peter wrote:

    Bravo! This is exactly the sort of post I wanted to write, but I didn’t feel I had enough details to do so. You prob­ably saw my com­ments (and the response) on the ori­ginal post. As a licence payer, this state of affairs seems crazy. The BBC should be a beacon of pro­gress­ive devel­op­ment, but it seems to be con­ser­vat­ive old Auntie on the tech­no­logy front.

  • @nicolaw: Yeah, I know that a lot of the mess is leg­acy and some of it is due to con­flict­ing internal pres­sures at the BBC. However, hav­ing a man­date to tighten secur­ity of code doesn’t require strip­ping out parts of a stand­ard lan­guage, without doc­u­ment­ing those changes for developers, on serv­ers where code can­not be deployed by the BBC developers because even a single line change has to undergo rig­or­ous review by a Siemens engin­eer. (We missed you after you left — my raised tasks went from an aver­age of a couple of weeks to an aver­age of a couple of months to close.)

    Regardless of where the prob­lems ori­gin­ated, wouldn’t you agree that after four years some­thing should have been done to address the problems?

  • seanmill wrote:

    “…plan­ning to deploy an archi­tec­ture based around Java, Tomcat, Hibernate, Velocity, and MySQL. Whilst I dis­agree with the choice of tech­no­logy for many reas­ons” Just out of interest, what are some of these reas­ons and what might you suggest?

  • rickbradley wrote:

    Hasn’t any­one @ BBS or Siemens ever heard of Perl’s taint check­ing feature??

  • […] “Perl on Rails is a pro­ject by the smart chaps over in BBC Audio and Music Interactive that rep­lic­ates the Ruby On Rails MVC frame­work in Perl. They’re obvi­ously rather proud of them­selves, and I under­stand that intern­ally the pro­ject is mak­ing waves. Whilst I applaud the tech­nical achieve­ment of the indi­vidual developers, I deplore the situ­ation that has forced them to do this.” — iamseb.com […]

  • howgoodisthis wrote:

    This is a bril­liant art­icle. I’d scratched my head until my scalp became raw over how the world’s largest and most respec­ted news broad­caster could sim­ul­tan­eously have one of the stu­pid­est and ugli­est web sites ima­gin­able — made to look all the more Web1.0 by the advert­ise­ments they insert ran­domly on the inter­na­tional ver­sion and their baff­ling con­tinu­ance of Real (fake) Video.

    This piece makes it clear as to why the beeb has failed so miser­ably on iPlayer too. I dread to think what appalling deals with utterly inap­pro­pri­ate com­pan­ies have been done using licence fee pay­ers money on that debacle.

  • […] I Am Seb: Why the BBC Fails at the Internet Terrifying blog post on tech­nical trav­ails at the BBC (tags: bbc siemens tech­no­logy man­age­ment outsourcing) […]

  • […] I came across this post whilst catch­ing up on UA. Reading has brought back some of the more pain­ful and frus­trat­ing times […]

  • nicolaw wrote:

    @rickbradley: Yes, both the BBC and Siemens have heard of taint check­ing. It doesn’t solve everything, and in some situ­ations it makes the prob­lems in hand worse.

  • The infra­struc­ture behind the BBC’s Journalism web­sites — http://www.bbc.co.uk/news and http://www.bbc.co.uk/sport being the big ones — is set up in quite a dif­fer­ent way. Most of the oper­a­tional work is handled by BBC admin teams.

  • […] post derid­ing the BBC’s reli­ance on Siemens has made a few waves, being picked up on Daring Fireball and Kottke.org. Unfortunately I think […]

  • […] it’s heart-warming to me to learn of the right royal mess the Beeb are in in Why the BBC Fails at the Internet and work­ing with anti­quated, hobbled, out-sourced perl. What a mess, no won­der people left, but […]

  • willard wrote:

    A lot of the “Siemens are the bad guys” points are, as some oth­ers have already sug­ges­ted, a bit mis­dir­ec­ted. Its the beeb which is quite frankly a slow over­sized unwieldy beast. Let me remin­isce about my time..
    I joined a cer­tain web team (not radio — who, I have to say, like IF&L were far whiz­zier with their tech than the rest of the beeb*. I worked along­side some really inter­est­ing and tal­en­ted folk. Most had degrees in design or com­puter sci­ence. So I figured they must be doing really cool com­plex stuff? No sadly not. From the pro­gram­ming side of things you spent your days restric­ted to 4 year old tech­no­logy work­ing purely in HTML and lame restric­ted javas­cript. The SSI tweak­ing as men­tioned above was done for two reas­ons I always felt: 1. To make a clever dynamic look­ing thing dynamic and most import­antly 2. To stop brain rot. From the design side of things, when a inter­est­ing pro­ject did pop up on the radar where did it go? No, not the 31k salar­ied, very exper­i­enced design­ers but out­sourced to some com­pany will­ing to way under­cut the inside team purely to say “we work for the bbc”. Shocking state of affairs.
    I clearly remem­ber a con­ver­sa­tion with a line man­ager “I can code in PHP, Perl, Java.. can I have a tinker with some of these things instead of poxy SSI’s” “Afraid not.. you don’t have the cor­rect job title”. What a dull place. So I left.. 

    *NB: If you think “bbc” and think “bbc news online” and noth­ing more ignore about 70% of every­ones comments/this art­icle. BBC news works out­side of the rest of the corp and does things com­pletely dif­fer­ently — a lot of the times better..

  • […] is very high, even more remark­able when you con­sider that the tech­nical folk at the BBC are con­strained in what they can do as a large part of their ser­vices are out­sourced . However they come up with […]

  • brd87 wrote:

    Excellent art­icle. Just look­ing to spec a BBC pro­ject that in the real world would be straight for­ward and scal­able, and real­ising that in the BBC envir­on­ment it’s going to be an abso­lute mare and ser­i­ously compromised. 

    Having also worked on the JAM pro­ject and used the ridicu­lous M$ IIS fudge it ran on — it seems that (for whatever reason) the BBC are determ­ined to make things as dif­fi­cult as pos­sible for external suppliers.