<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>General on Launchpad Blog</title>
    <link>https://blog.launchpad.net/categories/general/</link>
    <description>News and updates from the Launchpad team</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 07 Nov 2026 00:51:08 +0530</lastBuildDate>
    <atom:link href="https://blog.launchpad.net/feed/categories/general/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Introducing the new Launchpad blog</title>
      <link>https://blog.launchpad.net/general/introducing-the-new-launchpad-blog/</link>
      <pubDate>Sat, 07 Nov 2026 00:51:08 +0530</pubDate>
      <dc:creator>Guruprasad L</dc:creator>
      <guid>https://blog.launchpad.net/general/introducing-the-new-launchpad-blog/</guid>
      <description>&lt;p&gt;The Launchpad blog has moved from WordPress to a static site, built from the &lt;a href=&#34;https://launchpad.net/launchpad-blog&#34;&gt;launchpad-blog&lt;/a&gt; project on Launchpad.&lt;/p&gt;
&lt;p&gt;All the posts since 2007 have been carried over, and they are at the same URLs as before. Existing links to posts, categories, tags and authors keep working. If you follow the blog with a feed reader, you do not need to change anything. The feed is still at &lt;a href=&#34;https://blog.launchpad.net/feed/&#34;&gt;https://blog.launchpad.net/feed/&lt;/a&gt;, and old posts will not show up again as new ones.&lt;/p&gt;
&lt;p&gt;The old comments were not carried over, but you can still read them through the &lt;a href=&#34;https://web.archive.org/&#34;&gt;Wayback Machine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you find a broken link, a missing image or a post that does not look right, please &lt;a href=&#34;https://bugs.launchpad.net/launchpad-blog/+filebug&#34;&gt;report a bug&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Bug Tracking for PPAs Is Now Available in Launchpad</title>
      <link>https://blog.launchpad.net/general/bug-tracking-for-ppas-is-now-available-in-launchpad/</link>
      <pubDate>Wed, 21 Oct 2026 13:21:32 +0000</pubDate>
      <dc:creator>İlker Emre Koç</dc:creator>
      <guid>https://blog.launchpad.net/general/bug-tracking-for-ppas-is-now-available-in-launchpad/</guid>
      <description>&lt;p&gt;Launchpad now supports bug tracking for Personal Package Archives (PPAs). You can report and track issues against a PPA, individual source packages within it, and specific Ubuntu releases.&lt;/p&gt;
&lt;p&gt;This brings bug reports closer to the packages they concern, giving users a place to report problems and maintainers a clearer picture of what is affected.&lt;/p&gt;
&lt;h2 id=&#34;why-track-bugs-against-a-ppa&#34;&gt;Why Track Bugs Against a PPA?&lt;/h2&gt;
&lt;p&gt;PPAs let maintainers distribute packages outside Ubuntu’s official archives. Those packages might contain a newer upstream release, an experimental feature, a patch that is not available in Ubuntu’s version, or even exist solely in PPAs without being in the primary Ubuntu archive at all.&lt;/p&gt;
&lt;p&gt;These differences matter when something goes wrong. A bug affecting a package from a PPA does not necessarily affect the package in Ubuntu’s official archive. Likewise, an issue might affect one PPA’s package without affecting another.&lt;/p&gt;
&lt;p&gt;PPA bug tracking lets a report capture that distinction directly.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-example&#34;&gt;A Practical Example&lt;/h2&gt;
&lt;p&gt;Suppose a team publishes a new version of an application called Example Editor in its testing PPA. A user installs it on Ubuntu 24.04 LTS and discovers that opening a large document causes a crash. The version in Ubuntu’s official archive works correctly.&lt;/p&gt;
&lt;p&gt;The user can report the issue against the source package in the team’s PPA and identify the affected Ubuntu release. This gives the maintainers a report tied to the package they distribute, without treating it as a confirmed problem in Ubuntu’s version.&lt;/p&gt;
&lt;p&gt;If investigation shows that other targets are affected, the same Launchpad bug can track those too, with a separate status for each target.&lt;/p&gt;
&lt;h2 id=&#34;tracking-issues-at-the-right-level&#34;&gt;Tracking Issues at the Right Level&lt;/h2&gt;
&lt;p&gt;PPA bug tracking supports different levels of detail:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PPA: for issues concerning the archive as a whole.&lt;/li&gt;
&lt;li&gt;A source package: for issues affecting a particular package within the PPA.&lt;/li&gt;
&lt;li&gt;An Ubuntu release: to distinguish which release is affected, including for a particular source package.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This allows reports to start with the information available and become more specific as maintainers investigate.&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Open the PPA’s page in Launchpad and select View bugs to browse its bug reports.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/ppa-view-bugs.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;The bugs page lists reports affecting the PPA or its source packages. You can search existing reports or select Report a bug to create a new one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/ppa-bugs-page.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;On a bug report, the Affects table identifies the PPA and its owning person or team. Each target has its own status, importance, and assignee, so you can track progress for the PPA separately from other affected targets.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/bug-affects-ppa.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;You can also add a PPA or one of its source packages as an affected target on an existing bug report. Select Also affects PPA/package beneath the Affects table.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/also-affects-ppa-package.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In the form that opens, select the affected PPA. If you know which source package is affected, enter its name; otherwise, leave that field blank. Select Continue to proceed.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/also-affects-form.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;To change an existing bug target, expand its row in the Affects table. Select PPA, choose the archive, and optionally specify a source package. Select Save Changes to update the target.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/10/ppa-bug-tracking/edit-bug-target.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-ppa-maintainers&#34;&gt;For PPA Maintainers&lt;/h2&gt;
&lt;p&gt;With the new PPA bugs, bug reports now have another target to better reflect where your packages are published. You can use Launchpad’s bug-tracking workflow to triage issues and track their status for the relevant PPA, source package, or Ubuntu release.&lt;/p&gt;
&lt;p&gt;When a report also affects Ubuntu’s official package or an upstream project, use the appropriate additional bug targets to record that scope. Keeping those targets accurate helps everyone understand where investigation or a fix is still needed.&lt;/p&gt;
&lt;h2 id=&#34;available-now&#34;&gt;Available Now&lt;/h2&gt;
&lt;p&gt;PPA bug tracking is now enabled in Launchpad. Visit your PPA and select View bugs to explore it.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Protect your Launchpad API tokens with a security key</title>
      <link>https://blog.launchpad.net/general/protect-your-launchpad-api-tokens-with-a-security-key/</link>
      <pubDate>Mon, 19 Oct 2026 20:40:02 +0000</pubDate>
      <dc:creator>Jürgen Gmach</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4608</guid>
      <description>&lt;p&gt;Supply-chain attacks that harvest developer credentials are on the rise. The &lt;a href=&#34;https://unit42.paloaltonetworks.com/npm-supply-chain-attack/&#34;&gt;Shai-Hulud&lt;/a&gt; campaign, for example, used automated scanners to sweep up any secrets they could find in files and keyrings. If you use Launchpad&amp;rsquo;s API, one of those secrets is your API token – and until now it has been about as safe as the laptop it sits on.&lt;/p&gt;
&lt;p&gt;Launchpad now supports &lt;strong&gt;hardware-bound API tokens&lt;/strong&gt;: you can tie your API access to a USB FIDO2 security key, such as a YubiKey, so that a stolen token is useless to an attacker who does not have your physical key.&lt;/p&gt;
&lt;h2 id=&#34;the-problem&#34;&gt;The problem&lt;/h2&gt;
&lt;p&gt;Tools like lp-shell and ubuntu-archive-tools use the launchpadlib library to talk to Launchpad. After you log in, launchpadlib stores your OAuth token – either as a plaintext file on disk or in your desktop keyring. The keyring is unlocked when you log in to your session, so to anything running as you, or to malware that can read your files, that token is effectively plaintext.&lt;/p&gt;
&lt;p&gt;For most people that is an acceptable risk. For core developers, stable release update team members, archive administrators, and Launchpad developers who run a lot of unaudited code, it is a tempting target.&lt;/p&gt;
&lt;h2 id=&#34;the-idea&#34;&gt;The idea&lt;/h2&gt;
&lt;p&gt;Hardware-bound API tokens change what gets stored. Instead of a usable token, launchpadlib stores a long-lived OAuth &lt;strong&gt;refresh grant&lt;/strong&gt; that is useless on its own. To do anything with it, launchpadlib has to ask your security key to sign a challenge from Launchpad, which mints a &lt;strong&gt;short-lived access token&lt;/strong&gt; for the actual API calls.&lt;/p&gt;
&lt;p&gt;The stored grant cannot mint a token without the key. So if an attacker copies your grant, they get nothing – the signing happens on a device they do not have.&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works&lt;/h2&gt;
&lt;p&gt;Once you have registered a key and issued a grant, logging in looks like this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;launchpadlib loads your stored refresh grant.&lt;/li&gt;
&lt;li&gt;It asks Launchpad for a challenge.&lt;/li&gt;
&lt;li&gt;Your security key signs the challenge (you touch the key, and enter its PIN if it has one).&lt;/li&gt;
&lt;li&gt;Launchpad verifies the signature against your registered key and returns a short-lived access token.&lt;/li&gt;
&lt;li&gt;launchpadlib uses that token for API calls until it is close to expiry, then you need to touch your hardware key to renew.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The signing step is a standard WebAuthn assertion – the same mechanism browsers use for passkeys – so it builds on a well-tested security model.&lt;/p&gt;
&lt;h2 id=&#34;keeping-it-usable&#34;&gt;Keeping it usable&lt;/h2&gt;
&lt;p&gt;Security that gets in the way does not get used, so the design keeps everyday work smooth:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A minted access token is reused until it is nearly expired, so you are not touching your key on every command.&lt;/li&gt;
&lt;li&gt;Long-running scripts keep working; the token is renewed as needed.&lt;/li&gt;
&lt;li&gt;The grant is stored in your keyring by default, or in a file you control if you prefer.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-it-protects--and-what-it-doesnt&#34;&gt;What it protects – and what it doesn&amp;rsquo;t&lt;/h2&gt;
&lt;p&gt;Being honest about the boundaries matters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Opportunistic theft&lt;/strong&gt; of stored credentials – the main thing this defends against. A scanner that grabs your grant gets something it cannot use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Targeted attacks on your user session&lt;/strong&gt; – if an attacker can already run code as you, they could still capture a freshly minted access token. Reducing that exposure is future work.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Root-level compromise&lt;/strong&gt; – out of scope. If an attacker owns the machine, no client-side measure fully protects you.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is also specifically about &lt;strong&gt;programmatic access through launchpadlib&lt;/strong&gt;, not logging in to the Launchpad website, and it is not intended for automation or bot accounts.&lt;/p&gt;
&lt;h2 id=&#34;try-it&#34;&gt;Try it&lt;/h2&gt;
&lt;p&gt;You will need a USB FIDO2 security key and launchpadlib with the fido2 extra:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;pip install &amp;#39;launchpadlib[fido2]&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then register your key, issue a grant, and log in with it. The step-by-step instructions are in the Launchpad documentation&amp;rsquo;s how-to, &lt;a href=&#34;https://ubuntu.com/docs/launchpad/user/how-to/launchpadlib/use-hardware-bound-api-tokens/&#34;&gt;&lt;em&gt;Use hardware-bound API tokens&lt;/em&gt;&lt;/a&gt;, with the design and protocol covered in the developer docs.&lt;/p&gt;
&lt;p&gt;We would love your feedback as you start using it! &lt;a href=&#34;mailto:feedback@launchpad.net&#34;&gt;feedback@launchpad.net&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Launchpad product roadmap updates – Blueprints and Translations</title>
      <link>https://blog.launchpad.net/general/launchpad-product-roadmap-updates-blueprints-and-translations/</link>
      <pubDate>Wed, 14 Oct 2026 08:54:21 +0000</pubDate>
      <dc:creator>Guruprasad L</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4602</guid>
      <description>&lt;p&gt;We would like to share an update regarding our plans for the Blueprints and Translations features in Launchpad.&lt;/p&gt;
&lt;h2 id=&#34;retiring-launchpad-blueprints&#34;&gt;Retiring Launchpad Blueprints&lt;/h2&gt;
&lt;p&gt;Launchpad Blueprints are lightweight feature specifications attached to projects and distributions.&lt;/p&gt;
&lt;p&gt;As the usage of Blueprints has declined steadily, we plan to retire the feature at the end of the 27.10 cycle (October 2027) and remove its data. This reduces technical debt and frees development and maintenance time for the features most of our users rely on.&lt;/p&gt;
&lt;h2 id=&#34;reimagining-launchpad-translations&#34;&gt;Reimagining Launchpad Translations&lt;/h2&gt;
&lt;p&gt;Launchpad Translations lets communities translate software through a web interface, with translation templates and message sharing across projects, distributions and series.&lt;/p&gt;
&lt;p&gt;The current implementation has not changed substantially in many years, and the translation ecosystem has moved on considerably since it was built. Rather than continue incremental maintenance, we are considering replacing it with a modern, purpose-built translation platform and providing an integrated Launchpad experience on top of that. Weblate is an obvious candidate, though no decision has been made as yet.&lt;/p&gt;
&lt;p&gt;Before we choose a direction, we want to hear from the people who use Translations. We are particularly interested in which workflows matter most to you, what you rely on that a general-purpose tool might not provide, how you currently get data in and out, and what a migration would need to preserve for you to consider it successful.&lt;/p&gt;
&lt;p&gt;We will be collecting input over the coming months. Our tentative target for completing this change is the end of the 27.10 cycle (October 2027), but that timeline may shift as we learn more.&lt;/p&gt;
&lt;h2 id=&#34;get-in-touch&#34;&gt;Get in touch&lt;/h2&gt;
&lt;p&gt;If you have any questions or concerns about the Blueprints retirement, need help exporting your Blueprints data, or have feedback to share on the Translations revamp, please contact us on Matrix (&lt;code&gt;#launchpad:ubuntu.com&lt;/code&gt;), submit a &lt;a href=&#34;https://answers.launchpad.net/launchpad/+addquestion&#34;&gt;question&lt;/a&gt; or send an email to &lt;a href=&#34;mailto:feedback@launchpad.net&#34;&gt;feedback@launchpad.net&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Review merge proposals in VS Code</title>
      <link>https://blog.launchpad.net/general/review-merge-proposals-in-vs-code/</link>
      <pubDate>Tue, 08 Sep 2026 10:32:27 +0000</pubDate>
      <dc:creator>Adam Steciuk</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4590</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=Canonical.launchpad-merge-proposals&#34;&gt;Launchpad Merge Proposals&lt;/a&gt;, a VS Code extension for reviewing Launchpad merge proposals, is now available on the Visual Studio Marketplace as a preview release.&lt;/p&gt;
&lt;p&gt;The extension brings the review into the editor. It finds the merge proposals for the branch you have checked out, renders their diffs in VS Code’s diff editor, and lets you comment and vote without opening a browser.&lt;/p&gt;
&lt;h2 id=&#34;what-the-extension-does&#34;&gt;What the extension does&lt;/h2&gt;
&lt;h3 id=&#34;finds-the-merge-proposals-for-the-branch-you-are-on&#34;&gt;Finds the merge proposals for the branch you are on&lt;/h3&gt;
&lt;p&gt;It reads the upstream of the checked-out branch and lists merge proposals in both directions: &lt;strong&gt;outgoing&lt;/strong&gt;, where your branch is the source, and &lt;strong&gt;incoming&lt;/strong&gt;, where it is the target. Proposals can be filtered by status.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/external/assets.ubuntu.com/v1/1e88331d-merge_proposals.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;renders-diffs-in-the-vs-code-editor&#34;&gt;Renders diffs in the VS Code editor&lt;/h3&gt;
&lt;p&gt;Open &lt;strong&gt;Files Changed&lt;/strong&gt; and the proposal opens in VS Code’s side-by-side diff editor, with syntax highlighting and the surrounding file for context. Files are decorated to show where comments already exist.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/external/assets.ubuntu.com/v1/f156a3ba-files_changed.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;puts-comments-next-to-the-code&#34;&gt;Puts comments next to the code&lt;/h3&gt;
&lt;p&gt;Published inline comments appear beside the lines they refer to, and new ones are drafted in the same place, with full markdown support. Drafts are stored on Launchpad, so a review started in the editor can be finished in the browser, or the other way around.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/external/assets.ubuntu.com/v1/90e0c85b-inline_comments.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h3 id=&#34;submits-the-whole-review-at-once&#34;&gt;Submits the whole review at once&lt;/h3&gt;
&lt;p&gt;Pick a vote, write the summary comment, and submit. Every inline draft is published alongside it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/external/assets.ubuntu.com/v1/1925d975-submit_review.gif&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;getting-started&#34;&gt;Getting started&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=Canonical.launchpad-merge-proposals&#34;&gt;Launchpad Merge Proposals&lt;/a&gt; in VS Code 1.105 or newer.&lt;/li&gt;
&lt;li&gt;Open a project backed by a Git repository on Launchpad, and check out a branch tracking a remote one.&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;Launchpad Merge Proposals&lt;/strong&gt; view from the &lt;strong&gt;Activity Bar&lt;/strong&gt; and sign in when prompted.&lt;/li&gt;
&lt;li&gt;Select a merge proposal, then pick a preview diff to see the changes and comments.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Sign-in uses Launchpad’s OAuth flow, and the token is stored in VS Code’s secret storage. Launchpad asks what level of access to grant, and the level you pick determines what the extension can do. Reading diffs and published inline comments needs at least read access. Drafting inline comments and submitting reviews needs change access.&lt;/p&gt;
&lt;h2 id=&#34;current-status-of-the-project&#34;&gt;Current status of the project&lt;/h2&gt;
&lt;p&gt;This is a &lt;strong&gt;preview release&lt;/strong&gt;. The core review flow works and we use it daily, but some capabilities are still experimental while we work out how they should behave. The &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=Canonical.launchpad-merge-proposals&#34;&gt;README&lt;/a&gt; covers the current state, including a &lt;em&gt;known issues&lt;/em&gt; section that we update with each release.&lt;/p&gt;
&lt;h2 id=&#34;feedback&#34;&gt;Feedback&lt;/h2&gt;
&lt;p&gt;We want to hear what works, what breaks, and what is missing. Please &lt;a href=&#34;https://bugs.launchpad.net/vscode-launchpad/+filebug&#34;&gt;report bugs&lt;/a&gt; and file feature requests on the &lt;a href=&#34;https://launchpad.net/vscode-launchpad&#34;&gt;project’s Launchpad page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The extension is free software under GPL-3.0, and its &lt;a href=&#34;https://git.launchpad.net/vscode-launchpad&#34;&gt;source&lt;/a&gt; is hosted on Launchpad. We welcome contributions via merge proposals. You can even review them using the extension itself!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Merge Launchpad merge proposals with one click</title>
      <link>https://blog.launchpad.net/general/merge-launchpad-merge-proposals-with-one-click/</link>
      <pubDate>Fri, 04 Sep 2026 09:52:42 +0000</pubDate>
      <dc:creator>Goulin Khoge</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4582</guid>
      <description>&lt;p&gt;Maintainers can now merge changes (merge proposals) directly from the Launchpad UI.&lt;/p&gt;
&lt;p&gt;The new &lt;strong&gt;Request merge&lt;/strong&gt; button is available to anyone with permission to push to the target branch. Launchpad enables it if the merge proposal has:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An active status and an up-to-date diff&lt;/li&gt;
&lt;li&gt;No conflicts with the target branch&lt;/li&gt;
&lt;li&gt;Approval from the target repository owner, a member of its owner team, or designated review team&lt;/li&gt;
&lt;li&gt;Successfully completed any configured CI checks&lt;/li&gt;
&lt;li&gt;No unmerged prerequisite branches&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When you click on &lt;strong&gt;Request merge&lt;/strong&gt;, Launchpad queues the merge, tracks its progress, and lets you know when the change has been merged.&lt;/p&gt;
&lt;p&gt;The feature is available for all Launchpad-hosted Git repositories, with no additional setup or integration required.&lt;/p&gt;
&lt;p&gt;Happy merging!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Introducing PPA Dependency Pinning</title>
      <link>https://blog.launchpad.net/general/introducing-ppa-dependency-pinning/</link>
      <pubDate>Thu, 03 Sep 2026 07:07:37 +0000</pubDate>
      <dc:creator>Riad El Terek</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4576</guid>
      <description>&lt;p&gt;PPA maintainers now have more control over where their build dependencies come from. With PPA dependency pinning, you can assign priorities to the PPAs your builds depend on, helping ensure that your packages build against the software you intend to use.&lt;/p&gt;
&lt;p&gt;Whether you are testing a patch, maintaining a customised library, or preparing a new release, this feature makes it easier to manage builds that rely on packages outside the standard Ubuntu archive.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This setting applies only to package builds performed by Launchpad and can only be set by the PPA maintainer. It does NOT change package selection on users’ computers, nor affect local builds.&lt;/p&gt;
&lt;h2 id=&#34;why-dependency-priorities-matter&#34;&gt;&lt;strong&gt;Why dependency priorities matter&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Personal Package Archives (PPAs) let developers build and distribute packages through Launchpad. When packages in one PPA require packages from another PPA in order to be built, the maintainer can configure the other PPA as a build dependency.&lt;/p&gt;
&lt;p&gt;However, making a package available does not necessarily mean it will be selected. When multiple repositories provide the same package at the same priority, Ubuntu’s package manager generally prefers the newer version. &lt;a href=&#34;https://manpages.ubuntu.com/manpages/focal/man5/apt_preferences.5.html&#34;&gt;APT’s documentation&lt;/a&gt; explains these selection rules.&lt;/p&gt;
&lt;p&gt;Imagine that your application needs a library containing a patch you maintain in a separate PPA. Your builds will only use that library successfully until an Ubuntu update introduces a package with a higher version number. Subsequent builds will select the Ubuntu version instead, even though it does not contain your patch.&lt;/p&gt;
&lt;p&gt;PPA dependency pinning gives you a way to express which source your builds should always prefer by allowing you to assign a priority to each PPA dependency. Launchpad applies those priorities when preparing the build environment.&lt;/p&gt;
&lt;p&gt;For the patched-library example, an appropriate priority lets you keep using the library from your chosen PPA, even when Ubuntu publishes a newer version. This reduces the need to adjust package version numbers to influence which source is selected.&lt;/p&gt;
&lt;h2 id=&#34;who-is-this-for&#34;&gt;&lt;strong&gt;Who is this for?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The feature is useful for teams that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Test fixes or features that are not yet available in Ubuntu.&lt;/li&gt;
&lt;li&gt;Maintain customised dependencies for their applications.&lt;/li&gt;
&lt;li&gt;Build related projects across several PPAs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-priorities-in-launchpad&#34;&gt;&lt;strong&gt;Configure priorities in Launchpad&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;When Launchpad prepares a build, APT resolves versioning conflicts by selecting the package repository with the highest priority. Some values already have conventional meanings: &lt;strong&gt;500&lt;/strong&gt; is the default for available packages, and &lt;strong&gt;990&lt;/strong&gt; is generally used for packages from the configured target release. Values above &lt;strong&gt;1000&lt;/strong&gt; are especially strong and may cause APT to select a package even when it is an older version. See &lt;a href=&#34;https://manpages.ubuntu.com/manpages/focal/man5/apt_preferences.5.html#APT&#34;&gt;APT’s documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;To get started, open your PPA’s &lt;strong&gt;Edit PPA dependencies&lt;/strong&gt; page and adjust the &lt;strong&gt;Priority&lt;/strong&gt; field beside the relevant dependency. Save your changes to apply the setting to subsequent builds.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.launchpad.net/images/posts/2026/09/64c9/image.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;For teams that manage their PPA configuration through scripts or automation, priorities can also be configured through the &lt;a href=&#34;https://api.launchpad.net/devel.html#archive_dependency&#34;&gt;Launchpad API&lt;/a&gt;. This can be done through &lt;a href=&#34;https://ubuntu.com/docs/launchpad/developer/how-to/operate-launchpad/use-lp-shell/&#34;&gt;lp-shell&lt;/a&gt; as follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Run: lp-shell production devel

In [1]: target_ppa = lp.people[&amp;#34;your-launchpad-id&amp;#34;].getPPAByName(
    name=&amp;#34;your-ppa-name&amp;#34;
)
In [2]: dependency_ppa = lp.people[&amp;#34;dependency-owner&amp;#34;].getPPAByName(
    name=&amp;#34;dependency-ppa-name&amp;#34;
)

In [3]: target_ppa.addArchiveDependency(
    dependency=dependency_ppa,
    pocket=&amp;#34;Release&amp;#34;,
    component=&amp;#34;main&amp;#34;,
    pin_priority=1001,
)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Existing dependencies retain the default priority of &lt;strong&gt;500&lt;/strong&gt;, so there is no configuration change required if the current behaviour meets your needs.&lt;/p&gt;
&lt;p&gt;Priorities apply to packages supplied by the dependency PPA, so choose them with the contents of that PPA in mind. They express a source preference; they do not freeze a particular package version or guarantee identical builds over time.&lt;/p&gt;
&lt;p&gt;Additionally, PPA dependency pinning only affects the build environment on Launchpad. It does not change package preferences on the computers of people who install software from your PPA.&lt;/p&gt;
&lt;h2 id=&#34;references&#34;&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;For more information, see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://manpages.ubuntu.com/manpages/focal/man5/apt_preferences.5.html&#34;&gt;apt_preferences(5)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ubuntu.com/docs/launchpad/user/how-to/packaging/create-ppa/&#34;&gt;Launchpad manual’s create a PPA page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://api.launchpad.net/devel.html#archive_dependency&#34;&gt;Launchpad API Archive Dependency page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://ubuntu.com/docs/launchpad/developer/how-to/operate-launchpad/use-lp-shell/&#34;&gt;lp-shell documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Launchpad documentation office hour #8: Documentation clinic</title>
      <link>https://blog.launchpad.net/general/launchpad-documentation-office-hour-8-documentation-clinic/</link>
      <pubDate>Wed, 02 Sep 2026 17:19:19 +0000</pubDate>
      <dc:creator>Charles Odada</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4569</guid>
      <description>&lt;p&gt;The Launchpad team will host its eighth public documentation office hour this Friday, September 4th, from 1330 UTC. In this session, we will be conducting a documentation clinic for projects hosted on Launchpad.&lt;/p&gt;
&lt;p&gt;If your project is on Launchpad and you’d like some guidance on creating, improving, or publishing its documentation, drop by at any time from 1330 to 1430 UTC. We’ll see you there!&lt;/p&gt;
&lt;p&gt;Launchpad community documentation office hour (Public)&lt;br&gt;
Friday, 4th September · 1330 to 1430 UTC&lt;br&gt;
Google Meet joining info&lt;br&gt;
Video call link: &lt;a href=&#34;https://meet.google.com/gcd-hnxo-sce&#34;&gt;https://meet.google.com/gcd-hnxo-sce&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Charm recipe uploads now authorize with Ubuntu SSO</title>
      <link>https://blog.launchpad.net/general/charm-recipe-uploads-now-authorize-with-ubuntu-sso/</link>
      <pubDate>Fri, 28 Aug 2026 12:16:27 +0000</pubDate>
      <dc:creator>Harsh Singh</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4563</guid>
      <description>&lt;p&gt;Launchpad &lt;a href=&#34;https://ubuntu.com/docs/launchpad/user/how-to/packaging/build-charms-in-launchpad/&#34;&gt;builds charm recipes&lt;/a&gt; and uploads them to Charmhub on your behalf. Up until now, the uploads were authorized via Candid. Charmhub is retiring Candid and moving to Ubuntu One SSO, which is the same sign-on service that Launchpad already uses for snap recipes.&lt;/p&gt;
&lt;p&gt;We have updated Launchpad to use the new flow. When you authorize a charm recipe, you will now be taken to Ubuntu SSO instead of Candid to authenticate. The rest of the process, building and uploading, remains unchanged.&lt;/p&gt;
&lt;h3 id=&#34;what-you-need-to-do&#34;&gt;What you need to do:&lt;/h3&gt;
&lt;p&gt;You do not need to make any changes right now.&lt;/p&gt;
&lt;p&gt;Please note:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recipes which were already authorized prior to this change will keep uploading with their existing credentials.&lt;/li&gt;
&lt;li&gt;The new flow will apply the next time you authorize a recipe — either when creating a new charm recipe, or when re-authorizing an existing recipe.&lt;/li&gt;
&lt;li&gt;Authorizations last up to a year, which is the maximum that Charmhub allows.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you run into any issues while authorizing a recipe or uploading a charm, please let us know by contacting us via Matrix: #launchpad:ubuntu.com or asking a &lt;a href=&#34;https://answers.launchpad.net/launchpad/+addquestion&#34;&gt;question&lt;/a&gt;.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Launchpad security advisory: Fix applied for unsafe tar file extraction vulnerability</title>
      <link>https://blog.launchpad.net/general/launchpad-security-advisory-fix-applied-for-unsafe-tar-file-extraction-vulnerability/</link>
      <pubDate>Fri, 19 Jun 2026 08:00:10 +0000</pubDate>
      <dc:creator>Clinton Fung</dc:creator>
      <guid isPermaLink="false">https://blog.launchpad.net/?p=4549</guid>
      <description>&lt;p&gt;We received a private report from a security researcher describing a vulnerability affecting Launchpad. The vulnerability involved the unsafe processing of tar files at build upload and custom upload. We investigated promptly and deployed a fix shortly after the report. The reporting party has confirmed the issue is no longer exploitable.&lt;/p&gt;
&lt;p&gt;Following remediation, we completed additional review and monitoring. We found no evidence of malicious exploitation. No user action is required.&lt;/p&gt;
&lt;p&gt;We are sharing this update as part of our ongoing commitment to transparency and security.&lt;/p&gt;
&lt;p&gt;We thank &lt;code&gt;splitline&lt;/code&gt; (@_splitline_) and the DEVCORE Research Team for privately reporting this issue.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
