Arch Linux RFCs https://rfc.archlinux.page/ Recent content on Arch Linux RFCs Hugo en-us Licensed under [CC-BY-SA-4.0](https://gitlab.archlinux.org/archlinux/rfcs/-/blob/master/LICENSE) 0001 Using RFCs https://rfc.archlinux.page/0001-using-rfcs/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0001-using-rfcs/ <h1 id="using-rfcs">Using RFCs<a class="anchor" href="#using-rfcs">#</a></h1> <ul> <li>Date proposed: 2021-02-03</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/1">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/1</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>A Request for Comment (RFC) is a way for Arch Linux contributors to propose, design, and discuss new features and changes in project direction in a focused environment.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Finding consensus on overarching or more involved topics in Arch Linux has historically been driven by discussions on mailing lists, in the distribution&rsquo;s various IRC channels, the wiki and the forums. While under certain circumstances this process is still valid and does work, it has a tendency to lead to unfocused and inconclusive discussions while lacking a transparent process. In addition, the results of decision-making are often oblique to newcomers, as they may only exist in the logs of chats or mailing lists, that are not accessible to everyone. When considering the different entities (project leader, developers, trusted users, support staff) that Arch Linux consists of, it becomes apparent that distribution-wide topics do not have a platform, as the specific entities have specialized (access-restricted) communication channels and concern themselves (sometimes exclusively) with a specialized topic.</p> 0002 Provide a x86-64-v3 microarchitecture level port https://rfc.archlinux.page/0002-x86-64-v3-microarchitecture/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0002-x86-64-v3-microarchitecture/ <h1 id="provide-a-x86-64-v3-microarchitecture-level-port">Provide a x86-64-v3 microarchitecture level port<a class="anchor" href="#provide-a-x86-64-v3-microarchitecture-level-port">#</a></h1> <ul> <li>Date proposed: 2020-03-02</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0002">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0002</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Provide a second Arch Linux port using <code>-march=x86-64-v3</code> in the build flags.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Arch used to pride itself in providing optimised binaries out of the box. However, the days where our <code>i686</code> showed improvements over other distributions are long behind us.</p> <p>Recently, AMD, Intel, Red Hat, and SUSE collaborated to define three <code>x86-64</code> microarchitecture levels on top of the <code>x86-64</code> baseline. The three microarchitectures group together CPU features roughly based on hardware release dates.</p> 0003 Updates to build flags https://rfc.archlinux.page/0003-buildflags/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0003-buildflags/ <h1 id="updates-to-build-flags">Updates to build flags<a class="anchor" href="#updates-to-build-flags">#</a></h1> <ul> <li>Date proposed: 2020-03-04</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0003">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0003</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Updating our buildflags will improve our packages security.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Compiler security features have advanced since we last updated our buildflags. While we have enabled some of these by default in our compilers, there is further improvements to be made.</p> <p>This RFC puts forward a set of compiler flags that have seen real world usage in other distributions e.g. <a href="https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/master/f/buildflags.md.">Fedora</a> and <a href="https://wiki.ubuntu.com/ToolChain/CompilerFlags">Ubuntu</a>.</p> <h2 id="specification">Specification<a class="anchor" href="#specification">#</a></h2> <p>We will change the distributed <code>makepkg.conf</code> to the following:</p> 0004 LTO by Default https://rfc.archlinux.page/0004-lto-by-default/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0004-lto-by-default/ <h1 id="lto-by-default">LTO by Default<a class="anchor" href="#lto-by-default">#</a></h1> <ul> <li>Date proposed: 2021-02-04</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0004">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0004</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Enable link time optimization (LTO) of packages by default by adding the <code>-flto</code> flag. This provides smaller, faster executables/DSOs, and improves GCC diagnostics.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Arch packages are super slow, and they need to be super fast! One way to improve optimisation is through LTO.</p> <p>LTO gives GCC the capability of dumping its internal representation (GIMPLE) to disk, so that all the different compilation units that make up a single executable can be optimized as a single module. This expands the scope of inter-procedural optimizations to encompass the whole program (or, rather, everything that is visible at link time). Clang does similar LTO, but dumps its internal representation as LLVM byte-code.</p> 0006 Adoption of a distribution-wide Code of Conduct https://rfc.archlinux.page/0006-code-of-conduct/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0006-code-of-conduct/ <h1 id="adoption-of-a-distribution-wide-code-of-conduct">Adoption of a distribution-wide Code of Conduct<a class="anchor" href="#adoption-of-a-distribution-wide-code-of-conduct">#</a></h1> <ul> <li>Date proposed: 2021-09-15</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/6">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/6</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>The adoption of a distribution-wide Code of Conduct (CoC) helps to describe the social contract by which communication takes place on the various communication channels offered by Arch Linux. This document describes the current CoC, its purpose and location and how to interact with it.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>A Code of Conduct is a useful document to describe the <em>&quot;norms, rules, and responsibilities or proper practices of an individual party or an organization&quot;</em> (see <a href="https://en.wikipedia.org/wiki/Code_of_conduct">Wikipedia article</a>). Arch Linux is a community of entities, that consists of direct participants such as <a href="https://archlinux.org/people/developers/">developers</a>, <a href="https://archlinux.org/people/trusted-users/">trusted users</a>, <a href="https://archlinux.org/people/support-staff/">support staff</a> and users that communicate with one another over various channels. As with all social constructs, the Arch Linux community is not immune to disagreements on technical or personal level.</p> 0007 Rename the Trusted User role https://rfc.archlinux.page/0007-rename-trusted-user-role/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0007-rename-trusted-user-role/ <h1 id="rename-the-trusted-user-role">Rename the Trusted User role<a class="anchor" href="#rename-the-trusted-user-role">#</a></h1> <ul> <li>Date proposed: 2021-10-07</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/7">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/7</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>It was shown in some cases that the Trusted User (TU) role naming led to some confusion and misunderstanding in broader contexts outside Arch Linux. Furthermore, it has been discussed that it also resulted in similar confusion among members of Arch Linux internally. This RFC remedies that with a better-suited term to reflect more accurately upon <code>TUs</code>&rsquo; roles and responsibilities as well as their position in the Arch Linux Organisation.</p> 0009 Mediation Program https://rfc.archlinux.page/0009-mediation-program/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0009-mediation-program/ <h1 id="mediation-program">Mediation Program<a class="anchor" href="#mediation-program">#</a></h1> <ul> <li>Date proposed: 2021-12-07</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/9">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/9</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Add an official mediation program to our organization consisting of elected mediators to help settle disputes and provide a clear escalation path.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Currently, we lack an established way to settle personal disputes. Furthermore, we do not provide a visible escalation path, making resolving a dispute or acquiring help for a two-or-more-sided resolution intransparent. Without mediators and an escalation path, we risk people emotionally resigning when a dispute cannot be resolved independently. The mediation program helps to mitigate the risk of losing contributors and aims to prevent social barriers between people. Our staff and volunteers are our most valuable resource after all.</p> 0010 Adopt PEP 517 tooling for Python packages https://rfc.archlinux.page/0010-adopt-pep517-tooling/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0010-adopt-pep517-tooling/ <h1 id="adopt-pep-517-tooling-for-python-packages">Adopt PEP 517 tooling for Python packages<a class="anchor" href="#adopt-pep-517-tooling-for-python-packages">#</a></h1> <ul> <li>Date proposed: 2022-02-19</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0010">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0010</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Replace <code>setup.py</code> with <code>PEP 517</code> tooling (python-build/python-installer) for all Python packages where this approach is viable.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>There are two main points.</p> <h3 id="direct-setuppy-calls-are-deprecated">Direct <code>setup.py</code> calls are deprecated<a class="anchor" href="#direct-setuppy-calls-are-deprecated">#</a></h3> <p>The <code>setuptools</code> upstream has deprecated direct <code>setup.py</code> calls, and plans to remove support for them in the future. Please see <a href="https://github.com/pypa/setuptools/issues/2088">setuptools#2088</a> and <a href="https://github.com/pypa/setuptools/issues/2080">setuptools#2080</a> for more context.</p> <h3 id="setuppy-install-calls-install-old-style-python-metadata"><code>setup.py install</code> calls install old-style Python metadata<a class="anchor" href="#setuppy-install-calls-install-old-style-python-metadata">#</a></h3> <p>The metadata installed by <code>setup.py install</code> is the old-style &quot;egg&quot; format (.egg-info). This is essentially implementation-defined by <code>setuptools</code> and has been replaced by a standardized format (.dist-info). By moving to the PEP 517 tooling, we will be using the wheel format, which has the standardized metadata.</p> 0011 Store PGP keys for source file signatures alongside the PKGBUILD https://rfc.archlinux.page/0011-store-source-signing-keys/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0011-store-source-signing-keys/ <h1 id="store-pgp-keys-for-source-file-signatures-alongside-the-pkgbuild">Store PGP keys for source file signatures alongside the PKGBUILD<a class="anchor" href="#store-pgp-keys-for-source-file-signatures-alongside-the-pkgbuild">#</a></h1> <ul> <li>Date proposed: 2022-03-20</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/11">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/11</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Store the PGP signing keys listed in a PKGBUILD's <code>validpgpkeys</code> array alongside the PKGBUILD in our VCS.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>The PGP keyserver infrastructure has become increasingly brittle over recent years. This can make helping with updates or rebuilds of packages difficult due to lack of access to the valid signing key. Having the signing key exported alongside the PKGBUILD would allow for anybody to import the key into their keyring and verify the source.</p> 0014 Merge package repositories https://rfc.archlinux.page/0014-merge-package-repos/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0014-merge-package-repos/ <h1 id="merge-package-repositories">Merge package repositories<a class="anchor" href="#merge-package-repositories">#</a></h1> <ul> <li>Date proposed: 2022-09-01</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/14">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/14</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Merge the <code>pacman</code> repository <code>[community]</code> into <code>[extra]</code> as well as the packaging VCS location <code>community</code> into <code>packages</code>.</p> <p>The <code>[core]</code> repository remains limited to Developers.</p> <p>New Package Maintainers will be restricted to publish packages solely to <code>[testing]</code> for the first two months of their active packaging actions.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>In early days, the Trusted User packagers were meant to be a completely decoupled group from Arch Linux and hence got a dedicated optional <code>pacman</code> repository and VCS. Over the time, the distinction of packages between <code>[community]</code> and <code>[extra]</code> became blurry and at the latest since the official re-integration and rename of the Trusted Users into the Arch Linux organization the barrier became moot and essentially just obstructive.</p> 0016 Use SPDX license identifiers in PKGBUILDs https://rfc.archlinux.page/0016-spdx-license-identifiers/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0016-spdx-license-identifiers/ <h1 id="use-spdx-license-identifiers-in-pkgbuild">Use SPDX license identifiers in PKGBUILD<a class="anchor" href="#use-spdx-license-identifiers-in-pkgbuild">#</a></h1> <ul> <li>Date proposed: 2022-11-17</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/16">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/16</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Change to using SPDX license identifiers in the PKGBUILD <code>license</code> value for packages in all repositories.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>The license identifiers we use have become inadequate for the large array of open-source licenses in use today, and no longer properly describe the licenses that they are meant to represent. When it was devised, there was no commonly accepted standard for license identifiers, and so it was necessary to develop one that would work for Arch&rsquo;s use case.</p> 0017 Increase _FORTIFY_SOURCE level to 3 https://rfc.archlinux.page/0017-increase-fortification-level/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0017-increase-fortification-level/ <h1 id="increase-_fortify_source-level-to-3">Increase _FORTIFY_SOURCE level to 3<a class="anchor" href="#increase-_fortify_source-level-to-3">#</a></h1> <ul> <li>Date proposed: 2023-01-05</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0017">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0017</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Adjust packaging CFLAGS from <code>-D_FORTIFY_SOURCE=2</code> to <code>-D_FORTIFY_SOURCE=3</code> for better fortification coverage</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>For a long time, we have been using <code>-D_FORTIFY_SOURCE=2</code> in our build flags to detect C memory management problems at build time. Recently, <code>glibc</code> (2.34) added <code>\_FORTIFY_SOURCE=3</code> to add extra checking. This has been supported in clang for some time, and is now available in GCC with the release of version 12.</p> 0019 Moderator role for the AUR https://rfc.archlinux.page/0019-aur-moderator-role/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0019-aur-moderator-role/ <h1 id="moderator-role-for-the-aur">Moderator role for the AUR<a class="anchor" href="#moderator-role-for-the-aur">#</a></h1> <ul> <li>Date proposed: 2023-06-27</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/19">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/19</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Create a dedicated role for the moderation of the AUR that supports and eventually replaces the Package Maintainers as the current moderators.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Currently, Arch Linux has 64 <em>Package Maintainers</em>. Historically known as <em>Trusted Users</em> (TU), they had two main responsibilities: Moderation of the AUR and moving popular AUR packages to the official Arch Linux repositories. The combination of those two responsibilities has not worked out since quite some time, as most package maintainers simply do not really intend to moderate the platform. On the other hand potential moderators have a hard time applying as package maintainers just for the sake of moderating the AUR. This RFC proposes to split the old TU role into <em>Package Maintainers</em> and <em>AUR Moderators</em> to have a clear separation of concern and allow for an easier way to recruit <em>AUR Moderators</em>.</p> 0020 Sources for Python packaging https://rfc.archlinux.page/0020-sources-for-python-packaging/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0020-sources-for-python-packaging/ <h1 id="sources-for-python-packaging">Sources for Python packaging<a class="anchor" href="#sources-for-python-packaging">#</a></h1> <ul> <li>Date proposed: 2023-07-14</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/20">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/20</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Default to not using <a href="https://pypi.org">PyPI</a> for Python package sources and only use the platform if there is no other alternative.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Historically, Arch Linux has relied upon <a href="https://docs.python.org/3.11/distutils/sourcedist.html">source distribution</a> (<code>sdist</code>) tarballs hosted on <a href="https://pypi.org">PyPI</a> for its Python packages.</p> <p>However, over the years the use of the platform became more and more burdensome for packagers:</p> <ul> <li>stable, predictable download links were no longer publicly advertised (instead download links with hashes are advertised over the web UI)</li> <li>the availability of OpenPGP signatures for sources were deemed to obscurity by not showing them in the download section</li> <li>eventually existing OpenPGP signatures were no longer available since they were deprecated in May 2023 (<a href="https://blog.pypi.org/posts/2023-05-23-removing-pgp/">https://blog.pypi.org/posts/2023-05-23-removing-pgp/</a>)</li> </ul> <p>Moreover, several issues exist with <code>sdist</code> tarballs, that do not occur with upstream provided sources:</p> 0021 Create a distribution Developer Manual https://rfc.archlinux.page/0021-create-a-distro-developer-manual/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0021-create-a-distro-developer-manual/ <h1 id="create-a-distribution-developer-manual">Create a distribution Developer Manual<a class="anchor" href="#create-a-distribution-developer-manual">#</a></h1> <ul> <li>Date proposed: 2023-08-23</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0021">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0021</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>This RFC proposes the migration of Arch Linux&rsquo;s operational distro specifications from existing ArchWiki and other sources to a dedicated GitLab developer manual repository. The intention is to document how to run the distribution while leveraging GitLab&rsquo;s collaboration features and streamlined workflows for maintaining and evolving the resulting specifications. This change aims to centralize and enhance the efficiency of specification management while preserving the integrity of the community-contributed content in the Wiki.</p> 0023 Add -Wl,-z,pack-relative-relocs https://rfc.archlinux.page/0023-pack-relative-relocs/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0023-pack-relative-relocs/ <h1 id="add--wl-zpack-relative-relocs">Add -Wl,-z,pack-relative-relocs<a class="anchor" href="#add--wl-zpack-relative-relocs">#</a></h1> <ul> <li>Date proposed: 2023-09-03</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0023">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0023</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Add <code>-Wl,-z,pack-relative-relocs</code> to our LDFLAGS in order to reduce the size of relocations.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p><code>-z pack-relative-relocs</code> moves relative relocations from the <code>.rela.dyn</code> section into a new <code>.relr.dyn</code> section with a significantly more compact encoding, supported since <code>glibc</code> 2.36, GNU <code>Binutils</code> 2.38 and LLVM 15.</p> <p>This can reduce the size of libraries a lot, e.g. the installed size of <code>libphonenumber</code> dropped from about 17 MB to 7 MB.</p> 0025 Make dbus-broker our default D-Bus daemon https://rfc.archlinux.page/0025-dbus-broker-default/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0025-dbus-broker-default/ <h1 id="make-dbus-broker-our-default-d-bus-daemon">Make dbus-broker our default D-Bus daemon<a class="anchor" href="#make-dbus-broker-our-default-d-bus-daemon">#</a></h1> <ul> <li>Date proposed: 2023-12-08</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/25">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/25</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Make <code>dbus-broker</code> our default D-Bus daemon, while still allowing the venerable <code>dbus-daemon</code> to be used and minimizing the disruption of existing installations.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p><code>dbus-broker</code> provides better performance and higher reliability than <code>dbus-daemon</code>, with per-user accounting of resources in the broker. For more information, see the <a href="https://github.com/bus1/dbus-broker/wiki">dbus-broker wiki</a>.</p> <p>It integrates better with <code>systemd</code>, asking the manager to start transient services when D-Bus services define <code>systemd</code> unit to be activated, avoiding launching services into the D-Bus daemon's <code>cgroup</code>.</p> 0026 Add -fno-omit-frame-pointer and -mno-omit-leaf-frame-pointer to default compilation flags https://rfc.archlinux.page/0026-fno-omit-frame-pointer/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0026-fno-omit-frame-pointer/ <h1 id="add--fno-omit-frame-pointer-and--mno-omit-leaf-frame-pointer-to">Add -fno-omit-frame-pointer and -mno-omit-leaf-frame-pointer to<a class="anchor" href="#add--fno-omit-frame-pointer-and--mno-omit-leaf-frame-pointer-to">#</a></h1> <ul> <li>Date proposed: 2023-12-14</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/26">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/26</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>This RFC proposes to add <code>-fno-omit-frame-pointer</code> and <code>-mno-omit-leaf-frame-pointer</code> to the default compilation flags to improve the effectiveness of profiling and debugging tools.</p> <p>Most of this RFC was adapted from my <a href="https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer">Fedora change proposal</a>.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <h3 id="why-perform-full-system-profiling">Why perform full system profiling<a class="anchor" href="#why-perform-full-system-profiling">#</a></h3> <p>Generally, when implementing optimizations after receiving a report on a performance issue, there are two hurdles a developer must overcome:</p> <p>They have to recompile their program with sufficient debugging information to enable accurate and reliable profiling. Frame pointers are an example of such information. They have to reproduce the scenario under which the software performed poorly. They have to gather the necessary profiling data by running the recompiled program in the reproduced scenario. After gathering the profiling data, the developer can use that data to guide possible optimizations. Usually, this ends being an iterative process, where a possible optimization is implemented, and the scenario is rerun with the recompiled program to measure the effects on performance.</p> 0029 Mirror Definition https://rfc.archlinux.page/0029-mirror-definition/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0029-mirror-definition/ <h1 id="mirror-definition">Mirror Definition<a class="anchor" href="#mirror-definition">#</a></h1> <ul> <li>Date proposed: 2023-11-20</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/29">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/29</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Before this proposal, a large sum of work related to mirrors were manual labor with potential for errors and mistakes. This RFC outlines definitions and guidelines surrounding a new workflow and processes for becoming, maintaining and decommissioning mirrors.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Mirrors are a well known concept on a abstract level as it&rsquo;s one of the foundations of most Linux distributions. However, the Arch Linux instructions and guidelines surrounding mirrors are manual and prone to errors and delays. Having users report mirror details in a free-text-format, along with manual work to copy and enter this information directly into a database is a tedious process.</p> 0031 Allow all staff to create RFCs https://rfc.archlinux.page/0031-allow-all-staff-to-create-rfcs/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0031-allow-all-staff-to-create-rfcs/ <h1 id="allow-all-staff-to-create-rfcs">Allow all staff to create RFCs<a class="anchor" href="#allow-all-staff-to-create-rfcs">#</a></h1> <ul> <li>Date proposed: 2024-03-05</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/31">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/31</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Grant all Arch Linux staff members, not limited to those in packaging roles, the privilege to initiate RFCs directly, aligning with the broad range of topics these documents encompass.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>The RFC process, as outlined in &quot;Using RFCs,&quot; aims to enhance transparency and leverage the full spectrum of community expertise, covering a broad range of topics beyond packaging. The current requirement for RFC initiation, namely support from a Developer or Package Maintainer, unintentionally restricts contributions from non-packaging staff.</p> 0032 Arch Linux Ports https://rfc.archlinux.page/0032-arch-linux-ports/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0032-arch-linux-ports/ <h1 id="arch-linux-ports">Arch Linux Ports<a class="anchor" href="#arch-linux-ports">#</a></h1> <ul> <li>Date proposed: 2024-03-11</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/32">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/32</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Introduce &quot;Arch Linux Ports&quot; as testbed for unofficial architectures until they are integrated in the main Arch Linux repositories. This integration is meant to provide infrastructure and community-based support for architectures until they are fully supported by the main distribution.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Arch Linux has historically been ported to different CPU architectures over the years. However, over the past decade we have not done enough to develop and foster expertise when it comes to this topic. Several separate projects exist today for the sole purpose of porting Arch Linux to e.g. ARM, LoongArch and RISC-V<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p> 0040 License Package Sources https://rfc.archlinux.page/0040-license-package-sources/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0040-license-package-sources/ <h1 id="license-package-sources">License Package Sources<a class="anchor" href="#license-package-sources">#</a></h1> <ul> <li>Date proposed: 2024-08-07</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0040">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0040</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Our package sources currently do not have explicit licenses. This RFC proposes to license all Arch Linux package sources under the terms of the Zero-Clause BSD license.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>NOTE: This RFC was not written by lawyers so any statements about legal things are merely the result of research.</p> <p>Arch Linux package sources (<code>PKGBUILD</code> and strictly related files such as e.g. <code>.install</code>, <code>.desktop</code> or <code>systemd</code> files) currently lack a license. This is potentially problematic as it leaves the licensing of package sources open to interpretation. Some users have expressed concerns about this (<a href="https://lists.archlinux.org/pipermail/aur-general/2011-February/013508.html">ML1</a>, <a href="https://labs.parabola.nu/issues/2862">Parabola Licensing Issue</a>).</p> 0043 Streamline the RFC writing process https://rfc.archlinux.page/0043-streamline-the-rfc-writing-process/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0043-streamline-the-rfc-writing-process/ <h1 id="streamline-the-rfc-writing-process">Streamline the RFC writing process<a class="anchor" href="#streamline-the-rfc-writing-process">#</a></h1> <ul> <li>Date proposed: 2024-08-30</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0043">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0043</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Streamline the writing and publishing of RFCs by relying on markdown and dedicated spellcheckers and linters.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p><a href="https://en.wikipedia.org/wiki/ReStructuredText">ReStructuredText</a> (RST) is currently used for writing and publishing <a href="https://rfc.archlinux.page/">Arch Linux RFCs</a>. While used in specific ecosystems (e.g. Python) and in publishing, it is considered less widespread and more exotic than <a href="https://en.wikipedia.org/wiki/Markdown">markdown</a>.</p> <p>Markdown is widely adopted across many platforms and tools, including <a href="https://gitlab.com/">GitLab</a> and <a href="https://gohugo.io/">Hugo</a> (which is used for generating the static website at <a href="https://rfc.archlinux.page/">https://rfc.archlinux.page/</a>). Additionally, a large set of linters and check tools exist for it and due to its widespread use, many people have a basic understanding of how to use it.</p> 0046 Upstream Package Sources https://rfc.archlinux.page/0046-upstream-package-sources/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0046-upstream-package-sources/ <h1 id="upstream-package-sources">Upstream package sources<a class="anchor" href="#upstream-package-sources">#</a></h1> <ul> <li>Date proposed: 2024-11-14</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/46">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/46</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Improve the security of Arch Linux distribution packages by relying on transparent and, if possible, cryptographically verifiable upstream sources by default. Provide guidelines and best practices for distribution package maintainers in a document covering various source types and technologies for digital signatures. Communicate the common goal of transparent and secure package delivery for package maintainers as well as upstream project maintainers.</p> 0050 Official WSL image for Arch Linux https://rfc.archlinux.page/0050-arch-linux-wsl-image/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0050-arch-linux-wsl-image/ <h1 id="official-wsl-image-for-arch-linux">Official WSL image for Arch Linux<a class="anchor" href="#official-wsl-image-for-arch-linux">#</a></h1> <ul> <li>Date proposed: 2025-02-11</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/50">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/50</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Provide an official Arch Linux WSL image.</p> <p>The WSL images are hosted on our <code>geo</code> mirrors.<br> We plan to include this image in Microsoft&rsquo;s <a href="https://github.com/microsoft/WSL/blob/master/distributions/DistributionInfo.json">official distribution manifest</a> to simplify the installation process for users.<br> We do <strong>not</strong> intend to distribute this image through the Microsoft Store due to concerns about its terms of service and their implications for our trademarks.</p> 0051 Shorten default TCP keepalive time https://rfc.archlinux.page/0051-tcp-keepalive/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0051-tcp-keepalive/ <h1 id="shorten-default-tcp-keepalive-time">Shorten default TCP keepalive time<a class="anchor" href="#shorten-default-tcp-keepalive-time">#</a></h1> <ul> <li>Date proposed: 2025-02-21</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/51">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/51</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Set our default <code>net.ipv4.tcp_keepalive_time</code> to override the extremely conservative kernel default.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>The Linux kernel supports using &ldquo;TCP keepalive&rdquo; in order to signal to the other endpoint as well as anything in-between that a TCP connection which is currently transferring no data is still connected.</p> <p>The default parameters for this feature make it send a packet every 75 seconds after the connection has been idle for 2 hours.</p> 0052 REUSE for package license linting https://rfc.archlinux.page/0052-reuse/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0052-reuse/ <h1 id="reuse-for-package-license-linting">REUSE for package license linting<a class="anchor" href="#reuse-for-package-license-linting">#</a></h1> <ul> <li>Date proposed: 2025-03-11</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0052">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0052</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Utilize REUSE for package license linting for all package sources.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>While Arch Linux package sources have an explicit license through RFC40, externally fetched sources used for packaging are not explicitly marked with a license.</p> <p><a href="https://reuse.software/">REUSE</a> is a specification from the Free Software Foundation Europe (FSFE) that allows downstream projects to clearly map copyright and license information to sources in package repositories.</p> 0054 Establish default build flags for Fortran https://rfc.archlinux.page/0054-fortran-flags/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0054-fortran-flags/ <h1 id="establish-default-build-flags-for-fortran">Establish default build flags for Fortran<a class="anchor" href="#establish-default-build-flags-for-fortran">#</a></h1> <ul> <li>Date proposed: 2025-05-04</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0054">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/0054</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>This RFC establishes default build flags (<code>FFLAGS</code>, <code>FCFLAGS</code>, <code>DEBUG_FFLAGS</code>) for compiling Fortran code in Arch Linux packages, aligning them with the security hardening standards defined for C.</p> <h2 id="motivation">Motivation<a class="anchor" href="#motivation">#</a></h2> <p>Arch Linux has been using build flags for security hardening of C and C++ code for a long time. Since <a href="0026-fno-omit-frame-pointer.md">RFC0026</a>, Arch Linux also sets <code>RUSTFLAGS</code>. The support for configuring Fortran build flags was recently <a href="https://gitlab.archlinux.org/pacman/pacman/-/commit/dba383f092ca11752bc68713d3d6af7c428d6f3d">implemented in pacman</a>. This relies on exporting <code>FFLAGS</code> and <code>FCFLAGS</code>, which are consumed by <a href="https://www.gnu.org/software/autoconf/manual/autoconf-2.64/html_node/Fortran-Compiler.html">GNU autotools</a> and passed to the Fortran 77 and Fortran 90 compilers, respectively. Other build systems may also use these variables, e.g. <a href="https://cmake.org/cmake/help/latest/envvar/FFLAGS.html">CMake</a> passes <code>FFLAGS</code> to any Fortran compiler.</p> 0059 Automated digital signing of OS artifacts https://rfc.archlinux.page/0059-automated-digital-signing-of-os-artifacts/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0059-automated-digital-signing-of-os-artifacts/ <h1 id="automated-digital-signing-of-os-artifacts">Automated digital signing of OS artifacts<a class="anchor" href="#automated-digital-signing-of-os-artifacts">#</a></h1> <ul> <li>Date proposed: 2025-06-17</li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/59">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/59</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>Introduce a centralized, hardware backed solution for the digital signing of OS artifacts. Gradually replace the need for manual signing of artifacts throughout the distribution.</p> <p>The stepwise plan in this document will eventually lead to changes for the following existing roles within Arch Linux staff:</p> <ul> <li><em>Package maintainers</em> will no longer sign packages using their individual <a href="https://openpgp.dev/book/private_keys.html">OpenPGP private key</a>.</li> <li>The amount of <a href="https://openpgp.dev/book/certificates.html">OpenPGP certificates</a> for <em>main signing key holders</em> to care for will be drastically reduced.</li> <li>The <em>DevOps team</em> will have to monitor and administrate additional physical machines.</li> </ul> <p>New groups of people within Arch Linux staff will</p> 0063 buildbtw build service https://rfc.archlinux.page/0063-buildbtw-build-service/ Mon, 01 Jan 0001 00:00:00 +0000 https://rfc.archlinux.page/0063-buildbtw-build-service/ <h1 id="buildbtw-build-service">buildbtw build service<a class="anchor" href="#buildbtw-build-service">#</a></h1> <ul> <li>Date proposed: 2025-09-23</li> <li>Authors: <code>Rafael Epplée (raffomania)</code>, <code>Levente Polyak (anthraxx)</code></li> <li>RFC MR: <a href="https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/63">https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/63</a></li> </ul> <h2 id="summary">Summary<a class="anchor" href="#summary">#</a></h2> <p>This RFC proposes a first vertical slice of a build service to streamline rebuilding packages with many reverse dependencies. It tackles problems like repetitive manual work, blocking staging repositories, missed reverse dependencies and lack of shared context, like build logs. Goals include automating rebuilds and build ordering, enabling unattended builds, and providing isolated repos for parallel work. Builds run in secure virtual machines via a GitLab executor, organized into namespaces with histories and automatic dependency graphs. Interaction happens through CLI (<code>pkgctl</code>) and a web UI with SSO.</p>