Skip to content
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

Organization Governance #8

Closed
forrestli74 opened this issue Jun 26, 2022 · 17 comments
Closed

Organization Governance #8

forrestli74 opened this issue Jun 26, 2022 · 17 comments

Comments

@forrestli74
Copy link
Contributor

Having a clear governance model will ensure a clear vision for the project. Here is what I'm thinking:

Who has the final say about the project?

I think it's probably one or a group of people (Let's call it owners). If a group of people has disagreement, it's decided through a simple majority vote. Owners can always delegate decisions on certain areas to certain people, but owners can always take that back.

Do you guys agree?
If so, who are the owners right now? And when you say you are looking for collaborators, are you open to adding more owners?
This is a potentially dangerous decision, since if you add more owners, they are able to override your decisions and potentially even throw you out.

Who has the final say about each template and each repo under the org?

I think it should still be the base16 owners. Since the whole point of having an org is to centralize things and have a coherent vision. If that's the case, we should really be clear about that when a template wants to be in the org. If the original owner does not want to give up the ownership, we should advise them to continue to be "unofficial" base16 templates, etc.
Do you guys agree?

@belak
Copy link
Member

belak commented Jun 26, 2022

Good questions!

Who has the final say about the project?

Right now, that would be the two owners (me and @JamyGolden). Truth be told, adding someone else made me more than a little nervous - I've been the only active user with commit access to the original spec, schemes, and templates repos and it's a bit of a change having other people who have a say and can override me or take the project in a different direction. However, I understand that in order for the project to outlast one person, there need to be multiple people in charge.

This has worked quite well so far (@JamyGolden has been great to work with and they've been a big help reaching out to other repos and pulling everything together), but is somewhat less than ideal when we disagree on a decision because there is no tiebreaker and we're not completely sure what to do. At the moment, for larger decisions, we need to be in agreement - this usually involves us chatting and finding a compromise somewhere. When we have more owners, I agree that majority vote makes sense, but I think that should only be done if you can't reach an agreement or compromise.

Who has the final say about each template and each repo under the org?

This section, please take with a grain of salt - it's just my opinion so far (I haven't had a chance to talk to @JamyGolden about the details yet).

The eventual goal would be to have a "primary" maintainer who's responsible for each template, based on how what they've contributed, and how they've helped manage issues, PRs, etc. If they went missing, or there was an problem/major disagreement, it would fall back to the project owners. Ideally all the template leads would be in agreement about the overall vision.

This still needs some more details - we're not sure what the requirements for being a primary maintainer would be or when the project owners would have to get pulled in, but the general idea is there.

That all being said, this is new to us and we're open to ideas and suggestions.

@forrestli74
Copy link
Contributor Author

Who has the final say about the project?

Make sense. I agree that it will be good enough for quite some time. I can submit a PR to clarify in readme and consider this issue closed. Does that sound good?

Who has the final say about each template and each repo under the org?

I think we definitely need a "primary" maintainer for each template. But make sure all template are in agreement is hard. Here is what I propose:

First, we need a written vision, which is where you guys (kelak, JamyGolden) want to take base16 to. It should not include how to achieve them, since better ideas may come up in the future.
Second, we approach unofficial templates and communicate the following:

We want to make base16 better by having a unified experience for users. And having your template moved to the org will be better because:

  1. Any org level minor changes can be applied more easily
  2. Users can know that the template in the org works with the rest of base16 and has support and endorsement of the org.

But in order to join the template the owner needs to understand:

  1. template owner still has a final say about the template repo
  2. template needs to align with future iteration of base16 specs, and vision doc describes where we are going.
  3. If the template owner does not align with the vision, it should not join the org.
  4. If the owner becomes unavailable, the org will make decisions for the template. If the owner is back, the owner is still the owner and can override the org's decision.
  5. If the vision is not aligned or for any other reason, the org can kick the template out. But this should not happen, since all decisions made by org will involve thorough discussion with the community.

(FYI To be honest, if base16 moves along and # 5 really happened, we would probably fork the template and majority of traffic will go to the org's fork. But I think that's fine.)

As for templates that we feel strongly to be a part of the org but the owner does not want to join or is unavailable. We fork the template.

The process does not have to be perfect, but needs to have a clear ownership boundary and be good enough to approach some templates.

Now it's becoming more and more like a PR. If it mostly makes sense. I can write a PR for template onboarding doc. And we can address the details there. Does that sound good?

@belak
Copy link
Member

belak commented Jun 28, 2022

Thanks for taking the time to do this!

Who has the final say about the project?

Make sense. I agree that it will be good enough for quite some time. I can submit a PR to clarify in readme and consider this issue closed. Does that sound good?

Sure, that would be helpful.

First, we need a written vision, which is where you guys (belak, JamyGolden) want to take base16 to. It should not include how to achieve them, since better ideas may come up in the future.

This makes sense, but we might not come up with one right away - right now, we're purely trying to take what's already there and make sure it stays maintained. Working on a unified vision will happen over time.

Second, we approach unofficial templates and communicate the following:

@JamyGolden has been doing a great job of reaching out to other templates. Our vim template was actually from a fork rather than the original vim repo because it was better maintained. Here's an example of how we reached out.

We want to make base16 better by having a unified experience for users. And having your template moved to the org will be better because:

1. Any org level minor changes can be applied more easily

2. Users can know that the template in the org works with the rest of base16 and has support and endorsement of the org.

Yes, these make sense. I would actually split 2 into multiple bullet points: "Users can know that the template will receive continued support" and "Work will be put in to make sure the template works with other official templates"

But in order to join the template the owner needs to understand:

1. template owner still has a final say about the template repo

Sort of. Project owners could still step in if there's a disagreement which needs resolving or the community in general doesn't agree with the direction the template owner is taking the template. At the end of the day, the project owner is still transferring their repo/ownership to the org, but they'd be appointed the "primary maintainer" of that template.

2. template needs to align with future iteration of base16 specs, and vision doc describes where we are going.

Yes, though in general the spec is designed to be backwards compatible for templates.

3. If the template owner does not align with the vision, it should not join the org.

This is hard to define without having a vision doc (which, as mentioned above, might not be for a while). I'd personally leave this one off.

4. If the owner becomes unavailable, the org will make decisions for the template. If the owner is back, the owner is still the owner and can override the org's decision.

If the owner becomes unavailable, the org will make decisions for the template. If necessary, the org will appoint a new primary maintainer.

5. If the vision is not aligned or for any other reason, the org can kick the template out. But this should not happen, since all decisions made by org will involve thorough discussion with the community.

(FYI To be honest, if base16 moves along and # 5 really happened, we would probably fork the template and majority of traffic will go to the org's fork. But I think that's fine.)

As for templates that we feel strongly to be a part of the org but the owner does not want to join or is unavailable. We fork the template.

If there's something with no maintainer for an extended period of time, or a template isn't aligned, we'll have the @base16-project-contrib org where people will maintain ownership. I can't think of a reason we'd fully kick out a template.

The process does not have to be perfect, but needs to have a clear ownership boundary and be good enough to approach some templates.

Now it's becoming more and more like a PR. If it mostly makes sense. I can write a PR for template onboarding doc. And we can address the details there. Does that sound good?

This does sound helpful, but I think it sounds like something separate from the readme - maybe it should go in a separate file and we could link to it from the README.

@joshgoebel
Copy link
Contributor

joshgoebel commented Jul 1, 2022

I can't think of a reason we'd fully kick out a template.

You run into potential weird cases where someone leaves (diff vision) so now you'd have the official base16/vim BUT also the official vim/base16... but I think such rare cases could be handled on a one off basis to decide what's best for the community. I'm not fully convinced the org needs to "own" all the templates in the first place [not opposed either], though it would make some things simpler.

For Highlight.js (another OSS project I maintain) we allow 3rd party grammars/plugins to be hosted in the main organization (if they desire), but we also have a global registry (in the organization) that all grammars are added to - whether they are inside org or outside. And everyone wants to be there for the publicity - to make it easy for others to find them.

Ideally all the template leads would be in agreement about the overall vision.

Ideally. We should also realize that people may have entirely different needs from the project though, for example lets imagine:

  • VS Code - has 100s of scopes that you could syntax highlight differently
  • Terminal - classically two palettes of hues, light and dark variants
  • MS Paint - 16 colors?

One imagines these template maintainers caring about different things:

So I think what one needs from the project is likely to affect how they participate or care about the larger vision...

@actionless
Copy link
Member

actionless commented Jul 1, 2022

One imagines these template maintainers caring about different things:

i'd also add a one more separate point to this list, for so-called "multi-template builders" (i prefer to call those "universal template builders" instead, as the main point is what they could build any template, not what they could build many templates at same time), as apparent from other threads - this type of apps also having its list of things to "likely to care about" which is different from those of just single-template developers/users

@forrestli74
Copy link
Contributor Author

I pretty much agree with all of it @joshgoebel. Except that base9 is not created because the terminal has some different use cases.

For your comment about

Ideally all the template leads would be in agreement about the overall vision.

Are you just making general comments or saying you agree or disagree?
If you disagree, what are you proposing?

I also want to point out that the overall vision should be somewhat accommodating to different use cases.

@joshgoebel
Copy link
Contributor

Obviously builders (single or "universal") are another piece of the "Base16 ecosystem" but I'm not sure I imagine them having unique goals or needs in the same way that templates do... Builders exist to support the templates (and target apps)... Their primary (only?) need is to support the need of templates/target apps.

What other needs do you imagine might differentiate one builder from another? Though it may be this part of the discussion should move to #13 where I ask exactly this question.

@joshgoebel
Copy link
Contributor

Except that base9 is not created because the terminal has some different use cases.

I wasn't trying to ascribe primary motivation, but I thought I read somewhere that was one of the reasons, if I got you confused with Base24 or something else you have my apology.

@actionless
Copy link
Member

actionless commented Jul 1, 2022

Obviously builders (single or "universal") are another piece of the "Base16 ecosystem" but I'm not sure I imagine them having unique goals or needs in the same way that templates do...

because they operate on higher level than template itself, ie template don't need to have a knowledge about what other templates are available

What other needs do you imagine might differentiate one builder from another?

doesn't it come obvious itself from the aforementioned "names" - (single or "universal")?

but generally the only difference which should be between builders - is language/technology (ie python lib, js lib, rust lib, shell cli, gui app, etc):

my personal belief what all builders should be universal (as it was in the times of base16 before fork) - because format of both templates and schemes is very straightforward for not implementing builders separately for each template type

@joshgoebel
Copy link
Contributor

is language/technology

You should really weigh in on #13 on this point...

not implementing builders separately for each template type

I don't think anyone is suggesting that.

@belak
Copy link
Member

belak commented Jul 1, 2022

not implementing builders separately for each template type

I don't think anyone is suggesting that.

Yeah, I agree. I'd like to avoid this unless there's a specific reason (there were a few binary templates a while back which sort of needed a custom setup, but other than that there's no real reason)

doesn't it come obvious itself from the aforementioned "names" - (single or "universal")?

@actionless I think "builder" is an overloaded term, even if you add "single" or "universal" as a qualifier. I think the terminology we're thinking of settling on is "builder" (what you're calling a single builder) vs "manager" (a sort of universal builder/manager). This is still stuff we're figuring out - in any sense, I think another issue (like #3 or #13) would be a better place for this part of the discussion to continue.

@actionless
Copy link
Member

if you prefer to call it "template manager + template builder" instead of "universal template builder" - i really don't mind

just the point that the aspect of "template management" should be described in a spec as it was before - i don't really see potential problems if making it "optional" so developers of builders would not be obligated implementing it anymore

@joshgoebel
Copy link
Contributor

@belak Was someone actually asking for a manager, or did we just invent that as a "cover all bases" sorta-thing? Or did that only come up after you simplified the builder spec?

@belak
Copy link
Member

belak commented Jul 1, 2022

@belak Was someone actually asking for a manager, or did we just invent that as a "cover all bases" sorta-thing?

The term is invented. There were people asking for a way to programmatically get all templates - that was what I was hoping to solve in this issue.

Or did that only come up after you simplified the builder spec?

Yes, it only came up after the simplified spec was merged in.

@actionless
Copy link
Member

i think it originally "came up" at the moment before/when it was originally implemented in Chris's base16 - it's aparent what it was just mistakenly removed together with similar infra for schemes, which is not needed anymore after merging all schemes to single repo

@forrestli74
Copy link
Contributor Author

Found this to be pretty interesting read. It talks about how governance works for another project. Any reason we shouldn't copy over and just add our twist for base16 specific stuff?

https://github.com/getomni/omni/blob/main/CONTRIBUTING.md

@belak
Copy link
Member

belak commented Dec 17, 2023

I'm closing this in favor of #84, where we're collecting all remaining project management related questions.

@belak belak closed this as completed Dec 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants