Why am I posting this
The context for this post is that some time ago I voiced a proposal to move Spago under the PureScript org on GitHub (the various reasons for why this is a decent idea are in the linked post).
People seemed to like it, so this finally happened some days ago! However you might have noticed that I just moved the repo back to the Spacchetti org.
The reason for that is that I found myself unable to perform administrative tasks in the new location, and the reason for that is that I’d need to be member of the PureScript org to have access to the aforementioned things.
However, it was decided that I didn’t have enough contributions to the org repos to deserve a spot in there (I could quote the exact words, but then I might be misquoting and/or leaving context out, etc etc, so note that what you’re reading here is my perception of the story, how I experienced it, how I felt, and so on)
This said, the point of this post is to bring awareness to the larger community on how the language governance is handled, and hopefully spark some change (which some of you might read as “making a fuss about things publicly”, but you know, that’s kind of the point of democracy as well, so I guess it’s a good practice to have? You know, “call your representatives”, etc)
What’s my problem here
In the span of a couple of days both me (in Spago) and @justinw (in
psc-package, see this thread) lacked access to CI settings for performing administrative tasks that are normal as maintainers of these pieces of software, and I think this is terrible: I feel it’s frustrating to be a maintainer of something but still not have access to all the things related to the lifecycle of that something.
(Note: of course I could continue just fine to develop stuff under my profile or the Spacchetti org - and that’s what I’ll do anyways - but that wouldn’t solve the problem that we were trying to solve in the first place)
(Note: I tagged Justin but he’s not involved in all these words, I just noticed the pattern happening)
What’s my wish for today: empowering people that want to do things
So I just wish that we’d liberally give out membership of the PureScript org (on GitHub). In particular, the policy that makes most sense to me is “if someone’s a maintainer of a repo in the org, they should be a member of the org”.
Note: member of the org is not the same as admin of the org.
But isn’t this dangerous?
No: org members cannot interact in any special way with repos they don’t have access to in the org. They can only create repos new repos under the org, which admins can quickly revert if anything suspicious happens.
My main source of inspiration for how this empowerment can happen beautifully in the context of Open Source projects is dhall-lang’s “contributing” document (shoutout to Gabriel for handling all of this so gracefully). In there - very early in the history of the language - were defined things like:
- how to propose changes
- how they get approved and who can approve them
- timeouts for decisions
- how to get the commit bit to things
I’ve been involved with Dhall for some time now and these policies have worked out wonderfully and very effectively.
I also adapted that document for Spago, and as a matter of fact I give out the commit permissions very liberally (one needs very few non-trivial commits usually), which seems to work out very nicely as well
What’s my wish for this topic in general: documenting processes for PureScript
Currently it is not possible to find publicly any info about the following things in PureScript land:
- if there’s a “core team”
- who’s in the “core team” exactly
- what are the rights and obligations of the members of the “core team”
- how this “core team” overlaps with the
purescriptorg on GitHub
- what are the rights and obligations of the org members
- what’s the process to get in and out of both the “core team” and the org
- what’s the contribution process to get the commit bit to the repos owned by the org
What I would like to see happening in the longer term is that we create a place to write all of this down (maybe a
purescript/governance repo? It doesn’t really matter how, it just needs to be a public container)
Note: something that I am not expressing here is any kind of moral judgement on what this “governance model” is. For what I care we can have open membership, or a BDFL, etc. Whatever thing is fine by me, as long as procedures are documented in the public: this is so that expectations are clear and openly stated, and this avoids mismatches and implicit behaviours from happening.
Why do I wish for this?
Subtitle: why is transparency important?
Now, the last thing I want to do is to sit here and give a lecture about why transparency in organizational processes is important, but I guess the need is present after all.
Here are some reasons why a public organization should make their processes as transparent as possible:
- accessibility: if processes are documented publicly, everyone is aware of them, and can engage freely into these processes if they want to, and there’s a “correct” way to do that
- …which enables diversity: if the rules of engagement are clear, this levels the field for everyone to contribute, since there’s a standard measure that everyone is being hold to, and implicit power structures are less effective
- bus factor is also a very important one: publicly-documented procedures empower enthusiastic contributors to contribute to their maximum potential. If procedures are unclear they might get discouraged and shy away. If knowlegeable contributors get tired/busy/sick/etc and policies are not written down this might lead to lost knowledge, etc.
All of these factors are major contributors to project health, also known as “the probability that this language is still relevant in 5 years”.
I really want this probability to be as high as possible, and I really like this community, and I’d like all of us to succeed, so let’s try our best at this