This document describes the GHC Steering Committee and the bylaws by which it operates.
The committee is formed of roughly 10 members of the Haskell community who wish to volunteer for this service. It is our aim that this committee be diverse; by representing different viewpoints, we will make decisions that benefit larger segments of our community.
Specifically, we would like the committee to represent at least the following constituencies:
- GHC developers
- Authors (whether in print or online)
- Educators
- Industrial users
- Researchers
- Tooling developers
We recognize that we may not always live up to this ideal, but when choosing new members, we aim to correct any imbalances.
Co-chairs. The committee has two co-chairs. This role is more ceremonial than practical, as all members of the committee have the right to set the agenda and move our business forward. The co-chairs are the stop of last resort for any issues of contention, but are not otherwise distinguished from other members of the committee.
Agreement among the co-chairs can initiate a process to remove a member from the committee. If this happens, the co-chairs must explain their rationale to the entire committee, including the member that has been removed. In order to avoid public embarrassment, it is expected that this communication be by private email, not via a mailing list of public record. (The chairs may choose, however, to use public channels, in egregious circumstances.) The committee does not need to weigh in during this process, though the expectation is that if the co-chairs abuse their power, the committee will vote them out of their chairships.
Secretary. The committee has one secretary. The secretary is the first stop for keeping our repository up-to-date and running our selection process.
Nudger. The committee has one nudger. The nudger's job is to make sure other committee members are fulfilling their duties by nudging them (often in public) to do so.
The co-chairs and secretary positions remain with an individual until they decide to relinquish the role, though a majority vote among the committee can strip a member of their co-chair/secretary position.
The nudger position rotates among members every six months. In the event that the nudger ends up needing nudging (by any other member of the committee), the nudger should step down and volunteer to do a better job in some future six months; in the event that they still struggle to stay on top of their nudging duties, it may be a sign that they are too busy for committee work and should step down.
The secretary is in charge of managing who the nudger is, by creating a rotation for this position.
All members of the Steering Committee agree to abide by the Guidelines for Respectful Communication. As the guidelines document describes, if one of us errs in our communication, please opt to bring up the matter with that individual directly. If that is not feasible, then please bring it up with the (co-)chair of the committee. Everyone should feel welcomed to contribute to the growth of GHC and Haskell, and we eagerly want to know when our actions cause someone not to feel that way.
Most official committee business takes place via the ghc-steering-commitee mailing list. The archives of this list are public, and any member of the community may subscribe. It is intended that the list be used by the committee, though community members might be asked to post there during relevant conversations.
Any business not on the public mailing list will be of a sensitive nature, most likely pertaining to individuals. In particular, discussions of selecting new members and of violations of the guidelines for respectful communication will not appear on the mailing list.
Any community thrives best by continuing to refresh itself with new members. The main criteria for becoming a member of the committee are:
- A track record of constructive contribution to public discussion of GHC proposals
- A track record of constructive contribution to one or more of the communities outlined above (users, tool authors etc)
- An expressed willingness to respond to GHC proposals in a timely manner.
These criteria are not exhaustive -- nominations and self-nominations are free to strengthen the case in whatever way they deem appropriate --- but a record of thoughtful contribution in a public space carries the most weight.
Membership on the committee comes with a three-year term, extended so that a term expires only at the end of a nomination process. Call a member who has served for over three years an "expiring" member. A nomination process is triggered when the number of unexpiring members is about to drop below 9.
When a nomination process is triggered, the secretary of the committee will put out a public call for nominations for people to join the committee. Nominations include a brief bio of the nominee and reasons why they would be appropriate for the committee. Self-nominations are welcome and expected. Expiring members are free to re-nominate themselves. When the secretary's term is expiring, another (unexpiring) member of the committee fills in for the secretary to run this process, unless the secretary is not being re-nominated and wishes to run the process one last time.
Unexpiring members of the committee vote on new membership via a ranked voting system; the precise details (i.e. election algorithm) are recommended by the secretary but can be vetoed by a majority vote. The ranking system includes a method for choosing multiple winners. It is expected that the committee favor newcomers in preference to re-nominated continuing members. If an expiring member continues, the secretary shall ensure that a rationale for this decision be published to the community. In all cases, an expiring member stays on the committee until the nomination process is complete.
The voting process may result in a number of new members not equal to the number of outgoing members. This is fine; the size of the committee is not fixed.
The nomination and voting process is kept private, by using direct email to committee members, not the mailing list.
Any member of the committee is free to step down at any time; such a member may choose to leave the committee immediately or to wait until the end of a nominating process (which would be triggered only when the number of unexpiring members drops below 9).
There are two exceptions to the three-year term rule for two "key members" of the committee: in recognition of their historical and current importance to GHC, both Simon Peyton Jones and Simon Marlow will be expected to be retained on the committee when their terms end. If either wishes to continue serving on the committee when their terms end, and if the majority of the rest of the committee supports this outcome, no public nomination process needs to take place to replace them. At that point, the key members are retained on the committee for another three-year term.
These key members can be stripped of their status as key members by a majority vote of the committee, and other individuals can be made into key members by a unanimous decision of the committee. In both cases, changes to the list of key members will be accompanied by a public rationale.
There is no process for members of the public at large to directly add or remove committee members. (That is, there is no public vote.) Representative voting across the internet is fraught, and the drawbacks to such a system seem to outweigh any benefits. It is expected that a misbehaving committee (say, one that selects only its friends and ignores other nominations) loses legitimacy and is publicly called into question in an attempt to make changes for the better in its operation.