Skip to content

Maintainership standards #7

Open
@goldfirere

Description

@goldfirere

I was cruising by and remembered some conversations I had had with @tomjaguarpaw about best practices in package maintainership. I wonder whether this group would be a good place to flesh out such standards and work to get them into part of the general Haskell community workflow. I'm opening this as an Issue, not a PR, because it's not all fully-formed enough in my head to write up a formal proposal. Yet the idea is well formed enough that I think writing something is better than nothing. Do feel free to just close this if this is too far from your immediate agenda and is unhelpful.


Goal: Have the community recognize some subset of packages as well maintained. These packages might be highlighted with a badge on Hackage, for example. The packages are then understood to be more likely to be reliable into the future, and more worthy of being the basis of, say, a commercial enterprise.

Non-goal: Getting every Haskell contributor to follow these standards or to mandate anything, anywhere. This is all opt-in.

Bronze-Standard Maintenance:

  • The package lists a maintainer email address. Emails to this address are answered within 2 weeks. (Exceptions allowed around holidays.)
  • The package lists a place to post bugs. Posts to this location receive some response within 2 weeks. (Exceptions allowed around holidays.)
  • The package includes a license.
  • The package includes a testsuite and CI infrastructure.
  • The package builds with all (stable) versions of GHC released between 6 months ago and two years ago (among, perhaps, others). Exception: if the package uses features new in GHC since four years ago, it is appropriate to have a lower version bound on GHC version.

Silver-Standard Maintenance:

  • All of the Bronze-Standard requirements.
  • The package includes a changelog, detailing how it has evolved from release to release.
  • The package is included in a Stackage LTS.
  • For the past three releases of GHC (including minor releases), the package was up-to-date (the testsuite passed) within 1 month of GHC release.

Gold-Standard Maintenance:

  • All of the Silver-Standard requirements.
  • The package includes a backup maintainer (with email address), who has full technical credentials to take over the project.
  • The package contains a takeover plan if the primary maintainer becomes unresponsive.
  • The package's ticketing system contains a reference to a code of conduct or other structure to encourage professional, welcoming communication.
  • The package's README or manual includes informative examples of how to use the package. (Not just type signatures, for example.) (Is this too subjective?)
  • The package's testsuite includes performance tests.
  • The package builds with all (stable) versions of GHC released between 1 month ago and four years ago (among, perhaps, others). Exception: if the package uses features new in GHC since four years ago, it is appropriate to have a lower version bound on GHC version.

Platinum-Standard Maintenance:

  • All of the Gold-Standard requirements.
  • The package includes a timestamped statement within the past year attesting the aim to meet the Platinum-Standard requirements.
  • The testsuite is analyzed for code coverage and covers at least 95% of the code in the package.
  • Issues reported against the package get triaged in at most 2 business days.

Certifying the standard to which a package adheres clearly takes some human intervention, but most of the tests above can be automated. A package would have to request getting the badge in order for a human to assess it. This kind of assessment might be something the HF could take on. I do think having these maintenance levels would be very useful to people deciding on what packages to use in their mission-critical project!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions