BBC News CPS for mobile
My role is as a Senior Software Engineer working on the Journalism Content Production System, which is the main content production and publishing system which delivers primarily the News and Sport sites. I have recently been working on delivering the new mobile site for BBC News and Sport.
For historical reasons the News and Sport mobile sites were produced by a separate system, driven by XML feeds from the CPS. This approach worked well for a number of years but the limitations of the content allowed in the feed, such as no related stories, plus slow publishing speeds caused by additional steps in the chain, meant it was time to look at publishing the mobile site in a more direct fashion.
Stories in CPS are written as a mix of custom BBC tags and raw HTML. The editing tools allow the journalist a lot of scope to express themselves as they wish, but it makes creating a valid XHTML output from the content quite a challenge.
The previous method for mobile publishing only had access to a limited set of the CPS content and many of the more complex editorial challenges of making content suitable for mobile were side-stepped. The content of stories was stripped down, for instance with all quotes and links removed. Only a limited set of the sections from the website was in use.
This made creating an XML representation of the story simpler, but for our new project we wanted to show as much of the story content as possible. I needed to try to contain the story, tame it and ensure the rest of the system only ever saw the XML view of the story. This is all about making the content offering on mobile devices richer and more optimised, developing business logic to make conscious decisions about which content is most suitable for different devices.
The conversion process had to process the content to be able to generate an XHTML output. This also provided a number of other benefits such as allowing the use of Xpath to interact with sub-sets of the story model and the use of XSL transforms to create subviews of the content for other systems.
Another area which required work was to allow for mobile contextual views of the content to be created, including list of stories in a section on the website to be calculated. The small screen size and differing capabilities of a mobile phone mean that although you might be able to cram a full fat web story onto a mobile, it may be not much use to our audience. There is also no point showing a story which contains lots of video and very little textual content to a mobile device if the video is not available in a suitable format for the device to play.
One of the main lessons from this project has been that there are downsides to building a very highly configurable system, as the CPS system is. Over the lifetime of such a system it becomes increasingly flexed in different ways. When a major piece of work arises, such as this project, this can be quite a challenge, as the system is not just the code - it is also captured in thousands of configuration settings in databases and configuration files and working practises based on how people have learnt to use the system over time. For context, we have about 1,000 journalists using the CPS on a regular basis.
Luckily we still have a number of long-serving old hands, with experience of the history of the system, who provided invaluable guidance. The important distinction is to try to keep functionality defined in the code, which provides testability, but to keep editorial decisions in the configuration layer and data. This separation can become unclear over time in a mature system with more than one way of approaching a task, so it is important to keep track of work-arounds and hacks.
We are currently working on a project to refactor the outputs from the CPS to generate XML output for all content and remove much of our presentation clutter and custom tags. The developments from the mobile project will be incorporated into this project, and will help this new cleaner content rendering to be more informed about how our journalists work and improve how our content needs to be structured.
Paul Caporn, Senior Software Engineer, BBC Future Media and Technology, Journalism