Welcome to the Web Application Development Platform ('Platform' for short) web site. This is the BBC's platform for building online applications. The Future Media (FM) division is responsible for all of the BBC's digital media services. In the past, FM built applications and services on an infrastructure well suited to handle static content and simple functionality.
The current platform is designed for resilience, scalability and complex functionality. This makes it easier for the BBC to build the large, scalable applications needed to handle the BBC's increasingly global audience.
The platform architecture
What is the Platform?
The Platform is part of the BBC-wide infrastructure that provides digital services to all BBC users. It is run by the Online Technology Group (OTG) within Future Media.
The BBC's application development platform has several parts
A secure, shared development environment on the Internet, that we call the Greenhouse. It provides this standard set of tools and environments to make it easier to develop web-based applications.
The Greenhouse is the heart of the Forge platform for most users. It provides the tools and environments needed to work on the platform, as well as much of the documentation, projects and information you'll need to get going.
- Confluence, a wiki, is the Platform dashboard. That is where we keep most documentation about the Platform and the projects being developed
- Jira, ticket system for raising requests and for workflow management; and for tracking issues and bugs. It is also used for agile development and project management
- Subversion (SVN), software code repository
- Hudson, our system for deploying projects; an easy-to-use continuous integration system, suitable for agile development by helping developers to integrate changes to their projects and obtain fresh builds
- Maven 2, a project management and build tool which uses Project Object Models (POM) and works alongside Hudson
- Eclipse, an integrated development tool (IDE) is also used by many developers working on the Platform
- The Sandbox, a virtual machine image on your computer that simulates the development environment with core Platform software. It allows you to build, run and test applications locally so you can get started developing straight away. It allows you to try out your code before committing it to the repository
A set of shared services and components available for development teams.
- standard services delivered as part of the platform such as ActiveMQ, MySQL and KV Store
- generic services designed to be used by all, such as BBCiD and GamesGrid
- and frameworks such as Barlesque to deliver standard components (e.g. headers, logos etc.) along with development frameworks such as Spring and Zend
Help and guidance
Formal support, access to an expert team of performance testers, training and an Outreach (technical design support) programme, within a lively development community.
Technical information for developers
To develop on the Platform you will need to understand and have skills in most of the following areas. Don't worry if you don't know all of it, we offer plenty of guidance and support. But if this whole section looks alien, sorry, the Platform won't be the right place for you.
Design with security in mind
We use the "Common Weakness Enumeration" model (among other things) for reviewing software weaknesses. We expect all application designers to be aware of the Top 25 Software Weaknesses and to build in defenses against exploits and other weaknesses from the start.
Your application must gain approval from the BBC's Information Security programme. We will help you get that approval but it is much harder if you have to add it in later.
The Platform is designed for resilience and high scalability. We provide the tools and the environment plus support, technical guidance and evolving documentation to help you. In return, we expect you to build high quality products. To go live, your application must play nicely... we expect all products to exist harmoniously within our platform. That means you must also:
- ensure suitable monitoring is in place
- follow our guidelines, especially in regard to scalability and graceful degradation when it is necessary
- write robust supporting documentation (e.g., run books, troubleshooting guides) in our wiki
Our aim is not to be too rigid or prescriptive. We encourage new ideas and welcome discussion for improving the Platform.
For client-side or web development
If your focus will be on the user experience, you will need to have the following:
Essential knowledge and experience
- Evidence of using PHP and web development frameworks
- Proven knowledge and commercial experience of designing and using RESTful interfaces, open standards and protocols
- Demonstrable experience of PHP good practice - especially around security (validation, XSS defence etc.) and performance (code optimisation, caching etc)
- An understanding of tiered or service-oriented architectures (SOA). Although the Platform may look like it is LAMP (Linux, Apache, MySQL, Php), in structure the Page Assembly Layer (PAL) is LAP and all data operations are delivered using a service layer so there is no direct access to MySQL from Php.
- Working collaboratively with other teams on shared code base
- Working with code repositories (e.g. SVN), bug tracking tools (e.g. Trac, JIRA) and online documentation such as Confluence
Desirable knowledge and experience
- Building interfaces to multiple web services, feeds and APIs
- Knowledge of user experience design and information architecture principles and techniques
- Experience handling accessibility requirements
For Java development
If your focus is on server-side or service application development, you will need to have the following:
Essential knowledge and experience
- Strong background in software development with evidence of using Java to program applications
- Thorough grounding in modern Java programming styles, particularly using Spring and Hibernate
- Solid evidence of building large scale web applications in a tiered environment
- Be able to demonstrate use of design patterns, particularly MVC
- Demonstrate competence in using build tools, unit testing and other software practices, particularly Maven 2
- Good understanding of development tools such as continuous integration and their appropriate use in development lifecycle
- Experience of working with code repositories (e.g. SVN), bug tracking tools (e.g. Trac, JIRA) and online documentation such as Confluence
Desirable knowledge and experience
- Working knowledge of at least one other programming language
- Some knowledge of scripting languages such as PHP would be advantage
- Experience of working with large-scale web production environments, ideally in a media company
The Platform development and deployment process
To start using the Platform, you need a certificate. If you ...
- have a valid BBC email address, you already have a "desktop" certificate with access to the wiki. You will need to request a developer certificate to access all of the Greenhouse tools. See BBC Desktop Certificates for more information.
- do not have a valid BBC email address you should be aware that we restrict access to the Platform to individuals who are working on specific projects and have signed a Non-Disclosure Agreement. If you believe that you should have a certificate already, ask your BBC contact for help.
- do not yet have a contract with the BBC, see Supplying the BBC for more information.
At the heart of Platform security is the idea of a digital certificate, which is a way of managing security over the internet. A certificate acts as your credentials in pretty much the same way as a password, or an RSA token or the Chip-and-PIN combination works on your credit card. To gain access to the Platform, you will need to install a certificate in your browser. The certificate will be created for you by the BBC's "certificate authority" (CA). There is a wealth of information about certificates on the Internet, but we suggest you look at this site:
Certificates are a good way of managing secure access to the Platform because it creates a secure connection between your PC or laptop and the systems you are using - all over SSL. This means that once everything is set up, it is hard for anyone else to pretend to be you or compromise the systems for malicious reasons. Of course, it also means you should be careful with your computer, but that is true anyway!