Launchpad manual for developers¶
The Launchpad manual for developers is the most comprehensive resource for anyone looking to contribute to Launchpad.
We are always working to improve the user experience and other features of this platform and we rely on contributors like you to make this happen. There are different ways to contribute to launchpad as a developer including proposing new features, triaging and fixing bugs, and testing features.
This manual shows you how to handle different tasks from downloading the source code and creating new pages to fixing bugs and contributing changes to Launchpad.
In this documentation¶
Setup and first steps¶
Get started with Launchpad core development by downloading the source code, running Launchpad locally, or even deploying Soyuz on your machine for local builds.
Get started: Get the Launchpad source code • Run Launchpad locally with quick setup • Run Launchpad locally with advanced setup • Database setup
Local deployment: Deploy Soyuz locally • Develop with Buildd • Use codehosting locally
Day-to-day development¶
Guidelines and instructions for routine development tasks, from fixing bugs to submitting database schema changes. Explore common workflows and processes required to implement and ship changes in Launchpad.
Workflows: Contribute changes • Creating a new page in Launchpad • About Launchpad branches • Pre merge reviews • Journey of a change to production
Database changes: Database schema changes process • Apply database schema changes
Common tasks: Fix bugs • Use an updated dependency • Handle exceptions • Handle security policies • Datetime usage guide • Error explanations • Feature flags
Operating Launchpad¶
Manage, maintain, and monitor Launchpad services and environments in real time, including operating the build farm, checking frontend availability, user management, and utilizing diagnostic CLI tools.
Build farm & publishing: Get overview of build farm • Create a job to publish an artifact
Environment administration: Check availability of frontends • Manage users and teams in development environments • Build and publish Launchpad development LXD images
Bugs: Triage Launchpad project bugs • Tagging bugs about Launchpad
Diagnostic tools: Use lp-shell • Generate Launchpad API docs
Testing, debugging and troubleshooting¶
Verify the quality of your code and resolve issues effectively using Launchpad’s testing and debugging suites. Learn how to execute tests, troubleshoot breakpoints, and integrate debugging tools into VS Code.
Core concepts and architecture¶
Understand the foundational design, vision, and internal architecture that power Launchpad. Explore the philosophical goals, values, and essential components that define the framework and its application flow.
Vision & values: What is Launchpad? • Launchpad values • Launchpad strategy • About Launchpad security
Internal components: Navigation menus • URL traversal • Registry • Engineering overview translations
Framework & environment: Application framework • Code concepts • The Launchpad PPA • Navigating the tree • Launchpad pip integration • Launchpad installation details • Building live filesystems
Database¶
Explore Launchpad’s relational database layer, its performance optimization strategies, and schema management practices. Understand workflows for executing database migrations, renaming tables, and maintaining query efficiency.
Relational database fundamentals: Database overview • PostgreSQL and Launchpad • Storm migration guide • Working with db-devel
Performance & optimization: Database performance • Live database patching • Preserve query count
Schema management: Rename a database table
Development best practices¶
Coding style guides, architectural rules, and security policies used to maintain the quality of the codebase, from use of assertions to preferred Python conventions.
Standards & guidelines: Architectural guide • Python style guide • XXX policy • Assertions in Launchpad • Launchpad permissions
Process & infrastructure: Bug triage process background • Charm development • Code import in depth
Testing & UI reuse: Page tests • About Launchpad performance • Template reuse
Frontend development¶
Build and test Launchpad’s client-side user interface using standard assets and frameworks. Understand the JavaScript build system, styling standards, and testing interfaces.
JavaScript & testing: JavaScript build system • Integration testing in JavaScript • Developing with YUI Test • Use MockIo library
Static assets & styling: Static assets overview • CSS • CSS sprites • Favicons • Images • CSS style guide
Services and components¶
Background services and standalone modules that support Launchpad including the build farm, git/code hosting, mail services, and packaging pipelines.
Build & package pipelines: Build farm • Signing service • Fetch service • Buildbot • Ubuntu package publishing • Ubuntu archive publisher
Code & git hosting: Git hosting • Code import • Code
Infrastructure services: Automatic translations tarball exports • Mirror prober • Ubuntu mirrors index • Malone
Mail services: Launchpad public mailing lists archives • Launchpad and email • Mail
How this documentation is organized¶
This documentation uses the Diátaxis documentation structure.
The Tutorial takes you step-by-step through common development tasks in Launchpad.
How-to guides assume you have basic familiarity with Launchpad. They cover setting up a development environment, contributing changes, and operating a Launchpad instance.
Reference provides specifications of Launchpad services and coding style guides.
Explanation includes background on key concepts, development best practices, and the deployment process of Launchpad.