Explanation

Launchpad is a large platform built over many years. These pages explain the ideas behind the project, its components, and the best practices its developers follow.

The ideas behind Launchpad

Launchpad connects the people who make software with users and other developers, and offers the resources they need to make their software available. Understanding why Launchpad exists, whom it serves, and the values that guide it provides the context for everything else.

Core components and setup

Launchpad is made up of many components. Knowing how these pieces fit together helps you navigate the codebase, and design and test your changes.

Database

Launchpad uses PostgreSQL and depends on PostgreSQL-specific features. Its schema is patched on a live system and managed by Storm, the ORM Launchpad uses.

Developing for the Launchpad project

Contributing to Launchpad means working across several branches, guarding new behaviour behind feature flags, and guiding each change through review and into production. This day-to-day development is expected to follow specific processes and conventions.

Best practices for development

Launchpad aims to be fast and always available. It should also be safe to change parts of it with a low risk of breaking other parts of the system. These principles inform how its code is structured, how performance and permissions are handled, and how its templates and tests are written.

JavaScript

Launchpad’s front end is written in JavaScript built on the YUI library, with its own build system and both unit and integration test frameworks.

Static assets

Launchpad’s visual style comes from CSS and images that are compiled and optimized as part of the build using CSS sprites.