-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define roles, qualifications, and privileges #1
Comments
Some quick initial thoughts: I think 200 stars for a library is perhaps a bit of a high bar? There are only 18 projects on GH that meet that threshold currently, and not all of them are libraries even. I don't really use stars myself, if I star something it's because I intend to check it out at a later time perhaps, but realistically I look at that list maybe once a year. 😉 I guess the intent is to have it as a popularity metric, and I don't really have any better idea for one if we want to do that based on a concrete number. I'd also say popularity doesn't necessarily make a library "core-ish" - Halogen is the most-starred PS library, but it certainly doesn't belong in the PS org. I'd say "core-ness" is more based on a library providing fundamental building blocks for a program. There are perhaps some existing core libraries that don't entirely fit that, like quickcheck and minibench, but minibench at least is a dev dependency of some of the other core libraries if I remember rightly, and maybe QC is too. Another aspect of "core-ness" is perhaps also that they're basically done - there's maybe room for some minor additions, but without changes to the language there should be very few reasons to make breaking changes in them. That's all assuming we're basically sticking to things the way they are now though. 🙂 Core team member: I certainly haven't read that, or the oft cited TaPL 😄. I've read some papers and things, mostly for reference material, but I don't think it needs to be a requirement - there's plenty of things that can be worked on in the compiler that don't require touching the type checker. I think just making a number of non-trivial contributions and demonstrating an understanding of the ethos and goals of the project (which are some more things that should be codified really) would be sufficient. |
Maybe having read that book shouldn't be a requirement, but I REALLY like this part:
I've done some minor / trivial contributions, and I found that most of the time I spent was "wasted" on figuring out the project structure, what was doing what, how to properly debug and setup things, etc. Maybe this topic should have it's own issue :D |
Perhaps that's another question to be clarified first: what criteria must a library meet to be considered a "core PS library"? Based on what you said the criteria might include the following:
Perhaps this should be discussed in its own issue? |
Makes sense. I think the question I was trying to answer was, "What would have to occur for Core Team Members to trust someone else to make changes to the language without huge concern?" Being competent is one such factor, but I hadn't considered the possibility of specialization within the Core Team Members. What is the ethos of the project? It seems to be
Getting that documented would likely help new contributors actually contribute. I was looking at the source code recently and it took a while to figure out where to start, what does what, and a large overview of the flow of code. |
I think it needs to be clear that the goal of the org is not to amass projects (and thus responsibilities). We want to amass contributors so that any given contributor has less individual responsibility. What we have in the org are things that are pretty fundamental to using the language and the ecosystem, and the requirement that core only depends on core naturally lends to other offshoots so we can do basic things like testing or performance measurements. I'm wondering if it would be a simplification to have a periodic nomination process, where users can anonymously nominate libraries and contributors to teams, which are voted on by existing members of the org as a whole, and those accepted can either choose to join or not join. This would give us an opportunity to stop and reflect on those making an impact in the ecosystem, rather than the current ad-hoc "hey what about that person" decisions. |
To follow up, I think a big problem with the status quo is there is no reflection, or if it is, it is ad hoc. There isn't a deliberate, recurring process by which we (as a whole community) stop to reflect and thank those contributors making an impact. The problem I have with the above outline is that it kind of pointifies/gamifies it. To me it reads like, "level up today!" as a way to drive engagement. I recognize that's a bit cynical. But most contributors are doing what they do because they love it, and we like to continue doing it because others love the result of our work and the impact it makes on the learning process, work life, etc. I'm just wondering if there's an opportunity for us to collectively stop, recognize, and thank those contributing in what little way we can. Titles can be obtuse, sure, but it's also a way we can recognize what someone has done and show that we trust them. The current process of "you make your own way, and only get something when you ask for it and make a case" is frankly disheartening. |
I strongly agree with this. I wonder if there is a sort of recognization system that can be put in place for contributors, popular and unfamiliar libraries. It can be done bi-monthly or whatever period that works for the community. We can also have something showing recognization on Pursuit, sort of how cargo does it and display the bi-monthly people/library that we want to thank on Discourse - like this we can have more people also use discourse and pursuit to see how people are helping the community, two birds one stone... P.S: This can also allow new contributors to see how people are engaging in the community so they can do the same. |
Even if it is read in a somewhat cynical way, there's still truth in that perspective. It sounds like you are suggesting the above outline be reworded, so that it tries to encourage people to contribute because they love doing such work rather than treating everyone like we're in some MMORPG where everyone is competing with one another in terms of leveling up their character, armor, weapon, skills, etc. For example, instead of a perception of "you must do X, Y, and Z before you can contribute; once we see that you are worthy, we'll welcome you," it is perceived instead as "if you want to work with us to make great software, we welcome you." |
I've tried to distil points raised from discussion in #1, my own perspective, and also Phil's [discourse post on the same topic](https://discourse.purescript.org/t/the-principles-of-purescript/163) into a set of project values which we can point contributors to to better set expectations and give people an idea of where the project is heading. What do people think of this?
See also #1. This PR mostly aims to document what the current roles and processes for decision making and getting things merged are, so that they will be clearer to the wider community. That is, most of what I have written here is intended to describe the current model (rather than prescribe a new model). Unlike in #1, I haven't described a "Language Supporter" role: in order to keep this PR small, I would prefer to focus just on people who have commit access to the compiler and/or core libraries for now. There is also a part of this PR which does (sort of) represent a change in the governance model, however. I would also like to start giving commit access (i.e. "core collaborator" status) to some people on the compiler repository. Up until now, we haven't done this at all; everyone who has commit access on the compiler repository is currently a "core owner". I would like to add more core collaborators because we are a little overstretched: we are not recruiting new maintainers at a very high rate, and I think there is a bit too much going on for us (i.e. the current core team) to be able to comfortably keep up with right now. I think the main barrier to offering more people commit access on the compiler repo right now is that it is not entirely clear what would be expected of them. With the changes in this PR, I hope to make expectations clear, so that we can start adding people as core collaborators for the compiler repository, and so that these people will feel empowered to help out without worrying about overstepping expectations. Finally, there are also some changes to make the formatting of this document more consistent, and some minor clarifications (e.g. in the Purpose section).
Preface
Specifically, I'd like this issue to answer the following questions with an official and mutually-agreed-upon answer. First, I will list the questions to answer. Then, I will write down either my current understanding of those questions' answers or what I think should be those answers.
The Questions
My Understanding
What are the roles?
purescript-*
libraries that fall under thepurescript
GitHub organization (hereafter referred to as the "core PS libraries"). In terms of GitHub roles, this would be a GitHub Organization Owner role.How does each role interact with one another?
Each has freedom to contribute in whatever way they choose and as frequently as they choose to contribute.
Core Team Members have final say in decision-making when it comes to the language repo, core PS libraries, and PS infrastructure.
At least two Core Language Members must approve a PR before a merge is allowed in one of the core PS libraries. If another Core Language Member for that repo or a Core Team Member disapproves the PR, consensus must be reached before the PR can be merged. If consensus cannot be reached, the consensus among Core Team Members will have the final say in the matter.
When a non-Core Team Member submits a PR to the language repo, at least two Core Team Members must approve a PR before a merge is allowed. If at least one Core Team Member disapproves the PR, consensus must be reached before the PR can be merged.
When a Core Team member submits a PR to the language repo, at least one other Core Team member must approve the PR before a merge is allowed. If at least one Core Team Member disapproves the PR, consensus must be reached before the PR can be merged.
If a situation arises that requires consensus among Core Team members and such consensus cannot be reached, the decision will be postponed.
Language Supporters who have express control over their project/work can ignore feedback from Core Team Members and/or Core Library Members. However, Core Team Members can drop any "official" stamp they previously gave to the project/work of said Language Supporter at any time.
What qualifies/disqualifies a person for each role?
A person will be disqualified from a role if said person exhibits assholery in that they continually show disrespect to and disdain for others, regardless of who that person is and what role they may or may not serve in the PS community.
Qualifications for each role:
purescript
GitHub organization.Note: by "active member," we mean "has chatted with others in the FP Slack; opened and/or responded to threads in the PureScript Discourse forum; contributed PRs and/or opened issues in a PureScript project; and/or created blog posts, videos, talks, etc. for PureScript"
How does one obtain each role?
Language Supporter
To determine whether they've been around for at least 6 months, the person must open a thread in the Discourse forum, referring back to the first time they first started being active in the PureScript community and indicating one of two things:
In the first situation, either a Core Team Member or Core Library Member will respond to them within 1 month and indicate whether such a need is needed, whether the person is currently competent enough to do that without much/any hand-holding (note: this is not meant as an insult; just an honest "there's not a lot of time to spend on supporting such people right now unfortunately. So, if they can't do it, then we shouldn't agree to grant such a role to them either"), what they could potentially do to become more competent if that's needed (just because they can't now, doesn't mean they can't in the future), and what support they could provide the person. The two parties will decide upon an action plan from there.
Core Library member
When the person wishes to obtain access to a core PS library repo, the person must contribute to the repo in question at least 10 times, and then open an issue in that repo expressing their desire to obtain this role. Other Core Library Members will discuss with that person whether they should be granted that role or not.
When the person wishes to relocate a project/work that they have created into the GitHub
purescript
organization, they person must first create such a project/work, receive wide-spread community support as evidenced by at least 200 stars on GitHub, and then open an issue in thepurescript/governance
repo concerning the relocation of the repo. If Core Team Members approve, the relocation will occur and the core developer(s) of that project will be granted the GitHub Member role for that repo.Core Team Member
To obtain this role, a person must do a number of things:
Thoughts? I couldn't come up with a better name for the first version of 'Language Supporter' that is looking to help with maintenance and isn't looking for an "official" stamp sort of thing.
The text was updated successfully, but these errors were encountered: