The Core Contributor Program

Hello all!

In keeping with our aims to distribute decision-making power, I’ve drafted a proposal for the Core Contributor program.

The CC program is a critical part of how Tari will flourish-- decentralizing our decision making as much as possible, and giving the people who work and improve Tari say on how it runs, and who serves on the council. Please give it a review and add comments-- we want to make sure we get this right, and we hope to address notes and vote on it by our next council meeting this coming week, so please get your comments in soon :slight_smile:

Looking forward to inducting the first batch of new CCs!

2 Likes

Anything that has “veto” should be scrapped - how can we call ourselves decentralised if one can put a full stop?

Appeal process needs to be in place with clear timelines.

Also, if a proposal gets rejected, and appeal fails. The said proposal could be brought back for a review again (example: 6 months). Some things might not be viable at current stage, but will make total sense in the future.

1 Like

One suggestion to make the on-ramp easier … a maintained, pinned list of open contributor needs, per category. Right now the process asks candidates to nominate themselves for specific rights and categories, butwithout knowing where the project actually needs help, people either don’t nominate or aim at the wrong gaps. A simple “here’s what we need” board, e.g. “Community: Turkish translator, Telegram mod” or “Product: Ootle wallet iconography”, turns “you can join” into “here’s exactly where you fit today.” that would increase participation imo

4 Likes

Agree, a good structure will make things go much faster and efficient.

The most important thing is that Core Contributors are all able to be productive and work together.

There are actual crazy people in this industry. I have gotten death threats for proposing a non-contentious soft fork and moderating discords. A veto process is mandatory or we’re going to start dropping core contributors once there’s so many that people are just voting all their friends through. 5 votes for a nomination is nothing, there will be dozens/hundreds of core contributors.

Thanks, y’all. I’ve updated the proposal to address the notes I’ve gotten so far. Please give it another look :slight_smile:

Just making a note that I’ve seen this-- not ready to start assembling it yet, we’d need to take inventory, but I do like this idea.

1 Like

Been lurking on this one but two things are bugging me that I haven’t seen anyone bring up yet.

First, is there anything stopping most of the CC roster from being Tari Labs employees? Not accusing anyone of planning that, but if CCs are the only ones who elect the council, and the people most likely to qualify early are all on one payroll, then the “decentralized” electorate is kind of just the company with extra steps. Feels like there should at least be a disclosure requirement for affiliation, if not an actual cap per org. This is way easier to add now than after the first batch is seated.

Second, and maybe I’m missing it in the doc, but what’s the stance on pseudonymous contributors? This is a privacy project. A lot of the people who care enough to contribute are exactly the people who won’t attach a legal name to it. If pseudonyms are allowed, what stops one person from running two or three of them and getting multiple council votes? If they’re not allowed, we’re bolting KYC onto the governance of a privacy protocol, which is its own kind of weird. Either answer has tradeoffs but right now it seems like nobody’s picked one.

Also small thing re: the admission votes, are the no votes public? kinkajou’s death threat comment above is kind of the whole argument for secret ballots. If objecting means your name gets attached to a published council adjudication, nobody’s ever going to object, and the whole review mechanism turns into rubber stamping.

Anyway, like the direction overall. Not a “no,” just a “not yet” on these.

3 Likes

The expectation I personally have is that the current (or previous, once this TIP is approved) core contributors will be inducted, as they have proven themselves.

However you raise a good point about stacking the electorate. Tari Labs has only one vote on the council, so we could avoid this being a critical issue by making sure to induct CCs in a staggered manner, from the community, and from Labs, until all previous CCs are re-inducted. I’d be curious to hear other council members’ thoughts on this or other approaches.

Also I think the disclosure element is a good idea. The CC listings and nomination should include any sponsoring entity so we can keep an eye on this and see if any one contributing entity is approaching a controlling share of votes so CCs can make an informed decision about adding more team members from a particular entity. I’ll add that. Update: Added.

The council is in agreement that anonymous contributors are essential.

While we couldn’t with 100% certainty prevent this, the cost of meeting CC standards 2-3x over and maintaining them without making mistakes seems high enough that I’m not worried about it. If we see evidence of this happening, I think tweaking standards/commitment expectations even higher would flush it out by making it untenable.

It’s forum threads where people voice their yeses or nos. So it would be public. There are a few ways I see we could handle this:

  1. CCs using anonymous identities. This works but requires anyone who wants to be a CC to start from scratch if they’re already known to the community. It also requires special opsec.
  2. Invent/source some tool for voting (maybe an L2 feature, or just a forum plugin/tweak) where we can issue Core Contributors keys for voting or posting anonymous no votes.
  3. Accept the risk for now, and maybe do 2 later.

I’m in favor of 3, since I don’t think we want to wait on someone to write up well-audited voting software before we can start inducting CCs. But this would be an excellent example of something that someone could build and contribute to the community as CC candidacy evidence.

1 Like

I would like to include the same time commitment stipulations that are/were asked of Council Nominees, I believe it was discussed somewhere as 6mo sustained contributions to the project as a nomination requirement. I know there are already contribution requirements but I didn’t see anything that specific as a baseline, unless I missed something.

This helps prevents drive-by contributors who may not have the project’s long-term interests in mind from gaining outsized influence after making 1 or 2 flashy commits in a short window of time to get their foot in the door.
I’ve been involved with a project where a seemingly well meaning and much needed new github contributor hid a vulnerability into a PR this way, which only got approved because Core Developers had recently relaxed their requirements for new submissions/contributors due to lack of community participation. This resulted in a multi-million dollar exploit on the network.

I’m not too worried about the initial makeup of the CC/electorate. There are enough obvious candidates in the community right now that we should have either an even balance or one skewed in favor of the community right out of the gate.

For the sake of transparency, I was planning on nominating Sergey, Fox, Impala, Simon, Stan, and SW as soon as this is finalized. I’m sure others had non-contentious nominations as well (Zhao and Plats also seem like great candidates, there are others at Tari Labs as well) but that’s already an even balance that’s only going to grow in favor of the community over time.
There are only so many Tari Labs employees even if we nominate all of them.
Love the idea about requiring disclosures of sponsoring entities as well. :+1:

Agree on 3. I think a voting template is essential for the Ootle at some point anyway (sooner rather than later), and this is a great way to demonstrate that functionality.

2 Likes

I don’t remember if that was a requirement for the council in particular, but I think it should indeed be a baseline requirement for CCs of any category. I’ve now added this line in the CC program TIP:

At a minimum, all Core Contributors must have at least six months of history and participation in the Tari project.

I don’t specify what that participation needs to look like (beyond the three Cs mentioned in that section) since that’s primarily going to be decided by categories/grants. But giving the baseline expectation of six months expectation removes the ‘did a whole bunch over the last couple of weeks’ move.

1 Like

Thanks for adding the sponsor disclosure Fox! I didn’t expect that to happen on the same day. I was just trying to add a little to the discussion, which was a little stale.

On #3, I’d be into it, just not right now. Ring signatures would handle the actual voting part and that’s a bunch of work. Everything else is a big job. Key rotation, revoking people who leave, a client that isn’t just me on a command line, and well audited is doing a lot of work. I’m always down for a big job though.

I’m buried with my free time. Stan and I split up the walletd+external tools HTLC stuff in issue #2343, my half sits on top of his, and I’m back at work full time in a couple weeks. I’m working on my atomic swap app too, which you know about. I can start looking into ways to do it though.

It doesn’t seem urgent though. The thing I’d watch out for is that once public voting is going…how it’s done. Changing it later looks like somebody’s got something to hide. There’s a window, it’s just not a short one. If it’s still sitting there when I have a minute, I’ll start working on it.

The one thing I’d want figured out first is I don’t really want to be the guy who built the voting tool and also votes. First close call somebody’s unhappy about turns into a question about the tool and it’s got my name on it. So spec it in public before I write anything, and someone other than me needs to review it.

1 Like

Thanks, @GSXRspartan . I appreciate it!

I’ve gotten feedback from @kinkajou in another thread that he thought the signature rights for wallets mentioned in the TIP were referring to the main community wallet, which is not my intention here.

I’ve updated the phrasing to say this for that line:

  • signature powers for scoped project/budget wallets (if also approved by supermajority (2/3) council vote)

I’m hoping this makes it clear that this doesn’t include the main community fund wallet, but wallets created for specific budgets/projects as the Tari Council approves and creates.

I’ve gotten feedback from Naveen on the following points (and I’m hoping he’ll respond here in thread later):

  1. He suggests that we change the minimum required community involvement time be at least one year.
  2. He expresses concern about wrapping Core status with access, and is concerned about how the access grants work.
  3. He suggests that if the council overrides the CC vote on induction, rather than a supermajority, it should require unanimity.
  4. He also is concerned that five yes votes and no ‘no’ votes is not sufficient for induction and that admission should require unanimous assent from existing core members.

Hopefully I’ve relayed these accurately, but if not, please correct me, Naveen.

To each point:

  1. He suggests that we change the minimum required community involvement time be at least one year.

I think that six months is plenty to demonstrate commitment, especially for a project with a mainnet this young. I would be more willing to entertain a year long requirement in another year or two when a year is proportionally much less and more momentum has been gained. I’m curious what others think of this, though.

  1. He expresses concern about wrapping Core status with access, and is concerned about how the access grants work.

I think I’d need to hear more about both an alternative method of handling grants to understand why it would be better. The currently written method makes sure that core membership both has a distinct meaning/responsibility that can be accounted for, and it also requires team members to justify their reasons for asking for that access. If someone wants to be admitted to core and might be admitted normally, but they are asking for access that is beyond what they should have, their CC application should be denied by a ‘no’ vote from any CC.

Likewise, if a CC is asking for rights expansion, and that expansion is outside of what they have demonstrated trustworthiness/competence for, that is grounds for a ‘no’ vote from any CC.

Right now there is not an explicit cool down for applications written in the proposal. Maybe we can also require that rights expansions can only be done with some minimal amount of CC time under the person’s belt, or we can require that any application which is denied induces some minimal cooldown time (say at least three months?) to make an explicit penalty in the case of applications which aren’t well thought through.

  1. He suggests that if the council overrides the CC vote on induction, rather than a supermajority, it should require unanimity.

I’m OK with this. I’ve updated the text to indicate unanimity is required rather than supermajority for override.

  1. He also is concerned that five yes votes and no ‘no’ votes is not sufficient for induction and that admission should require unanimous assent from existing core members.

I’m not OK with requiring unanimimous 'yes’es for induction, rather than a minimum number of yeses and no nos. The reasons for this are as follows:

  1. This makes anyone who abstains or misses voting in effect a ‘no’ vote. Someone can sandbag or kill a nomination by just never getting around to voting on someone, and it wouldn’t be difficult to do this in a plausibly deniable way, breaking our ability to induct new members.
  2. Coordinating a full voting body to participate gets more and more challenging as the body grows. You may as well be trying to get everyone to show up to your DnD campaign.
  3. Many CCs will be unqualified to evaluate the candidate in their area of application. It doesn’t make sense to hold up the approval of a code CC because a designer isn’t sure they understand their contributions well enough to say ‘yes’, and so feels they either can’t honestly vote approval or must say ‘no’.

If any refinement needs to be made here, we could increase the number of required 'yes’es, require more conditions on those 'yes’es, (such as, requiring x amount of the 'yes’es to be from their category,) or something along those lines. I’d be curious your thoughts here.

hi @Fox thank you so much for sharing my feedback here. And thank you for your thoughtful reply. Here are my thoughts:

Tari CCs are a small group of people who are responsible for a lot including things that are directly related to the security of the network. My feedback to your proposal originates from a place of wanting to keep Tari secure.

With regard to the time commitment for someone to apply for membership in the core, my rationale for suggesting 12 months is that it gives the entire community (and TC and existing CC members) ample time to see someone’s true level of commitment. I’m not convinced 6 months is sufficient time to evaluate someone.

With regard to access, my suggestion is simple: let core manage access. When someone new joins core, existing core members can decide when and how to give the person access. If someone proves themselves to be untrustworthy, then core may decide not to grant access. I think this is very important because it’s about relationships and trust. We want everyone on core to trust each other, and trust is earned.

With regards to unanimous votes, my thinking is this: joining core is a very special thing, and we should really push core members to work hard to achieve a unanimous vote before admitting someone new. Members of core shouldn’t be able to sandbag votes. At the same time, if a member of core has a legit reason for not inviting someone to core, their objection should be worked through by core. I recognize that this is a challenging thing, but ultimately it comes down to trust. Do CC’s trust each other? If they don’t, then we have a real problem on our hands.

Looking forward to hearing your thoughts and feedback!

I think this might be where the confusion lies. I don’t believe the CC group needs to be especially small. It could be relatively large or small. At minimum, it should certainly be larger than the council, otherwise there’d be little reason to have a council with a voting body smaller than it is. I think with the single ‘no’ vote requiring the council to do a unanimous override, it will be able to constrain its size as a body without creating extra roadblocks that seem to me more logistical than for measuring intent.

The document contemplates CCs who do things like moderate the forums, publish content on social media, go to/run events, and other things. While any power granted could cause embarrassment or behave maliciously, most are not given access that could critically compromise the project. They’re given access that allows them to perform work they’re already doing as contributors with a higher degree of efficacy.

My suggestion is already doing that-- the nomination process is the CCs deciding what access they are willing to grant, and with the expansion process, when to give it. It’s a formalized way of doing so that lets it be known, publicly, who is getting access to what, with what evidence, and who is supporting this increased access. It also requires evidence to be given alongside that access.

If you are proposing an alternative where someone can be inducted as a CC but has no special access other than voting, but may be granted it later, I can see how that would better pair with unanimity for admission, but I think binding joining with specific resource responsibilities is a better way to constrain overall size. It brings to the forefront why someone should be a CC rather than a highly enthusiastic contributor.

Would it help if, instead of allowing self-nominations, all nominations would need to be made by existing CCs and/or council members?

I expect CCs should trust each other. However I also recognize when we’ve made a poor route an easy one, which requiring affirmative unanimity would be. When I speak of sandbagging, let me walk you through a narrative that I think you have seen before:

  1. Someone applies to be a CC, and their nomination is posted.
  2. Several people vote in the affirmative, no one’s voted “no” yet, and there are some votes that need to be cast
  3. One or more of those people:
    a. Feels a firm responsibility to cast their vote while knowing the full consequences, but doesn’t understand the evidence (designer evaluating coder, or vice versa) well enough to sign their name to it
    b. Is having a hard time finding time to sit down and evaluate the evidence in full

This person then doesn’t vote, stalling the induction and if there’s a time limit (which their should be to prevent the CC from waiting forever) becoming an effective ‘no’ vote, even if that’s not the intent.

Alternatively, here’s another failure mode this could produce:

  1. Someone applies to be a CC, and their nomination is posted.
  2. Several people vote in the affirmative, no one’s voted “no” yet, and there are some votes that need to be cast
  3. One or more of those people:
    1. Sees someone they trust is voting for this person
    2. Knows they’re required to vote something
    3. Doesn’t really have the time/expertise/etc to evaluate, but knows they’re required to vote something
    4. …and so votes ‘yes’ despite not really having the confidence in their vote

This ‘sympathetic voting choice’ has a cascading effect. The more people do it, the more people will do it. No one in these scenarios is harboring ill will-- they’re just tired or busy and are taking the easy action that this method gives them.

By contrast, requiring a minimum number (and perhaps quality? See my suggestion above about category vote prioritization for a potential improvement) means that anyone voting knows they’re sticking their neck out for the person and saying ‘yes, I think this person should have this access, and I’ve evaluated the evidence.’

In this scenario, A ‘no’ vote is a very deliberate no vote, and an abstention is characteristically different-- if you couldn’t even find the minimum number of people to say ‘yes’, it’s clear your evidence isn’t very compelling, not that people may have just not had enough time to think it through and the logistics aren’t on your side now that the group has 20-30 people in it.

Definitely want to hear more folks’ views on this. I’m not entirely opposed to extending it, but I’m curious what folks think is right balance of evidence vs hurdle is here. As mentioned the main concern I have is that the project hasn’t been around long, but we’ll need more hands soon, so to me the balance of six is a good start. But maybe there are enough quality applicants that have been here for 12 months that I shouldn’t be worrying about this.

How about Probationary period.

Elected CC work on a Probationary basis for 1-3 months with a weekly/fortnight review from council.

Granting access/powers to critical components can and should be gradual.

A person who is in charge of social media, by any means shouldn’t have access to a Tari labs wallet keys for example.

Tari is out slightly over 12 months, it is hard to evaluate someone on their contributions towards the project as there is not much evidence to back it up.

Currently, the best metric for CC election is the bounty program.

1 Like

Here’s my perspective from the communities I grew up in. I’ve been doing open source for 17+ years, most of it around Ruby, Rails, Rust, and Node, and my take is we’re over-engineering the gate. We have a small handful of people who’d qualify as CCs today. The vote mechanics aren’t a problem, how to get there is.

In every community I just named, becoming a core member works the same way. Ruby’s committer wiki literally says: “Send patches, send patches and send patches. Someday the core team will say ’OK, commit it by yourself.’” Rails tells you the same thing in their own way: act like a member of the team, and eventually the team invites you. Nobody applies. Nobody campaigns. You do the work and you get recognized. I’d be careful about writing a process that pretends it works some other way, because it doesn’t.

I’d drop self-nomination entirely. Plato said the city whose rulers are least eager to rule is the best governed. The people you actually want are busy doing the work, not asking for titles. Node requires a nominator and it’s never been a problem for them. If an anonymous contributor is doing great work and doesn’t know anyone yet, give them a simple way to request a sponsor and that covers it.

On requirements: I’m fine posting guidelines about what readiness looks like. I’m not fine posting hard rules. The second we publish “N PRs over M months,” people will show up to check boxes, and checking boxes doesn’t make you part of a team. Look at how the big communities handle it. Rails publishes nothing. Ruby’s is that one line above. Rust lists the qualities they look for and leaves the judgment to the team. Even Node, which documents more process than anyone, writes down how nomination works, not a bar you can farm. The judgment stays with the team everywhere, and it should here too.

Whether we publish our reasoning on a yes or a no depends on which way this goes. If nominations only come through existing CCs, the pool stays small and serious, and I’m happy for us to explain every decision. If we keep open self-nomination, no. Nobody owes a public verdict to every person who fills in a form.

Now the part I think matters most: tiers, and grading who has access to what. Rails runs a tight Core, a wider Committers group, and an even wider Issues team doing triage, first responses, and docs. Their own site notes that everyone on their core team came up through the lower teams. That’s not an accident, it’s the whole design. The lower rungs are where you watch people work, where they learn the norms, and where the next core members come from. Most of the people this program should attract don’t need anywhere near the keys, and that’s fine, because the tier is the relationship, not the access.

And even within a tier, none of these communities hand out keys as a bundle. In Node, collaborators get commit and CI access, but the release signing keys live with a small releasers team, and the TSC is a different thing again. In Ruby, a commit bit doesn’t let you touch the language, spec changes still need Matz, and the standard library has named maintainers per module. Access follows the specific job, never the title. The TIP’s scoped grants section already points this way, and I’d make it the backbone of the program instead of a detail: every grant should answer “what exactly can this person touch,” and moving up should mean a change in trust and responsibility, not a jackpot of keys. Do that, and the size debate upthread mostly dissolves. The sensitive center stays small no matter how wide the program gets, and the council vote is a separate question from access altogether.

And the program doesn’t start at zero. We already have a core contributor team, and they were doing this work before the charter existed. The adopting motion should name them as founding CCs, grants and sponsors listed, same rules as everyone who comes after. Rust seeded its first teams from the people already doing the work. Node’s first TSC came from the existing committees. And if nominations require a CC, someone has to be first anyway.

I know Tari Labs concentration came up earlier in the thread. For what it’s worth, this is what every young project looks like. Shopify pays a whole team to work upstream on Ruby and Rails. Matz was at Heroku for years. Sponsored contributors are the norm everywhere, and the fix is disclosure plus a real pipeline, not pretending otherwise.

The TIP’s skeleton is fine. I just want less election machinery, more farm system.

2 Likes

Hi @sprucetree . I love what you’ve written here. Let me dig into it a bit.

Yes, in practice this is how I expect most CCs to get their bearing and I believe that would be true here. My focus on the document is the process by which admission happens, but not the social dynamics of how you actually navigate it. This does need to exist, but your comment points out that it is incomplete and can give the wrong impression of what is needed.

I’ve added a blurb in the overview section, at the top, with the following contents:

To become a Core Contributor, you must be active in the community and consistently contributing with high quality. Over time, you demonstrate your trustworthiness and, at the discretion of the team, are nominated to a CC position with specific responsibilities. After a review of the evidence, you may then be inducted into the Core Contributors.

There is no automatic path, where you contribute X amount of work in Y time, or check enough boxes to ‘win’ Core Contributor status. Rather, it is given at the discretion and in trust by those who have earned that trust before you. Some guidelines are given in this document to help team members judge readiness, but the judgment is ultimately up to the current CCs whether to admit a new member.

I’m in complete agreement here. I tried to write the examples of readiness to make them as general as I reasonably could while still fulfilling the charter’s current requirement to have a ‘Rubric.’ I actually think that having a specific rubric doesn’t match the social realities of how CC admission works in any healthy open source project, since you don’t want box-checkers, as you note.

I’ve adjusted them (and their headings) to now be looser. It’s at the point where I’m not sure it qualifies as a ‘rubric’ anymore, but it should does give solid guidance on things to look for when evaluating. I’m curious on others’ thoughts here. Maybe the charter itself should be adjusted on this matter.

At this point I’m convinced that nomination should only come from the CCs or a council member. I’ve updated the TIP to indicate this.

I see the wisdom in this, though I like a slightly different approach which still has many of the same admirable qualities. Rather than focusing on ‘tiers’ per se, we have the grants that determine access. If you have more grants you are indeed more trusted, but the goal shouldn’t necessarily be ‘get more grants’ as one should opt to go where their interest and responsibilities guide them. You are a CC once you’re inducted and granted access to something general contributors and the public don’t have access to. That comes with voting rights and responsibilities to the project.

However, there’s not ‘more core than core contributor’, there’s only those who are tasked with more responsibility (and thus have access to more) and those who are tasked with less. There’s the council, but that’s altogether separate in scope and CCs will move in and out of council positions term by term if they convince the other CCs and they are willing to serve this way.

I prefer this more flat arrangement rather than hierarchical view. In practice there is still some understood hierarchies of skill/access, but it’s much more graded rather than banded. The TIP, as you note, gives a framework for access grants and expanding them as needed.

Correct. I do want to have all of the people who are currently CCs to go through the process, both to practice the process and make sure that CCs understand both sides of it. My expectation is that there will be no problem bringing them all in, alongside a handful of other community members who have demonstrated the three CCs. The bootstrapping function of having TC voters perform initial induction makes sure that anyone inducted in goes through the process. It shuts off the council’s ability to vote in the proceedings after the core is bootstrapped under the new charter.

Totally-- though as mentioned, I believe that all of the current CCs will have no trouble going through the process, and so they should go through it. The reality is that they’ve already convinced the council that they’re meant to be in these positions, since they’ve stuck through it and delivered every day up until now. So this is a formalization of what we already know and believe, just like induction will always be.

I want to add my 2c here as well. I agree with @sprucetree — I think we’re approaching this all wrong.

Let’s rewind and ask: what is a core contributor? This is someone who regularly pushes code, investigates issues, opens new issues, fixes them, and reviews code. And now the crucial thing: what stops anybody from being one? Nothing.

Right now any person can open a pull request, file a new issue, leave a code review, etc. And this is 99.9% of the work to keep Tari functional.

I firmly believe in least required privilege. It’s a security thing. As one of the oldest devs on Tari, I don’t even have view rights on all the code — why? Because I don’t need it.

Look at what happened with OpenSSH and the XZ Utils supply-chain attack (tracked as [CVE-2024-3094]). We don’t need any risk like that. We can have core contributors with zero rights.

We need two security roles: someone with admin rights on the org, and someone with merge rights on the repos. These shouldn’t be gated behind some arbitrary length of public visibility. They should only be granted by the Council, on an invite-only basis, and only when needed.

You could be a superstar dev in the community — push a lot of code, be very active and busy. Even so, Tari doesn’t have to promote you to merge rights if they aren’t required. You still get all the brownie points from having your name in the release notes.

3 Likes

That’s not the definition I’m using. That would be a regular contributor in my view. To me, having access to something as a matter of responsibility is what separates ‘core’ from regular contributor. You can absolutely be a big contributor, and a celebrated one, without being core.

When I joined the Core Contributor program in the Open edX project, the general response was ‘I thought you were one’ because I was contributing so much already, but there was not yet a need for me to take any direct responsibility for any repositories, or have merge rights.

As it turns, one of the repositories from the project needed a maintainer and someone from the CC team asked me to look after it. That required induction, and induction came with additional responsibilities and rights. It wasn’t as though I wasn’t already contributing already, and contributing visibly and publicly. It just wasn’t needed yet.

Here’s where I think decoupling CC membership from all access rights at all causes a problem for me:

If there is not any special responsibility/rights for a CC, what’s the point of inducting them? Without any particular impetus, people will just stay contributors-- CCs will not have any reason to induct, and contributors won’t have a reason to take on the added responsibility. Getting merge rights makes your job easier as a consistent contributor. And as you mention, it doesn’t need to be for every repo. It should be for the ones you’ve demonstrated competence and responsibility for already, to the most degree you can without having those rights, and for whom not having them is a hindrance to your work.

The project needs a way to gate the electorate for the council, and it needs a way for that electorate to be representative of those doing the work. Tying access to something, even something small, is a good way to require inductance as a matter of good project functioning.

For example, if I were granted merge rights on the RFCs repository, that would not require me to have access to something outlandish, and it would make our collaborative work there much smoother. Expecting me to carry additional responsibilities in exchange for that access is absolutely reasonable.

I don’t want merge rights on the main Tari repo. It would be absolutely unnecessary-- I’ve never even contributed code there. I’ve contributed code to the Universe repo and still wouldn’t feel comfortable having merge rights there.

I also believe in this. It’s why the specific grants are, indeed, specific grants.

I don’t mean to get too distracted here, but this is an open source project, or is supposed to be. What read access don’t you have? Unless the repository contains signing secrets or similar, I don’t know what parts should be closed.

If those are for Tari-labs specific projects that they’re building on top of the Tari project’s open source and offering as their specific product, that’s one thing. If they’re part of the project everyone’s using, they should certainly be open.

As mentioned in my previous reply, this isn’t about checkboxes being ticked. And I’ve made an adjustment to the wording to make that clearer. The TIP codifies the process of induction, how it’s publicly communicated and performed, gives some guidance on what readiness looks like, and explains how elections of the council by CCs work.

Actually getting to CC is still a matter of CCs recognizing your work and deciding everyone’s lives would be better if you have access, and no one gets CC induction as a matter of ‘just being here long enough’ or ‘contributing enough code’ or something like that.