0

Celebrating community contributions

Published by clinton-fung April 25, 2025 in General

The Launchpad project is almost 21 years old! Many people have contributed to the project over this lifetime, and we are thankful for all of them. We understand the value of a strong community and we are taking steps to reinvigorate Launchpad’s once-thriving community.

There are two common suggestions for getting started in open source: fixing bugs and contributing to documentation. Early in 2024, Canonical launched the Canonical Open Documentation Academy; an initiative that aims to break down barriers to open source contribution, and work with the community to raise the bar for documentation practice. The Open Documentation Academy has been helping people get involved in open source and has also been helping projects achieve ever higher standards in documentation. Launchpad is one such project.

Today, we recognize and celebrate our community contributors. We hope they enjoyed contributing to Launchpad as much as we enjoyed working with them!

– gerryRcom

– Jared Nielsen

– Adriaan Van Niekerk

– Nathan Barbarick

Thank you for helping to make Launchpad great!

commit f980cfb3c78b72b464a054116eea9658ef906782
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Mon Oct 14 15:39:27 2024 -0400

    Add debugging doc; fix broken links (#108)
    
    * Add debugging doc; fix broken links
    
    * fix broken links in debugging.rst
    
    * fix spelling errors
    
    * fix spelling errors
    
    * fix spelling errors
    
    * fix debugging link
    
    * fix lots of formatting on recovered debugging.rst page
    
    * add debugging.rst page into Launchpad development tips
    
    ---------
    
    Co-authored-by: Alvaro Crespo <alvarocrespo.se@gmail.com>

commit c690ef5c7ed2d63d989c1f91b2883ed947904228
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Wed Oct 9 14:32:59 2024 -0400

    Add database table page; fix broken link (#107)
    
    * Add database table page; fix broken link
    
    * add spell check errors to custom_wordlist
    
    * add rename-database-table to how-to/index.rst
    
    * fix reference link to rename-database-table page in live-patching.rst explanation doc
    
    * format rename-database-table to show as sql code
    
    ---------
    Co-authored-by: Jared Nielsen <nielsen.jared@gmail.com>
    Co-authored-by: Alvaro Crespo <alvaro.crespo@canonical.com>

commit 5b319ab2899a326b7e96a5c001965e486a445448
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Wed Oct 9 12:20:24 2024 -0400

    Add missing codehosting doc; fix broken link (#106)
    
    * Add missing codehosting doc; fix broken link
    
    * add codehosting-locally to index.rst
    
    * add spell check errors to custom_wordlist
    
    * fix reference link for codehosting-locally in code.rstexplanation section
    
    ---------
    
    Co-authored-by: Jared Nielsen <nielsen.jared@gmail.com>
    Co-authored-by: Alvaro Crespo <alvaro.crespo@canonical.com>

commit 1fcb3a9588bcb62132ce0004bb98f54e28c6561c
Author: Nathan Barbarick <nathanclaybarbarick@gmail.com>
Date:   Mon Sep 30 11:08:39 2024 -0700

    Group articles of the Explanation section into proper subsections (#97)
    
    * Remove How to go about writing a web application, per jugmac00.
    
    * Group articles in the Explanation section into subsections, add introductory text.
    
    * Add new sections for remaining ToC headings.
    
    * Add codehosting.png, fix broken link (#104)
    
    * add codehosting.png, fix broken link
    
    * delete linkcheck_ignore item
    
    * remove accessibility, upstream, and schema links (#102)
    
    * add concepts.rst, fix broken link in code.rst (#105)
    
    * add concepts.rst, fix broken link in code.rst
    
    * add spellcheck errors to custom_wordlist
    
    * add concepts to index.rst
    
    * Add descriptions in the explanation index and move new concepts page.
    
    ---------
    
    Co-authored-by: Jared Nielsen <nielsen.jared@gmail.com>

commit ce5408a8ba919d22c5f5f01ff0396e1eb982d359
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Thu Sep 12 08:11:00 2024 -0400

    add concepts.rst, fix broken link in code.rst (#105)
    
    * add concepts.rst, fix broken link in code.rst
    
    * add spellcheck errors to custom_wordlist
    
    * add concepts to index.rst

commit eb5a0b185af6122720d44791aa8c98d52daf93e5
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Fri Sep 6 04:00:51 2024 -0400

    remove accessibility, upstream, and schema links (#102)

commit 766dc568b06e49afbb831c25a6163be31ab5064a
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Thu Sep 5 03:09:19 2024 -0400

    Add codehosting.png, fix broken link (#104)
    
    * add codehosting.png, fix broken link
    
    * delete linkcheck_ignore item

commit 317437262dd6d21bbb832e9603e4f84dbd4095b6
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Fri Aug 16 15:02:25 2024 -0400

    add 'Soyuz' link (#103)

commit f238c1f4e2322d5ad31c9d86615108856c9f8dfc
Author: gerryRcom <gerryr@gerryr.com>
Date:   Wed Jul 24 06:01:27 2024 +0100

    oda spelling check on code doc (#90)
    
    * oda spelling check on code doc
    
    * oda spelling check on code doc
    
    * Update .custom_wordlist.txt
    
    ---------
    
    Co-authored-by: Jürgen Gmach <juergen.gmach@canonical.com>

commit ff237feec8ee9fd6530ccd0aa1f940939ddedee0
Author: Adriaan Van Niekerk <144734475+sfadriaan@users.noreply.github.com>
Date:   Tue Jul 23 14:44:29 2024 +0200

    Check Spelling errors (Storm migration guide) (#92)
    
    * Remove Storm Migration Guide from exclusion list
    
    * Update code inline formatting and correct spelling errors
    
    * Add accepted words

commit 8500de5b96e4949b23d6c646c65272b9c8180424
Author: Adriaan Van Niekerk <144734475+sfadriaan@users.noreply.github.com>
Date:   Tue Jul 23 11:05:04 2024 +0200

    Check Spelling (Database Performance page) (#91)
    
    * Remove database performance page from exclusion
    
    * Add accepted words
    
    * Correct spelling errors

commit 06401ea4f554bd8eff483a03c5dea2508f942bdd
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Wed Jul 17 11:13:05 2024 +0200

    Correct spelling errors

commit 9eb17247c1100dc7c23dcb2a0275064ed1dc7a19
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Wed Jul 17 11:11:13 2024 +0200

    Add accepted words

commit a539b047d012d5078b097041d9072937d2247704
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Wed Jul 17 11:10:59 2024 +0200

    Remove "Security Policy" from exclusion list

commit 7708a5fa7b6ed6c0856fa2722f917228c9127eb0
Author: Adriaan Van Niekerk <144734475+sfadriaan@users.noreply.github.com>
Date:   Wed Jul 17 08:13:34 2024 +0200

    Spell check (URL traversal + Navigation Menus) (#87)
    
    * Remove Navigation Menu page from exclusion
    
    * Add words to be excluded from spell check
    
    * Correct spelling errors
    
    * Remove "url-traversal" from exclusion list
    
    * Update list of accepted words
    
    * Update formatting and correct errors
    
    ---------
    
    Co-authored-by: Jürgen Gmach <juergen.gmach@canonical.com>

commit e952eb0aa98fe33a20517b82640d88c2c6a8fc5f
Author: gerryRcom <gerryr@gerryr.com>
Date:   Mon Jul 15 20:17:36 2024 +0100

    oda spelling check on branches doc

commit 46170ead6fe34fde518fe8848e3d321b57506875
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Mon Jul 15 11:02:57 2024 +0200

    Update formatting of URLs

commit 124245b2b4b5699596e7039f09f6d1f3211b409f
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Mon Jul 15 11:00:22 2024 +0200

    Remove Launchpad Mail page from exclusion list

commit 141aa07f62d47e7b25581c113fe222679ca9135d
Author: gerryRcom <gerryr@gerryr.com>
Date:   Wed Jul 10 20:12:47 2024 +0100

    oda spelling check on ppa doc

commit bdea1e1d11e88255eed19e335d840a278cefb134
Author: gerryRcom <gerryr@gerryr.com>
Date:   Wed Jul 10 20:08:37 2024 +0100

    oda spelling check on ppa doc

commit 7a960016415d32bae99bccac8e7ee634d7034ce7
Merge: 1c6506b 3e12837
Author: gerryRcom <gerryr@gerryr.com>
Date:   Tue Jul 9 17:47:06 2024 +0100

    Merge branch 'main' into spelling-feature-flags-doc

commit 1c6506b7e971fed802b3dfc85abc29bc0a075450
Author: gerryRcom <gerryr@gerryr.com>
Date:   Fri Jul 5 20:06:05 2024 +0100

    oda spelling check on feature-flags doc

commit 27b2aa62c48dde374d4e27fae671b061eb97a46f
Merge: acb3847 d32c826
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Fri Jul 5 16:03:01 2024 +0200

    Merge branch 'main' of https://github.com/canonical/launchpad-manual into javascript-buildsystem-page

commit 3dc90949b0bd2136347916be1b4b05e0041b2d54
Merge: 053a960 f193109
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Fri Jul 5 14:07:59 2024 +0200

    Merge branch 'main' of https://github.com/canonical/launchpad-manual into fix-spelling-issues

commit 053a96086a8e649f0b135aa6eeb942b858f7ba5b
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Fri Jul 5 13:59:34 2024 +0200

    Add word to resolve conflict in pull request

commit f19310999278be18a3d92443a7b22cf1b0e7e441
Author: gerryRcom <gerryr@gerryr.com>
Date:   Thu Jul 4 21:18:04 2024 +0100

    oda spelling check on testing doc

commit 93e5fb8d8356b70b52401c69e7884a1dea2e8b46
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 18:44:24 2024 +0200

    Remove exclusion added via rebase

commit d75ca31d26bd1731db6fad08c94c7d99bebc02c3
Merge: 54b74c2 5a2f090
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 18:09:04 2024 +0200

    Merge branch 'fix-spelling-issues' of https://github.com/sfadriaan/launchpad-manual into fix-spelling-issues

commit 54b74c252952c5de24c0e232bbbe560f9c4c416e
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:50:08 2024 +0200

    Correct spelling errors, verified by external documentation, converted to en-gb and corrected formatting

commit f1c66b1ce59f6af9a678f86f6b4fa637df91bcb3
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:48:48 2024 +0200

    Add correctly spelled words picked up by spell checker

commit 73f12ca01f9cce4414702674cd24dc3d38e49304
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:47:42 2024 +0200

    Remove javascript-integration-testing page from the exclusion list

commit acb384767214e3d432eafe062a2fb646f3c31938
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 16:07:25 2024 +0200

    Update mailing list URL, spelling error correction

commit da06505e8a3431d50a815d16ca4f89a5d66c7a41
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 16:06:52 2024 +0200

    Remove javascript-buildsystem from exclusion list

commit 2318addb0ea19de7813b5f6b16efc43d21584659
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 16:06:24 2024 +0200

    Add words to exclusion list

commit 5a2f090a2da9083b3c3b658592ec43595e78eb0e
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:50:08 2024 +0200

    Correct spelling errors, verified by external documentation, converted to en-gb and corrected formatting

commit ce333446e7c7501629d3ceab239183aed64af319
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:48:48 2024 +0200

    Add correctly spelled words picked up by spell checker

commit 7649b104c9439dda5f938b2e0153e4d1c45f21b4
Author: Adriaan van Niekerk <adriaan.vanniekerk@canonical.com>
Date:   Thu Jul 4 10:47:42 2024 +0200

    Remove javascript-integration-testing page from the exclusion list

commit 017d19761d96d9c04a1ea61ac0e77bcf6a7b7cab
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Wed Jul 3 11:42:33 2024 -0400

    Fix 'Loggerhead' link

commit fda0691919cd849ff4c6ee24e4dc1e3d5e6b1682
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Wed Jul 3 11:32:15 2024 -0400

    Fix 'UI/CssSprites' link

commit f26faaef61e5ef48140bd2f84630c5d624041dad
Author: gerryRcom <gerryr@gerryr.com>
Date:   Wed Jul 3 09:18:02 2024 +0100

    oda spelling check on translations doc

commit 13cb12c45e1a5826d27eaf497b7e6a2605d7ec6d
Author: gerryRcom <gerryr@gerryr.com>
Date:   Tue Jul 2 19:41:38 2024 +0100

    oda spelling check on unittesting doc

commit cdab34e61a7c1009852a642e978b9027c2aad3d2
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Tue Jul 2 12:07:06 2024 -0400

    Fix 'Running' link

commit dbe279acfef9eb736735b04ba474801d3f58a3f0
Author: Nathan Barbarick <nathanclaybarbarick@gmail.com>
Date:   Fri Jun 28 19:55:08 2024 -0700

    Restructure navigation menu using subsections in how-to.

commit 8592ed544881d50877f036073a6eec9de2e6356d
Author: gerryRcom <gerryr@gerryr.com>
Date:   Sat Jun 29 09:49:34 2024 +0100

    oda spelling check on css doc

commit 90608989d15cf2dbdf9a538a03517c03d87a3658
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Sat Jun 29 03:54:27 2024 -0400

    Fix 'JavascriptUnitTesting' link (#72)
    
    Co-authored-by: Jürgen Gmach <juergen.gmach@canonical.com>

commit 61ab3a36a51cb6ee40d6132cc1028779115b8efd
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Sat Jun 29 03:43:47 2024 -0400

    Fix 'Help' link (#70)
    
    Co-authored-by: Jürgen Gmach <juergen.gmach@canonical.com>

commit 89f08619f4c1cbb6e82bc95fd3cdc30b802e9c37
Author: gerryRcom <gerryr@gerryr.com>
Date:   Fri Jun 28 19:52:32 2024 +0100

    oda spelling check on live-patching doc

commit 96924bd1cf580875d76ed28afa3db83d0d642247
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Fri Jun 28 08:44:30 2024 -0400

    Fix 'Getting'

commit be6124ff67fc89a604ebad566805e7e535a01377
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Fri Jun 28 09:00:41 2024 -0400

    Fix 'JavaScriptIntegrationTesting' link

commit da7f6bfa597f2ea1e8df57dbbec7217fd746268f
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Fri Jun 28 07:46:05 2024 -0400

    Fix 'FixBugs'

commit 2ca5b808797ccd2c24cfb65a06d98e1db844b1b1
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Thu Jun 27 11:02:31 2024 -0400

    remove underscores

commit 7577f7674066d4e1d974e956ab2506e0d6f5a89b
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Tue Jun 25 13:22:07 2024 -0400

    Fix '../Trunk'

commit deb42beb594b860356dfe11297516d26609d1018
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Thu Jun 27 11:52:33 2024 -0400

    Fix 'Database/LivePatching'

commit ded351427d3f694d16855f3b4c44e085eb4e551c
Author: gerryRcom <gerryr@gerryr.com>
Date:   Thu Jun 27 19:47:05 2024 +0100

    oda spelling check on merge-reviews doc

commit c07847f039bc9414410ebf134d263174004a0a67
Author: gerryRcom <gerryr@gerryr.com>
Date:   Thu Jun 27 08:22:23 2024 +0100

    oda spelling check on db-devel doc

commit 6a54f46fedfcfdb3385dd8ff5c2f1d4a9ce45f15
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Tue Jun 25 12:32:41 2024 -0400

    remove updated link from linkcheck_ignore

commit 6eedaa9f3d5eaee21242280b1ead71c376698c4e
Author: Jared Nielsen <nielsen.jared@gmail.com>
Date:   Sat Jun 22 12:59:24 2024 -0400

    Fix 'PolicyAndProcess/DatabaseSchemaChangesProcess'

commit 92d1b15eafc2a90a88e24afd5a6938f277314d8a
Author: gerryRcom <gerryr@gerryr.com>
Date:   Wed Jun 26 19:30:14 2024 +0100

    oda spelling check on css-sprites doc

commit aeb7e5c2d4186ba45cb3279e24c3716e7752b32c
Author: gerryRcom <gerryr@gerryr.com>
Date:   Tue Jun 25 20:06:46 2024 +0100

    oda spelling check on registry doc

commit 13eb716d534b41ee60ac6adbf8b9d8fb96ca96cd
Author: gerryRcom <gerryr@gerryr.com>
Date:   Mon Jun 24 20:00:43 2024 +0100

    oda spelling check on triage-bugs doc

commit b7ad120ca563e3a1ac82f5ec7c7742874b53d88b
Author: gerryRcom <gerryr@gerryr.com>
Date:   Mon Jun 24 19:51:08 2024 +0100

    oda spelling check on triage-bugs doc

commit a83419e47f21071ae53a7036210a7c650195e8ef
Author: gerryRcom <gerryr@gerryr.com>
Date:   Fri Jun 21 21:54:21 2024 +0100

    oda spelling check on schema-changes doc

commit 486b54241a46ec42f48a05a0081b238699c0557b
Author: gerryRcom <gerryr@gerryr.com>
Date:   Thu Jun 20 20:36:01 2024 +0100

    oda spelling check on submitting-a-patch doc

commit a890a576681258d647d20b8fdc5c80b14f490d94
Author: gerryRcom <gerryr@gerryr.com>
Date:   Tue Jun 18 20:09:14 2024 +0100

    oda spelling check on database-setup doc

commit b52d850a0d2456f7925a91cb3e2ff4a8c44711a5
Author: gerryRcom <gerryr@gerryr.com>
Date:   Mon Jun 17 12:18:09 2024 +0100

    oda spelling check on contribute-to doc

commit 074e13a662821ba17d1c99e2814ef38fe2206a01
Author: gerryRcom <gerryr@gerryr.com>
Date:   Fri Jun 14 13:17:53 2024 +0100

    oda spelling check on getting-help-hacking

commit 81b6f8025aecf35c48b6660510447e07910d4b8e
Author: gerryRcom <gerryr@gerryr.com>
Date:   Thu Jun 13 20:58:20 2024 +0100

    oda spelling check on explanation-hacking


0

Introducing Launchpad Bug Templates

Published by alvarocs December 3, 2024 in General

The new feature bug templates in Launchpad aims to streamline the bug reporting process, making it more efficient for both users and project maintainers.

In the past, Launchpad provided only a basic description field for filling bug reports. This often led to incomplete or vague submissions, as users may not include essential details or steps to reproduce an issue. This could slow down the debugging process when fixing bugs. 

To improve this, we are introducing bug templates. These allow project maintainers to guide users when reporting bugs. By offering a structured template, users are prompted to provide all the necessary information, which helps to speed up the development process.

To start using bug templates in your project, simply follow these steps:

For now, only a default bug template can be set per project. Looking ahead, the idea is to expand this by introducing multiple bug templates per project, as well as templates for other content types such as merge proposals or answers. This will allow project maintainers to define various templates for different purposes, making the open-source collaboration process even more efficient.

Additionally, we will introduce Markdown support, allowing maintainers to create structured and visually clear templates using features such as headings, lists, or code blocks.


3

Launchpad’s new homepage

Published by ines-almeida March 1, 2024 in General

Launchpad’s new homepage

Launchpad has been around for a while, and its frontpage has remained untouched for a few years now.

If you go into launchpad.net, you’ll notice it looks quite different from what it has looked like for the past 10 years – it has been updated! The goal was to modernize it while trying to keep it looking like Launchpad. The contents have remained the same with only a few text additions, but there were a lot of styling changes.

The most relevant change is that the frontpage now uses Vanilla components (https://vanillaframework.io/docs). This alone, not only made the layout look more modern, but also made it better for a new curious user reaching the page from a mobile device. The accessibility score of the page – calculated with Google’s Lighthouse extension – increased from a 75 to an almost perfect 98!

Given the frontpage is so often the first impression users get when they want to check out Launchpad, we started there. But in the future, we envision the rest of Launchpad looking more modern and having a more intuitive UX.

As a final note, thank you to Peter Makowski for always giving a helping hand with frontend changes in Launchpad.

If you have any feedback for us, don’t forget to reach out in any of our channels. For feature requests you can reach us as feedback@launchpad.net or open a report in https://bugs.launchpad.net/launchpad.

To conclude this post, here is what Launchpad looked like in 2006, yesterday and today.

Launchpad home page in 2006

Launchpad in 2006

Launchpad home page just before the redesign went live
Launchpad yesterday

Brand new Launchpad home page design
Launchpad today


0

Launchpad-linked federated Matrix accounts

Published by ines-almeida January 22, 2024 in General

Users can now add their Matrix accounts to their profile in Launchpad, as requested by Canonical’s Community team.

We also took the chance to slightly rework the frontend and how we display social accounts in the user profiles. Instead of having different sections in the profile for each social account , all social accounts are now all under a “Social Accounts” section.

Adding a new matrix account to your profile works similarly to how it has always worked for other accounts. Under the “Social Accounts” section in your user profile, you should now see a “No matrix accounts registered” and an edit button that will lead you to the Matrix accounts edit page. To edit, remove or add new ones, you will see an edit button in front of your newly added accounts in your profile.

We also added new API endpoints Person.social_accounts and Person.getSocialAccountsByPlatform() that will list the social accounts for a user. For more information, see our API documentation.

Currently, only Matrix was added as a social platform. But during this process, we made it much easier for Launchpad developers to add new social platforms to Launchpad in the future.


0

Self-service riscv64 builds

Published by Colin Watson November 22, 2023 in PPA

Launchpad has supported building for riscv64 for a while, since it was a requirement to get Ubuntu’s riscv64 port going. We don’t actually have riscv64 hardware in our datacentre, since we’d need server-class hardware with the hypervisor extension and that’s still in its infancy; instead, we do full-system emulation of riscv64 on beefy amd64 hardware using qemu. This has worked well enough for a while, although it isn’t exactly fast.

The biggest problem with our setup wasn’t so much performance, though; it was that we were just using a bunch of manually-provisioned virtual machines, and they weren’t being reset to a clean state between builds. As a result, it would have been possible for a malicious build to compromise future builds on the same builder: it would only need a chroot or container escape. This violated our standard security model for builders, in which each build runs in an isolated ephemeral VM, and each VM is destroyed and restarted from a clean image at the end of every build. As a result, we had to limit the set of people who were allowed to have riscv64 builds on Launchpad, and we had to restrict things like snap recipes to only use very tightly-pinned parts from elsewhere on the internet (pinning is often a good idea anyway, but at an infrastructural level it isn’t something we need to require on other architectures).

We’ve wanted to bring this onto the same footing as our other architectures for some time. In Canonical’s most recent product development cycle, we worked with the OpenStack team to get riscv64 emulation support into nova, and installed a backport of this on our newest internal cloud region. This almost took care of the problem. However, Launchpad builder images start out as standard Ubuntu cloud images, which on riscv64 are only available from Ubuntu 22.04 LTS onwards; in testing 22.04-based VMs on other relatively slow architectures we already knew that we were seeing some mysterious hangs in snap recipe builds. Figuring this out blocked us for some time, and involved some pretty intensive debugging of the “strace absolutely everything in sight and see if anything sensible falls out” variety. We eventually narrowed this down to a LXD bug and were at least able to provide a workaround, at which point bringing up new builders was easy.

As a result, you can now enable riscv64 builds for yourself in your PPAs or snap recipes. Visit the PPA and follow the “Change details” link, or visit the snap recipe and follow the “Edit snap package” link; you’ll see a list of checkboxes under “Processors”, and you can enable or disable any that aren’t greyed out, including riscv64. This now means that all Ubuntu architectures are fully virtualized and unrestricted in Launchpad, making it easier for developers to experiment.


0

Introducing Project-Scoped Access Tokens

Published by ines-almeida November 20, 2023 in General

Access tokens can be used to access repositories on behalf of someone. They have scope limitations, optional expiry dates, and can be revoked at any time. They are a stricter and safer alternative to using real user authentication when needing to automate pushing and/or pulling from your git repositories.

This is a concept that has existed in Launchpad for a while now. If you have the right permissions in a git repository, you might have seen a “Manage Access Tokens” button in your repository’s page in the past.

These tokens can be extremely useful. But if you have multiple git repositories within a project, it can be a bit of a nuisance to create and manage access tokens for each repository.

So what’s new? We’ve now introduced project-scoped access tokens. These tokens reduce the trouble for the creation and maintenance of tokens for larger projects. A project access token will work as authentication for any git repository within that project.

Let’s say user A wants to run something in a remote server that requires pulling multiple git repositories from a project. User A can create a project access token, and restrict it to “repository pull” scope only. This token will then be valid authentication to pull from any repository within that project. And user A will be able to revoke that token once it’s no longer needed, keeping their real user authentication safe.

The same token will be invalid for pushing, or for accessing repositories within other projects. Also note that this is used for ‘authentication’, not ‘authorization’ – if the user doesn’t have access to a given git repository, their access token will not grant them permissions.

Anyone with permissions to edit a project will be able to create an access token, either through the UI or the API, using the same method as to create access tokens for git repositories. See Generating Access Tokens section in our documentation for instructions and other information.
This feature was implemented on request by our colleagues from the ROS team. We would love to get some feedback whether this also covers your use case. Please let us know.


5

New domain names for PPAs

Published by Colin Watson February 16, 2022 in PPA

Since they were introduced in 2007, Launchpad’s Personal Package Archives (PPAs) have always been hosted on ppa.launchpad.net. This has generally worked well, but one significant snag became clear later on: it was difficult to add HTTPS support for PPAs due to the way that cookies work on the web.

Launchpad uses a cookie for your login session, which is of course security-critical, and because we use multiple domain names for the main web application (bugs.launchpad.net, code.launchpad.net, and so on), the session cookie domain has to be set to allow subdomains of launchpad.net. We set the “Secure” flag on session cookies to ensure that browsers only ever send them over HTTPS, as well as the “HttpOnly” flag to prevent direct access to it from JavaScript; but there are still ways in which arbitrary JS on an HTTPS subdomain of launchpad.net might be able to exfiltrate or abuse users’ session cookies. As a result, we can never allow any HTTPS subdomain of launchpad.net to publish completely user-generated HTML that we don’t process first.

We don’t currently know of a way to get ppa.launchpad.net to serve arbitrary HTML as Content-Type: text/html, but this is quite a brittle protection as there are certainly ways (used for things like installer uploads) to upload arbitrary files to ppa.launchpad.net under a user-controlled directory structure, and we don’t want the webapp’s security to depend on nobody figuring out how to convince a browser to interpret any of that as arbitrary HTML. The librarian is already on a separate launchpadlibrarian.net domain name for a similar reason.

To resolve this dilemma, we’ve added a new ppa.launchpadcontent.net domain name which supports both HTTP and HTTPS (and similarly private-ppa.launchpadcontent.net for private PPAs, which as before is HTTPS-only). add-apt-repository in Ubuntu 22.04 will use the new domain name by default.

The old names will carry on working indefinitely – we know they’re embedded in lots of configuration and scripts, and we have no inclination to break all of those – but we recommend moving to the new names where possible. ppa.launchpad.net will remain HTTP-only.

Some systems may need to be updated to support the new domain name, particularly things like HTTP(S) proxy configuration files and no_proxy environment variables.


2

Comment editing is now possible

Published by Thiago F Pappacena May 28, 2021 in General

It took a while, but now Launchpad finally allows users to edit their comments on questions, bug reports and merge proposal pages.

The first request for this feature dates back from 2007. Since then, Launchpad increased a lot in terms of new features, and the other priorities took precedence over that request, but the request was still more than valid. More recently, we managed to bump the priority of this feature, and now we have it: users are now allowed to edit their comments on Launchpad answers, bugs and merge proposals!

This has been available in the API for a few days already, but today we finally released the fresh new pencil icon in the top-right corner of your messages. Once you click it, the message is turned into a small form that allows you to edit your message content.

For messages that were edited before, it is possible to see old versions of that edited message by clicking the “last edit …” link, also at the top of the message.

In case you introduce sensitive information by mistake in your comment and need to remove it from the message history after editing it, you can always use the API to do so. We plan to add a remove button to the message’s revision history UI soon, to make this work easier.

The Launchpad team is proud of this new feature, and we hope that it will be useful for everyone! Let us know if you have any feedback!


0

Git Protocol v2 Available at Launchpad

Published by Thiago F Pappacena September 28, 2020 in Code, Performance

After a few weeks of development and testing, we are proud to finally announce that Git protocol v2 is available at Launchpad! But what are the improvements in the protocol itself, and how can you benefit from that?

The git v2 protocol was released a while ago, in May 2018, with the intent of simplifying git over HTTP transfer protocol, allowing extensibility of git capabilities, and reducing the network usage in some operations.

For the end user, the main clear benefit is the bandwidth reduction: in the previous version of the protocol, when one does a “git pull origin master”, for example, even if you have no new commits to fetch from the remote origin, git server would first “advertise” to the client all refs (branches and tags) available. In big repositories with hundreds or thousands of refs, this simple handshake operation could consume a lot of bandwidth and time to communicate a bunch of data that would potentially be discarded by the client after.

In the v2 protocol, this waste is no longer present: the client now has the ability to filter which refs it wants to know about before the server starts advertising it.

The v2 protocol is not the default on git clients yet, but if you are using a git version higher than 2.19, you can use v2: simply run git config --global protocol.version 2, and you will be using the most recent protocol version when communicating with servers that support this version. Including Launchpad, of course.

And even if you have repositories hosted in a server that is not yet compatible with v2, don’t worry: the git client is backward compatible. If the server does not support v2, git client should fall back gracefully to the previous version and everything should continue to work as expected. We hope you enjoy the new feature. And let us know if you have any feedback!


1

Login regression for users with non-ASCII names

Published by Colin Watson August 20, 2020 in General

On 2020-08-13, we deployed an update that caused users whose full names contain non-ASCII characters (which is of course very common) to be unable to log into Launchpad. We heard about this serious regression from users on 2020-08-17, and rolled out a fix on 2020-08-18. We’re sorry about this; it doesn’t meet the standards of both inclusion and quality that we set for ourselves. This post aims to explain what happened, technical details of why it happened, and the steps we’ve taken to avoid it happening again.

Read the rest of this entry »


Previous Entries