Skip to content
@haskell-github-trust

Haskell GitHub Trust

Haskell packages community ownership trust

Haskell GitHub Trust

Haskell GitHub Trust is a GitHub organization for community ownership of Haskell packages.

The two essential features of the Haskell GitHub Trust are

  1. All Haskell Github Trust organization members are Owners, and have control over all repositories, including transferring in and out.
  2. A Hackage “Group Account” haskell_github_trust so that every Trust Owner can publish any package in the Trust.

This is a place to keep your Haskell packages for long-term community maintenance.

You will still retain ownership and control of your package, but if you ever stop maintaining your package then someone else can maintain it without needing your permission.

How to add your own package to the Trust

  1. Transfer GitHub ownership of the package repository to this organization, https://github.com/haskell-github-trust
  2. Add https://hackage.haskell.org/user/haskell_github_trust as a Hackage maintainer for the package.

That’s it. We accept all packages, in any condition, with zero commitment or obligation.

How to become a Trust Owner

Request to become a Trust Owner on the Discussions page, or by asking any other Trust Owner. Trust Owners must be vouched for by one other Trust Owner. We keep a record of which Trust Owners were vouched for by whom.

After you accept the Trust Owner invitation, please set your visiblity to Public. This is a trust-based organization, so we want the ownership list to be Public for transparency.

If any Trust Owner

  • Inserts malevolent code in a package
  • Uses the haskell-github-trust for fraud
  • Uses the haskell-github-trust CI to mine Bitcoin
  • Transfers a package repository out of this org without permission of the maintainer
  • Or any other similar bad-faith activity

then that person and the Trust Owner who vouched for them will be blamed and shamed.

How to add a Trust Owner

Any Trust Owner may add another person who they trust to be a Trust Owner. Invite the other person to become an Owner of this GitHub organization, then add their name to the Trust Owner list and your own name as the Trust Owner who vouched for them. For transparency, every Trust Owner should be a Public Owner of the GitHub organization.

How to publish to Hackage

You need your own “uploader” account on Hackage. Use the haskell_github_trust account password to add your own “uploader” account to the list of package Maintainers. The haskell_github_trust account does not have upload permission, rather it is a “Group Account” as described on hackage.haskell.org/upload.

Group Accounts

Occasionally organizations want to have a group / organizational account for a package that is maintained by a group of people. The recommended approach for these cases is to only do package uploads from individual accounts and use the group account only for managing the maintainer list for the package.

In this way you can upload any package in this org.

How to add other people’s packages to the Trust

  1. Follow the instructions in Taking over a package with your own Hackage account. Declare your intent to add the package to the Haskell GitHub Trust.
  2. Add the Hackage account haskell_github_trust to the list of package Maintainers.
  3. Transfer or fork or copy the package repository into this org.

How to talk about the Haskell Github Trust

Talk in the GitHub Discussions or in Haskell Discourse.

How to quit being a Trust Owner

You can transfer your repos back to your own account and quit this organization any time you want.

Package manners

If a package has an active maintainer, then any volunteer improvements should be submitted as Pull Requests.

If a package is being ignored, then any Trust Owner may make improvements and publish new versions. Use courtesy and judgement when deciding whether a package is being ignored.

Secrets

The password for the haskell_github_trust Hackage account is in https://github.com/haskell-github-trust/secrets .

The only restricted secret is the password for the email account used to create the haskell_github_trust acount. This is stored in a separate organization https://github.com/haskell-github-trust-secrets

Other organizations

FAQ

  • Q. If someone upgrades my repo and publishes a release to Hackage while I'm on vacation, should I get offended?

    A. No. If they did something wrong then fix it and then publish another release.

  • Q. What should I do if I suspect a Trust Owner is acting in bad faith?

    A. Talk about it in private messages with the other Trust Owners.

  • Q. What happens if one of the Trust Owners transfers all the repos to the Trust Owner’s private account?

    A. We can fork the repositories back here and expel the Trust Owner.

  • Q. What happens if one of the Trust Owners inserts malicious code and publishes to Hackage?

    A. Talk to the Hackage Trustees.

  • Q. What happens if a Trust Owner deletes this whole org?

    A. We can rebuild this org from local clones of the repositories. We would lose the information in the GitHub Issues. Nothing else would be lost.

Popular repositories

  1. replace-megaparsec replace-megaparsec Public

    Stream editing with Haskell Megaparsec parsers

    Haskell 79 2

  2. thyme thyme Public

    A faster date and time library based on time

    Haskell 46 33

  3. ulid ulid Public

    Haskell implementation of ULIDs (Unique Lexicographically Sortable Identifiers)

    Haskell 29 10

  4. crypto-api crypto-api Public

    Haskell generic interface (type classes) for cryptographic algorithms

    Haskell 28 11

  5. replace-attoparsec replace-attoparsec Public

    Stream editing with Haskell Attoparsec parsers

    Haskell 14 2

  6. vector-th-unbox vector-th-unbox Public

    Deriver for unboxed vectors using Template Haskell

    Haskell 13 23

Repositories

Showing 10 of 19 repositories

Top languages

Loading…

Most used topics

Loading…