1"use strict";(globalThis.webpackChunkflathub_docs_docusaurus=globalThis.webpackChunkflathub_docs_docusaurus||[]).push([[6748],{6420(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"for-team-members/becoming-a-team-member","title":"Becoming a Flathub Team Member","description":"Flathub, as a centralized application repository, relies on a dedicated","source":"@site/docs/03-for-team-members/02-becoming-a-team-member.md","sourceDirName":"03-for-team-members","slug":"/for-team-members/becoming-a-team-member","permalink":"/docs/for-team-members/becoming-a-team-member","draft":false,"unlisted":false,"editUrl":"https://github.com/flathub/documentation/tree/main/docs/03-for-team-members/02-becoming-a-team-member.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{},"sidebar":"mainSidebar","previous":{"title":"Review","permalink":"/docs/for-team-members/review"},"next":{"title":"Historical documents","permalink":"/docs/for-team-members/historical"}}');var a=i(4848),r=i(8453);const s={},o="Becoming a Flathub Team Member",l={},d=[{value:"Contribution Areas",id:"contribution-areas",level:2},{value:"Packaging and app maintenance",id:"packaging-and-app-maintenance",level:3},{value:"Localisation",id:"localisation",level:3},{value:"Documentation",id:"documentation",level:3},{value:"Community support",id:"community-support",level:3},{value:"Submission reviews",id:"submission-reviews",level:3},{value:"Quality guideline reviews",id:"quality-guideline-reviews",level:3},{value:"Code contribution",id:"code-contribution",level:3},{value:"Other contributions",id:"other-contributions",level:3},{value:"Team Membership Process",id:"team-membership-process",level:2},{value:"Membership Criteria",id:"membership-criteria",level:2},{value:"Reviewer Team",id:"reviewer-team",level:3},{value:"Trusted Maintainer Team",id:"trusted-maintainer-team",level:3},{value:"Build Moderation Team",id:"build-moderation-team",level:3},{value:"Quality Moderation Team",id:"quality-moderation-team",level:3},{value:"<code>flathub-infra</code> repositories",id:"flathub-infra-repositories",level:3},{value:"<code>shared-modules</code> repository",id:"shared-modules-repository",level:3},{value:"Flathub application repository",id:"flathub-application-repository",level:3},{value:"Revocation of Membership",id:"revocation-of-membership",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"becoming-a-flathub-team-member",children:"Becoming a Flathub Team Member"})}),"\n",(0,a.jsx)(n.p,{children:"Flathub, as a centralized application repository, relies on a dedicated\nteam of mainly volunteer contributors to maintain the quality, security,\nand consistency of the repository."}),"\n",(0,a.jsx)(n.p,{children:"These contributors are generally responsible for tasks including, but\nnot limited to:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Reviewing new application submissions."}),"\n",(0,a.jsxs)(n.li,{children:["Reviewing ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/maintenance#build-moderation",children:"Build Moderation"}),"\nrequests."]}),"\n",(0,a.jsxs)(n.li,{children:["Performing ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/metainfo-guidelines/quality-guidelines",children:"Quality Guideline"}),"\nreviews for applications."]}),"\n",(0,a.jsx)(n.li,{children:"Triaging and responding to issues or queries from application\ndevelopers."}),"\n",(0,a.jsx)(n.li,{children:"Updating, adopting maintenance of, or contributing to Flatpaks when\nnecessary."}),"\n",(0,a.jsx)(n.li,{children:"Auditing existing applications to ensure compliance with current\nFlathub guidelines and best practices."}),"\n"]}),"\n",(0,a.jsx)(n.p,{children:"As Flathub continues to grow, expanding the contributor base becomes\nimportant for distributing the workload effectively and improving\nsustainability."}),"\n",(0,a.jsx)(n.p,{children:"While there is no strict requirement, members are generally expected to\nremain active in their areas of responsibility, stay up to date with\nFlathub policies and announcements, and engage with the community."}),"\n",(0,a.jsx)(n.p,{children:"Please note that membership is entirely voluntary and there are no\nbenefits, incentives, or compensations associated with it currently.\nMembership is intended for trusted individuals who are willing to\nremain active and engaged with the project. If you wish to\ncontribute, please refer to the contribution areas below."}),"\n",(0,a.jsx)(n.p,{children:"The criteria described here may change in the future without prior\nnotice, but such changes will generally not be applied retroactively to\nexisting members."}),"\n",(0,a.jsx)(n.admonition,{type:"important",children:(0,a.jsx)(n.p,{children:"Please ensure that at least one approval is obtained before making any\nchanges to the policies defined here."})}),"\n",(0,a.jsx)(n.h2,{id:"contribution-areas",children:"Contribution Areas"}),"\n",(0,a.jsx)(n.p,{children:"Contributions of all kind is very welcome, and there are no requirements\nto participate. Some contribution areas are mentioned below."}),"\n",(0,a.jsx)(n.h3,{id:"packaging-and-app-maintenance",children:"Packaging and app maintenance"}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Please see the ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/maintenance",children:"maintenance docs"})]})}),"\n",(0,a.jsx)(n.p,{children:"The collection of applications, extensions, and BaseApps on Flathub is\nlargely maintained by a community of volunteer packagers and\nupstream developers. If you are a user of an application or have\nexperience with packaging, distributions, or software maintenance, you\ncan contribute by helping maintain existing applications or by adopting\nunmaintained ones."}),"\n",(0,a.jsxs)(n.p,{children:["If you are a user you can consider installing ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/maintenance#test-builds",children:"test builds"}),"\nand providing feedback to the maintainer before merging."]}),"\n",(0,a.jsx)(n.p,{children:"If a maintainer has limited time or bandwidth to review and submit\nupdates, you can consider contributing by opening pull requests to the\napplication's repository. Useful contributions may include updating\nthe application version, upgrading dependencies and runtimes, fixing\nbuild failures, and addressing other packaging or maintenance issues."}),"\n",(0,a.jsx)(n.p,{children:"For (semi-)actively maintained applications, please contact the\ncurrent maintainer first to determine whether they would like help."}),"\n",(0,a.jsxs)(n.p,{children:["If an application is unmaintained, or if the existing maintainer has\nnot responded to or reviewed your proposed changes after a reasonable\nperiod of time, you may open an ",(0,a.jsx)(n.a,{href:"https://github.com/flathub/flathub/issues",children:"issue"}),"\nrequesting an admin to review. If the proposed changes are approved,\nyou may be granted maintainer access to the application."]}),"\n",(0,a.jsxs)(n.p,{children:["The same process can be followed to ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/maintenance#creating-new-branches-for-extensions-or-baseapps",children:"create new branches"}),"\nof extensions or BaseApps which are often a requirement for an app to\nmigrate to a newer runtime."]}),"\n",(0,a.jsxs)(n.p,{children:["You can consider picking up or submitting a module in the\n",(0,a.jsx)(n.a,{href:"https://github.com/flathub/shared-modules",children:"shared-modules repo"}),"."]}),"\n",(0,a.jsx)(n.h3,{id:"localisation",children:"Localisation"}),"\n",(0,a.jsxs)(n.p,{children:["If you are an active translator, you can contribute by helping to\n",(0,a.jsx)(n.a,{href:"https://hosted.weblate.org/engage/flathub/",children:"translate"})," the main Flathub\nwebsite to your language."]}),"\n",(0,a.jsx)(n.h3,{id:"documentation",children:"Documentation"}),"\n",(0,a.jsxs)(n.p,{children:["If you are a user or an existing maintainer on Flathub, you can\ncontribute by improving the ",(0,a.jsx)(n.a,{href:"/docs/category/for-users",children:"user"})," and\n",(0,a.jsx)(n.a,{href:"/docs/category/for-app-authors",children:"developer"})," documentation on Flathub."]}),"\n",(0,a.jsx)(n.h3,{id:"community-support",children:"Community support"}),"\n",(0,a.jsxs)(n.p,{children:["You can contribute to the community by helping other users, answering\nquestions, providing feedback, and sharing tips and tutorials on\n",(0,a.jsx)(n.a,{href:"https://discourse.flathub.org/",children:"Flathub Discourse"}),". You can also\nprovide community support through the\n",(0,a.jsx)(n.a,{href:"https://matrix.to/#/#flathub:matrix.org",children:"Matrix channel"}),"."]}),"\n",(0,a.jsx)(n.h3,{id:"submission-reviews",children:"Submission reviews"}),"\n",(0,a.jsxs)(n.p,{children:["If you are familiar with Flathub's submission requirements and review\nprocess, you can help review submissions and ensure they comply with\nthe ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/requirements",children:"requirements"}),"."]}),"\n",(0,a.jsx)(n.h3,{id:"quality-guideline-reviews",children:"Quality guideline reviews"}),"\n",(0,a.jsxs)(n.p,{children:["If you have a design or UI/UX background, you can help developers by\nanswering their ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/metainfo-guidelines/quality-guidelines",children:"Quality Guideline"}),"\n",(0,a.jsx)(n.a,{href:"https://github.com/flathub/flathub/issues?q=is%3Aissue%20state%3Aopen%20label%3Aquality-guidelines",children:"questions"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["These contributions often involve reviewing or creating application\nicons, providing certain design feedback, or helping improve\n",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/metainfo-guidelines",children:"application metadata"}),"."]}
1),"\n",(0,a.jsx)(n.h3,{id:"code-contribution",children:"Code contribution"}),"\n",(0,a.jsxs)(n.p,{children:["The entire set of tooling used to run Flathub is available as open\nsource in the ",(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra",children:"flathub-infra organisation"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"You can contribute by opening a bug report, tackling an open issue or\nfixing a bug you encountered. Some contributions to these projects may\nrequire familiarity with Flatpak, its associated tooling, and various\nFlathub workflows and processes."}),"\n",(0,a.jsx)(n.p,{children:"A list of relevant components is provided below."}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/website/tree/main/frontend",children:"Flathub website frontend"}),"\n(React, Typescript, NextJS)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/website/tree/main/backend",children:"Flathub website backend"}),"\n(Python, FastAPI)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/vorarbeiter",children:"Flathub build dispatcher"}),"\n(Python, FastAPI)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/flatpak-builder-lint",children:"Flathub build linter"}),"\n(Python)"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/flatpak-external-data-checker",children:"Flatpak external data checker"}),"\n(Python)"]}),"\n"]}),"\n",(0,a.jsx)(n.h3,{id:"other-contributions",children:"Other contributions"}),"\n",(0,a.jsx)(n.p,{children:"Flathub also benefits greatly from contributions to upstream projects.\nSome relevant projects are listed below."}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://flatpak.github.io/xdg-desktop-portal/docs/for-contributors.html",children:"XDG desktop portals"}),"\nand its backends provide a collection of standard cross-platform APIs\nfor desktops, toolkits and applications which allows to reduce static\nsandbox permissions and migrate to secure portal alternatives.\nContributions here will enable Flathub apps to reduce their sandbox\nholes and make the overall app ecosystem more secure."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flatpak/flatpak/blob/main/CONTRIBUTING.md",children:"Flatpak"}),"\nis the core framework and tool for sandboxing, distributing and\nrunning Linux applications across different distributions. Flathub\nis a Flatpak-only app store."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flatpak/flatpak-builder/",children:"Flatpak Builder"})," is the\ntool that automates the process of building Flatpaks from their\nmanifests and managing their dependencies."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"/docs/for-app-authors/runtimes#currently-hosted-runtimes",children:"Flatpak runtimes"}),"\nare shared runtime environments that provide common libraries and\nthe platforms that all Flatpak applications depend and build upon."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flatpak/flatpak-builder-tools",children:"Flatpak builder tools"}),"\nare a collection of community-contributed scripts and modules that\nautomate common Flatpak packaging tasks."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/flatpak/flatpak-github-actions",children:"Flatpak GitHub actions"}),"\nis a GitHub action that allows to build and serve Flatpaks using\nGitHub workflows."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://docs.flatpak.org/en/latest/",children:"Flatpak documentation"})," is\nthe official documentation of Flatpak and Flatpak Builder covering\nsandboxing concepts, application packaging, and various guides."]}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"team-membership-process",children:"Team Membership Process"}),"\n",(0,a.jsxs)(n.p,{children:["New membership requests must be sponsored by an existing member who will\nopen an issue in the ",(0,a.jsx)(n.a,{href:"https://github.com/flathub-infra/memberships",children:"memberships repository"}),"\nlinking relevant activity and/or contributions."]}),"\n",(0,a.jsx)(n.p,{children:"Please note that all requests are evaluated on a case-by-case basis and\nmay take additional factors into consideration. Requests may also be\ndenied when necessary."}),"\n",(0,a.jsx)(n.p,{children:"A request is approved after receiving at least one approval from an\nexisting member unless it receives two denials, otherwise, the request\nwill remain open until a conclusion is reached. Approvals or denials\nfrom the member opening the request will not count."}),"\n",(0,a.jsx)(n.h2,{id:"membership-criteria",children:"Membership Criteria"}),"\n",(0,a.jsx)(n.h3,{id:"reviewer-team",children:"Reviewer Team"}),"\n",(0,a.jsx)(n.p,{children:"Members in the Reviewer Team are primarily responsible for reviewing,\napproving and merging new submissions."}),"\n",(0,a.jsx)(n.p,{children:"Criteria:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Past examples of performing a reasonable number of non-trivial new\nsubmission reviews within the last 3 months of the request."}),"\n",(0,a.jsx)(n.li,{children:"Familiarity with Flathub requirements, Flatpak permission system\
1nand general knowledge about software building and distribution\npractices."}),"\n"]}),"\n",(0,a.jsx)(n.h3,{id:"trusted-maintainer-team",children:"Trusted Maintainer Team"}),"\n",(0,a.jsx)(n.p,{children:"Members of the Trusted Maintainer Team are granted access to all\nFlathub submission repositories, including relevant access to the\ndeveloper portal in the website."}),"\n",(0,a.jsx)(n.p,{children:"They are primarily responsible for assisting with the maintenance and\ncontinuity of Flatpaks in situations where the original maintainer is\nunavailable or unresponsive."}),"\n",(0,a.jsx)(n.p,{children:"Criteria:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Past experience of maintaining a reasonable number of Flatpaks in the\nFlathub application repositories, within the last 3 months of the\nrequest."}),"\n",(0,a.jsx)(n.li,{children:"Past examples of assisting with package adoption, co-maintenance, or\nmaintenance efforts with adherence to proper maintenance practices."}),"\n",(0,a.jsx)(n.li,{children:"Familiarity with Flathub requirements, Flatpak permission system,\ngeneral knowledge about software building, distribution\npractices and Flathub-related tooling."}),"\n"]}),"\n",(0,a.jsx)(n.h3,{id:"build-moderation-team",children:"Build Moderation Team"}),"\n",(0,a.jsx)(n.p,{children:"Members of the Build Moderation Team are responsible for reviewing build\nand moderation requests, approving or denying them as appropriate, and\nproviding clarification or follow-up when developers raise questions."}),"\n",(0,a.jsx)(n.p,{children:"Criteria:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Members of any of the above teams are eligible"}),"\n",(0,a.jsx)(n.li,{children:"Familiarity with Flathub requirements and Flatpak permission system."}),"\n"]}),"\n",(0,a.jsx)(n.h3,{id:"quality-moderation-team",children:"Quality Moderation Team"}),"\n",(0,a.jsxs)(n.p,{children:["Members of the Quality Moderation Team are responsible for reviewing\napplications for compliance with the\n",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/metainfo-guidelines/quality-guidelines",children:"Quality Guidelines"}),"\nand responding to clarification requests from application developers."]}),"\n",(0,a.jsx)(n.p,{children:"Criteria:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"General knowledge and awareness about the Linux application ecosystem"}),"\n",(0,a.jsx)(n.li,{children:"Experience in application design and UI/UX design or research"}),"\n",(0,a.jsx)(n.li,{children:"Familiarity with Flathub guidelines"}),"\n"]}),"\n",(0,a.jsxs)(n.h3,{id:"flathub-infra-repositories",children:[(0,a.jsx)(n.code,{children:"flathub-infra"})," repositories"]}),"\n",(0,a.jsxs)(n.p,{children:["Most of the tooling and infrastructure used by Flathub is maintained in\nthe ",(0,a.jsx)(n.code,{children:"flathub-infra"})," organisation."]}),"\n",(0,a.jsx)(n.p,{children:"Access to the repositories there is granted based on contributions to\nthe relevant project for a reasonable period of time through all of\npull requests, reviews, issue triaging, and familiarity with the\nassociated project and its workflows."}),"\n",(0,a.jsx)(n.p,{children:"Access may initially be limited to the triage or write permission and\nmay later be expanded based on requirements and continued maintenance\nactivity."}),"\n",(0,a.jsxs)(n.h3,{id:"shared-modules-repository",children:[(0,a.jsx)(n.code,{children:"shared-modules"})," repository"]}),"\n",(0,a.jsx)(n.p,{children:"This repository contains manifests for commonly used Flatpak modules\nthat can be consumed as a git submodule."}),"\n",(0,a.jsx)(n.p,{children:"Write access is granted to contributors willing to maintain one or\nmore modules in the repository and the access may be revoked if the\ncontributor no longer maintains the relevant modules or if those modules\nare removed from the repository. Permissions are granted once the\naccount is added to the CODEOWNERS file."}),"\n",(0,a.jsx)(n.h3,{id:"flathub-application-repository",children:"Flathub application repository"}),"\n",(0,a.jsxs)(n.p,{children:["Please see ",(0,a.jsx)(n.a,{href:"/docs/for-app-authors/maintenance#maintainer-access-to-flathub-application-repository",children:"Maintainer access to Flathub application repository"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"revocation-of-membership",children:"Revocation of Membership"}),"\n",(0,a.jsx)(n.p,{children:"In the event of prolonged inactivity, team membership may be revoked."}),"\n",(0,a.jsx)(n.p,{children:"Inactivity is defined as the absence of any meaningful activity in the\nrelevant GitHub repositories or namespaces for a period exceeding one\nyear."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},8453(e,n,i){i.d(n,{R:()=>s,x:()=>o});var t=i(6540);const a={},r=t.createContext(a);function s(e){const n=t.useContext(r);return t.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.