|  | XFS Maintainer Entry Profile | 
|  | ============================ | 
|  |  | 
|  | Overview | 
|  | -------- | 
|  | XFS is a well known high-performance filesystem in the Linux kernel. | 
|  | The aim of this project is to provide and maintain a robust and | 
|  | performant filesystem. | 
|  |  | 
|  | Patches are generally merged to the for-next branch of the appropriate | 
|  | git repository. | 
|  | After a testing period, the for-next branch is merged to the master | 
|  | branch. | 
|  |  | 
|  | Kernel code are merged to the xfs-linux tree[0]. | 
|  | Userspace code are merged to the xfsprogs tree[1]. | 
|  | Test cases are merged to the xfstests tree[2]. | 
|  | Ondisk format documentation are merged to the xfs-documentation tree[3]. | 
|  |  | 
|  | All patchsets involving XFS *must* be cc'd in their entirety to the mailing | 
|  | list linux-xfs@vger.kernel.org. | 
|  |  | 
|  | Roles | 
|  | ----- | 
|  | There are eight key roles in the XFS project. | 
|  | A person can take on multiple roles, and a role can be filled by | 
|  | multiple people. | 
|  | Anyone taking on a role is advised to check in with themselves and | 
|  | others on a regular basis about burnout. | 
|  |  | 
|  | - **Outside Contributor**: Anyone who sends a patch but is not involved | 
|  | in the XFS project on a regular basis. | 
|  | These folks are usually people who work on other filesystems or | 
|  | elsewhere in the kernel community. | 
|  |  | 
|  | - **Developer**: Someone who is familiar with the XFS codebase enough to | 
|  | write new code, documentation, and tests. | 
|  |  | 
|  | Developers can often be found in the IRC channel mentioned by the ``C:`` | 
|  | entry in the kernel MAINTAINERS file. | 
|  |  | 
|  | - **Senior Developer**: A developer who is very familiar with at least | 
|  | some part of the XFS codebase and/or other subsystems in the kernel. | 
|  | These people collectively decide the long term goals of the project | 
|  | and nudge the community in that direction. | 
|  | They should help prioritize development and review work for each release | 
|  | cycle. | 
|  |  | 
|  | Senior developers tend to be more active participants in the IRC channel. | 
|  |  | 
|  | - **Reviewer**: Someone (most likely also a developer) who reads code | 
|  | submissions to decide: | 
|  |  | 
|  | 0. Is the idea behind the contribution sound? | 
|  | 1. Does the idea fit the goals of the project? | 
|  | 2. Is the contribution designed correctly? | 
|  | 3. Is the contribution polished? | 
|  | 4. Can the contribution be tested effectively? | 
|  |  | 
|  | Reviewers should identify themselves with an ``R:`` entry in the kernel | 
|  | and fstests MAINTAINERS files. | 
|  |  | 
|  | - **Testing Lead**: This person is responsible for setting the test | 
|  | coverage goals of the project, negotiating with developers to decide | 
|  | on new tests for new features, and making sure that developers and | 
|  | release managers execute on the testing. | 
|  |  | 
|  | The testing lead should identify themselves with an ``M:`` entry in | 
|  | the XFS section of the fstests MAINTAINERS file. | 
|  |  | 
|  | - **Bug Triager**: Someone who examines incoming bug reports in just | 
|  | enough detail to identify the person to whom the report should be | 
|  | forwarded. | 
|  |  | 
|  | The bug triagers should identify themselves with a ``B:`` entry in | 
|  | the kernel MAINTAINERS file. | 
|  |  | 
|  | - **Release Manager**: This person merges reviewed patchsets into an | 
|  | integration branch, tests the result locally, pushes the branch to a | 
|  | public git repository, and sends pull requests further upstream. | 
|  | The release manager is not expected to work on new feature patchsets. | 
|  | If a developer and a reviewer fail to reach a resolution on some point, | 
|  | the release manager must have the ability to intervene to try to drive a | 
|  | resolution. | 
|  |  | 
|  | The release manager should identify themselves with an ``M:`` entry in | 
|  | the kernel MAINTAINERS file. | 
|  |  | 
|  | - **Community Manager**: This person calls and moderates meetings of as many | 
|  | XFS participants as they can get when mailing list discussions prove | 
|  | insufficient for collective decisionmaking. | 
|  | They may also serve as liaison between managers of the organizations | 
|  | sponsoring work on any part of XFS. | 
|  |  | 
|  | - **LTS Maintainer**: Someone who backports and tests bug fixes from | 
|  | uptream to the LTS kernels. | 
|  | There tend to be six separate LTS trees at any given time. | 
|  |  | 
|  | The maintainer for a given LTS release should identify themselves with an | 
|  | ``M:`` entry in the MAINTAINERS file for that LTS tree. | 
|  | Unmaintained LTS kernels should be marked with status ``S: Orphan`` in that | 
|  | same file. | 
|  |  | 
|  | Submission Checklist Addendum | 
|  | ----------------------------- | 
|  | Please follow these additional rules when submitting to XFS: | 
|  |  | 
|  | - Patches affecting only the filesystem itself should be based against | 
|  | the latest -rc or the for-next branch. | 
|  | These patches will be merged back to the for-next branch. | 
|  |  | 
|  | - Authors of patches touching other subsystems need to coordinate with | 
|  | the maintainers of XFS and the relevant subsystems to decide how to | 
|  | proceed with a merge. | 
|  |  | 
|  | - Any patchset changing XFS should be cc'd in its entirety to linux-xfs. | 
|  | Do not send partial patchsets; that makes analysis of the broader | 
|  | context of the changes unnecessarily difficult. | 
|  |  | 
|  | - Anyone making kernel changes that have corresponding changes to the | 
|  | userspace utilities should send the userspace changes as separate | 
|  | patchsets immediately after the kernel patchsets. | 
|  |  | 
|  | - Authors of bug fix patches are expected to use fstests[2] to perform | 
|  | an A/B test of the patch to determine that there are no regressions. | 
|  | When possible, a new regression test case should be written for | 
|  | fstests. | 
|  |  | 
|  | - Authors of new feature patchsets must ensure that fstests will have | 
|  | appropriate functional and input corner-case test cases for the new | 
|  | feature. | 
|  |  | 
|  | - When implementing a new feature, it is strongly suggested that the | 
|  | developers write a design document to answer the following questions: | 
|  |  | 
|  | * **What** problem is this trying to solve? | 
|  |  | 
|  | * **Who** will benefit from this solution, and **where** will they | 
|  | access it? | 
|  |  | 
|  | * **How** will this new feature work?  This should touch on major data | 
|  | structures and algorithms supporting the solution at a higher level | 
|  | than code comments. | 
|  |  | 
|  | * **What** userspace interfaces are necessary to build off of the new | 
|  | features? | 
|  |  | 
|  | * **How** will this work be tested to ensure that it solves the | 
|  | problems laid out in the design document without causing new | 
|  | problems? | 
|  |  | 
|  | The design document should be committed in the kernel documentation | 
|  | directory. | 
|  | It may be omitted if the feature is already well known to the | 
|  | community. | 
|  |  | 
|  | - Patchsets for the new tests should be submitted as separate patchsets | 
|  | immediately after the kernel and userspace code patchsets. | 
|  |  | 
|  | - Changes to the on-disk format of XFS must be described in the ondisk | 
|  | format document[3] and submitted as a patchset after the fstests | 
|  | patchsets. | 
|  |  | 
|  | - Patchsets implementing bug fixes and further code cleanups should put | 
|  | the bug fixes at the beginning of the series to ease backporting. | 
|  |  | 
|  | Key Release Cycle Dates | 
|  | ----------------------- | 
|  | Bug fixes may be sent at any time, though the release manager may decide to | 
|  | defer a patch when the next merge window is close. | 
|  |  | 
|  | Code submissions targeting the next merge window should be sent between | 
|  | -rc1 and -rc6. | 
|  | This gives the community time to review the changes, to suggest other changes, | 
|  | and for the author to retest those changes. | 
|  |  | 
|  | Code submissions also requiring changes to fs/iomap and targeting the | 
|  | next merge window should be sent between -rc1 and -rc4. | 
|  | This allows the broader kernel community adequate time to test the | 
|  | infrastructure changes. | 
|  |  | 
|  | Review Cadence | 
|  | -------------- | 
|  | In general, please wait at least one week before pinging for feedback. | 
|  | To find reviewers, either consult the MAINTAINERS file, or ask | 
|  | developers that have Reviewed-by tags for XFS changes to take a look and | 
|  | offer their opinion. | 
|  |  | 
|  | References | 
|  | ---------- | 
|  | | [0] https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git/ | 
|  | | [1] https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/ | 
|  | | [2] https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/ | 
|  | | [3] https://git.kernel.org/pub/scm/fs/xfs/xfs-documentation.git/ |