Code Monkey home page Code Monkey logo

mvg's Introduction

Minimum Viable Governance

What is Minimum Viable Governance?

Minimum Viable Governance (MVG) - currently in beta - is a repository-based approach for putting lightweight governance into free and open source projects that are run in version control systems. It provides an overall two-tier organizational governance structure for a set of free and open source projects. At the top level (called an "organization" on GitHub), there is a technical steering committee to make decisions about the overall direction and coordination between all the organization's projects. Underneath that top level are the individual projects, with lightweight, consensus-based governance.

There are two folders. The first, org-docs, provides top-level organizational governance and policies for a technical steering committee (TSC). The second folder, project-docs, provides a template for individual project governance, subject to the policies and oversight of the larger organization.

Minimum Viable Governance is meant as a way to quickly stand up collaborations that can grow with your organization and projects. If your organization grows to the point where a corporate home becomes necessary, typically when your organization begins holding money, MVG is designed to make that transition easy.

Why would we want to use this?

Minimum Viable Governance allows you to start an organization and sub-projects with simple governance in place at the outset - including legal terms, licensing and trademark issues, and due process. Having this governance in place early helps avoid disputes among participants down the road.

How do we use this?

  1. Review the documents and determine if this is right for you.
  2. Describe the organization's mission in Section 1 of the CHARTER.md file.
  3. Put the org-docs in a repository for the organization's governance and have each initial TSC member "sign" the STEERING-COMMITTEE.md file by adding their name and organizational affiliation (if applicable) to the file.
  4. For each project that will be under your organization's governance, create a repository under the organization and have each initial maintainer "sign" the MAINTAINERS.md file by adding their name and affiliation (if applicable) to the file.
  5. Choose a license or fill out the copyright information in the MIT LICENSE.md file for each project.
  6. Get to work.

Contributing

Hi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.

Contributions to this project are released to the public under the project's open source license.

Please note that this project is released with a Contributor Code of Conduct (CoC). By participating in this project you agree to abide by its terms. Violations of the CoC should be reported to: [email protected]. To avoid confusion with MVG artifacts, we did not place the CoC in the repo.

Submitting a pull request

  1. Fork and clone the repository
  2. Create a new branch: git checkout -b my-branch-name
  3. Make your change
  4. Push to your fork and submit a pull request
  5. Pat yourself on the back and wait for your pull request to be reviewed and merged.

mvg's People

Contributors

djhoese avatar mlinksva avatar royaljust avatar saadaakash avatar spier avatar xiaohk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mvg's Issues

Cover Security in the standard files

I propose that the default files cover Security. Be it as text in the CONTRIBUTING.md, or via a SECURITY.md file. Ideally both, with the SECURITY.md going into the org's template directory.

Like the CoC, the security file will need some kind of unusual contact address.

No Confidentiality governance clause

A related note to #13 is that Security and the confidentiality note are at odds. I think the intent of the confidentiality section of the Charter is to remind everyone that there is no expectation of confidentiality within the project by default.

However, confidentiality relationships may happily exist between participants in the project, and the project itself is expected to have information that the project creates confidentiality expectations around - for example a non-public/embargoed security issue.

75% vote to change targets

I like the 75% steering committee vote. I think you want to keep it to a minimum. Charter absolutely makes sense, and CoC makes sense simply because changes to a CoC can rip a community apart.

I think antitrust and trademark don't need the 75%. Really what they want for changes is "Don't change these unless you know what you're doing", and the same is true for the project's license, notice file, dependency-decisions (based on licensing) etc. Community norms will protect those two files from being unreasonably modified.

Link to license of template files

The LICENSE of the repo and the text in the footer of the template files says that the files are under the CC-BY license. The footers link to the CC-BY-SA license, though. The links should be fixed to avoid any confusion.

Maintainer/Steering Commitee balance

Something the project isn't very clear on is the expectations of size for the Steering Committee. Is it a mini-board, or is it the set of roughly all maintainers. I assume the answer is that it supports either version.

It would be valuable to add documentation that talks about this, listing values for both so that users can choose which way to go (and not arrive with prebaked differing opinions).

Intent of the HANDLE in steering committee

The Steering Committee blank has a "handle" box that is not present in the Maintainers. I wonder if there is any intent behind this and what should go in the "handle" box? Just a space for a nickname?

Steering committee needs more selection details

Howdy! I'm coming over from the CNCF where we're working on something similar, which you can see in our Project Template.

Currently the Charter document names a Steering Committee, but doesn't say anything about how that committee is selected. It would be useful to give some examples/options of how a committee could be selected.

Alternately, we decided that the actual MVG was the "maintainer council" model, where the people who have approver rights are identical to the people who have governance authority, which is the de facto way that most small independant projects run. Anyway, check out our repo for some ideas. Also happy to sync up directly at some point.

Default license

Currently MVG inserts MIT as a default license chosen for the project's content (vs a CC license applying to MVG itself).

I think that's going to lead to surprises later on and the example license file should go more out of its way to flag its just an example.

TSC elections

I believe it should be specified how the TSC is chosen, and if selection is for life or if there is periodic revisiting of membership (e.g. 2-year terms).

Any term limit policy should be stated, even if the policy is 'no term limits' (which I favor).

TSC governance should also include if there's are any rules on membership - eg no more than one TSC member per company/agency/organization.

Exploration: How to visualize what is where?

When I started reading the MVG I had a bit of a hard time figuring out what is where, and what each file is meant to be used for.

I have some ideas but I don't fully know where I am going with this so rather than sending a PR for it right away, I am exploring the options here.

Idea 1: Formatting the two main folders in the README slightly differently

The README could make it more obvious that the main structure are these two folders.

It could look similar to this:

There are two folders:

  • org-docs: Provides top-level organizational governance and polices for a technical steering committee (TSC).
  • project-docs: Provides a template for individual project governance, subject to the polices and oversight of the larger organization.

Idea 2: Tree structure

Listing the main files in the README would allow to explain where to start, and what the purpose of each file is.

For example:

org-docs/
├── ANTITRUST.md - ...
├── CHARTER.md <= Start here
├── CODE-OF-CONDUCT.md - Code of Conduct based on the Contributor Covenant.
├── STEERING-COMMITTEE.md - Lists the voting members of the Steering Committee
└── TRADEMARKS.md - ...

project-docs/
├── CONTRIBUTING.md - ...
├── GOVERNANCE.md <= Start here
├── LICENSE.md - ...
└── MAINTAINERS.md - Lists the Maintainers of the Project

Alternatively one could add a new README.md file to each of the folders.
Those would serve as index pages, explaining what each file is meant to be used for.

So much for now. Looking forward to hear your thoughts on this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.