servo / servo/project

Proposal: Create a "Stylo Maintainers" team

Open
#137 1 comment 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
254
Forks
13
PR merge metrics
No merged PRs in 30d

Description

Motivation

We have previously discussed wanting to diffuse responsibility for maintainership so that:

  • We can reduce the burden on the core set of maintainers who currently need to maintain a very large set of crates.
  • We can expand the set of maintainers without expanding the number of people who permissions to do absolutely everything (which is problematic from a security perspective). Indeed, by setting up a number of teams like this, we would likely be able to actually reduce the set of people with "everything" permissions.

This would make it clear to new contributors who is responsible for this section of our codebase. And would also support a regular publishing schedule for the crates.io versions of the crate.

Responsibilities

  • Reviewing and merging pull requests
  • Keeping Servo version of Stylo in sync with Gecko version
  • Releasing new crate versions

Publishing permissions

The Stylo Maintainers team should be formalised as a Github team within the Servo organisation. This team should be given publishing permissions over the "crates in scope" below. This will allow any set of two members of the team to publish the "stylo" set of crates (the second member being required for the Github code review for the version bump).

Optionally: servo/stylo github repo admin permissions

Ideally every member of the team should also have the permissions necessary to perform a "sync" from Gecko's to Servo's copy of Stylo. This implies the ability to force push to the main branch. However, as we want protection from accidental "force push to main" even for people who should have the permission to do so, the current setup is that force push is generally forbidden for everyone. But repo admins can temporarily disable that permission, force push, and then turn the protection back on again. Therefore it would be better to give the team admin permissions over the servo/stylo repo. Admin permissions would not be required for the servo/rust-cssparser repo as there is no force-push based workflow there.

I'm anticipating this being controversial, so I will in advance say that the rest of this proposal could be accepted without this provision. But I'm putting it in here, because I still think this is what we ought to do. A work around is that the maintainer can create

Crates in scope

From the servo/stylo repo:

  • stylo
  • selectors
  • stylo_traits
  • stylo_derive
  • stylo_dom
  • stylo_atoms
  • stylo_config
  • stylo_static_prefs
  • stylo_malloc_size_of
  • to_shmem
  • to_shmem_derive
  • servo_arc

From the servo/rust-cssparser repo:

  • cssparser
  • cssparser-color
  • cssparser-macros

From the servo/app_units repo:

  • app_units

This is intended to represent a related set of crates that form a informal "module" of related functionality. And also the set of crates that Stylo depends on and may need to be published as part of Stylo crates.io release.

Proposed initial membership

This is intended to represent the group of people involved with the Servo project who are already the de facto maintainers of Stylo.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the proposed responsibilities, membership, and permission model in issue #137, then inspect the GitHub organization settings for the servo/stylo, servo/rust-cssparser, and servo/app_units repositories. Confirm the publishing scope for the listed crates and resolve whether repository admin permissions are included. Done means the Stylo Maintainers team is created with agreed members and permissions.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, rust
Domain
developer-experience, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.