Hi folks,
I just recently dusted off my Hackage admin hat in response to a request for help, which led me to consider this broader policy issue.
The existing policy regarding taking over a Hackage package is here: Taking over a package - HaskellWiki
It gives instructions for what to do if:
- the maintainer can be contacted, and consents to the takeover,
- the maintainer can’t be contacted
It does not give instructions for what to do if the maintainer can be contacted, doesn’t want to maintain the package, but also doesn’t want anyone to take it over.
With the cryptonite family of packages in particular, the original author has taken the position that:
- people may have used the package because they trusted the author,
- the author, being no longer involved, can’t evaluate any new maintainer to be a suitable recipient of that trust,
- therefore, no ownership transfer maintains / deserves the trust that the package may have originally carried.
I’m sympathetic to this line of argument, perhaps especially for cryptography libraries. But I think the thing that really matters is what community expectations are here.
Granting that hackage-admins are not always going to be qualified to assess trustworthiness of a new contributor, is it appropriate that we are willing to hand over unmaintained packages to any volunteer? Here are a few possible stances one might take:
- When I depend on a package, I trust the current owner / maintainer, I trust them (alone) to decide a suitable successor for that trust, and I trust the Hackage admins to stay out of that process in all cases.
- The above policy, except that the Hackage admins can exceptionally intervene in cases where transferring maintainership is important to the community as a whole, there’s transparency about the process, the new maintainer is a known and respected community member, etc. etc.
- Hackage admins should have broad discretion to approve or deny maintainership transfers based on their own understanding of the situation and the stakes involved, and can routinely make these calls without it being a big deal.
- Having packages unmaintained on Hackage is a greater evil, ultimately, than having them transfer ownership between different maintainers. We should let anyone who is willing step up in most cases, even when we aren’t able to meaningfully “vet” them. After all, existing packages aren’t meaningfully vetted.
Any of these stances can also be combined with being in favour or against package owners being able to explicitly opt in or opt out of being replaced in this way.
My default inclination is to fall on the second case above, where ownership transfers should generally only be done by consent of the original owner or by consensus of the community (and the original owner, if available). In the cryptonite case, this policy endorses the current painful transfer process from existing libraries to differently-named forks. I understand that process causes a lot of work for a lot of people (I’ve been annoyed by it myself), but I think the trustworthiness we’d be giving up in the other direction is also a nasty cost, and I hope we can usually avoid it with better succession planning and perhaps better tooling over post-hoc mechanisms like this.
(I wonder if we could make changes to cabal to make it willing to use a new package with a different name as a substitute for an existing one?)
Some previous discussion: Deciding whether to create a new package or take over an abandoned one - #14 by gcox