Annotation of embedaddon/curl/docs/GOVERNANCE.md, revision 1.1

1.1     ! misho       1: # Decision making in the curl project
        !             2: 
        !             3: A rough guide to how we make decisions and who does what.
        !             4: 
        !             5: ## BDFL
        !             6: 
        !             7: This project was started by and has to some extent been pushed forward over
        !             8: the years with Daniel Stenberg as the driving force. It matches a standard
        !             9: BDFL (Benevolent Dictator For Life) style project.
        !            10: 
        !            11: This setup has been used due to convenience and the fact that is has worked
        !            12: fine this far. It is not because someone thinks of it as a superior project
        !            13: leadership model. It will also only continue working as long as Daniel manages
        !            14: to listen in to what the project and the general user population wants and
        !            15: expects from us.
        !            16: 
        !            17: ## Legal entity
        !            18: 
        !            19: There is no legal entity. The curl project is just a bunch of people scattered
        !            20: around the globe with the common goal to produce source code that creates
        !            21: great products. We are not part of any umbrella organization and we are not
        !            22: located in any specific country. We are totally independent.
        !            23: 
        !            24: The copyrights in the project are owned by the individuals and organizations
        !            25: that wrote those parts of the code.
        !            26: 
        !            27: ## Decisions
        !            28: 
        !            29: The curl project is not a democracy, but everyone is entitled to state their
        !            30: opinion and may argue for their sake within the community.
        !            31: 
        !            32: All and any changes that have been done or will be done are eligible to bring
        !            33: up for discussion, to object to or to praise. Ideally, we find consensus for
        !            34: the appropriate way forward in any given situation or challenge.
        !            35: 
        !            36: If there is no obvious consensus, a maintainer who's knowledgeable in the
        !            37: specific area will take an "executive" decision that they think is the right
        !            38: for the project.
        !            39: 
        !            40: ## Donations
        !            41: 
        !            42: Donating plain money to curl is best done to curl's [Open Collective
        !            43: fund](https://opencollective.com/curl). Open Collective is a US based
        !            44: non-profit organization that holds on to funds for us. This fund is then used
        !            45: for paying the curl security bug bounties, to reimburse project related
        !            46: expenses etc.
        !            47: 
        !            48: Donations to the project can also come in form of server hosting, providing
        !            49: services and paying for people to work on curl related code etc. Usually, such
        !            50: donations are services paid for directly by the sponsors.
        !            51: 
        !            52: We grade sponsors in a few different levels and if they meet the criterias,
        !            53: they can be mentioned on the Sponsors page on the curl web site.
        !            54: 
        !            55: ## Commercial Support
        !            56: 
        !            57: The curl project does not do or offer commercial support. It only hosts
        !            58: mailing lists, runs bug trackers etc to facilitate communication and work.
        !            59: 
        !            60: However, Daniel works for wolfSSL and we offer commercial curl support there.
        !            61: 
        !            62: ## Key roles
        !            63: 
        !            64: ### Maintainers
        !            65: 
        !            66: A maintainer in the curl project is an individual who has been given
        !            67: permissions to push commits to one of the git repositories.
        !            68: 
        !            69: Maintainers are free to push commits to the repositories at their own will.
        !            70: Maintainers are however expected to listen to feedback from users and any
        !            71: change that is non-trivial in size or nature *should* be brought to the
        !            72: project as a PR to allow others to comment/object before merge.
        !            73: 
        !            74: ### Former maintainers
        !            75: 
        !            76: A maintainer who stops being active in the project will at some point get
        !            77: their push permissions removed. We do this for security reasons but also to
        !            78: make sure that we always have the list of maintainers as "the team that push
        !            79: stuff to curl".
        !            80: 
        !            81: Getting push permissions removed is not a punishment. Everyone who ever worked
        !            82: on maintaining curl is considered a hero, for all time hereafter.
        !            83: 
        !            84: ### Security team members
        !            85: 
        !            86: We have a security team. That's the team of people who are subscribed to the
        !            87: curl-security mailing list; the receivers of security reports from users and
        !            88: developers. This list of people will vary over time but should be skilled
        !            89: developers familiar with the curl project.
        !            90: 
        !            91: The security team works best when it consists of a small set of active
        !            92: persons. We invite new members when the team seems to need it, and we also
        !            93: expect to retire security team members as they "drift off" from the project or
        !            94: just find themselves unable to perform their duties there.
        !            95: 
        !            96: ### Server admins
        !            97: 
        !            98: We run a web server, a mailing list and more on the curl project's primary
        !            99: server. That physical machine is owned and run by Haxx. Daniel is the primary
        !           100: admin of all things curl related server stuff, but Björn Stenberg and Linus
        !           101: Feltzing serve as backup admins for when Daniel is gone or unable.
        !           102: 
        !           103: The primary server is paid for by Haxx. The machine is physically located in a
        !           104: server bunker in Stockholm Sweden, operated by the company Portlane.
        !           105: 
        !           106: The web site contents are served to the web via Fastly and Daniel is the
        !           107: primary curl contact with Fastly.
        !           108: 
        !           109: ### BDFL
        !           110: 
        !           111: That's Daniel.
        !           112: 
        !           113: # Maintainers
        !           114: 
        !           115: A curl maintainer is a project volunteer who has the authority and rights to
        !           116: merge changes into a git repository in the curl project.
        !           117: 
        !           118: Anyone can aspire to become a curl maintainer.
        !           119: 
        !           120: ### Duties
        !           121: 
        !           122: There are no mandatory duties. We hope and wish that maintainers consider
        !           123: reviewing patches and help merging them, especially when the changes are
        !           124: within the area of personal expertise and experience.
        !           125: 
        !           126: ### Requirements
        !           127: 
        !           128: - only merge code that meets our quality and style guide requirements.
        !           129: - *never* merge code without doing a PR first, unless the change is "trivial"
        !           130: - if in doubt, ask for input/feedback from others
        !           131: 
        !           132: ### Recommendations
        !           133: 
        !           134: - we require two-factor authentication enabled on your github account to
        !           135:   reduce risk of malicious source code tampering
        !           136: - consider enabling signed git commits for additional verification of changes
        !           137: 
        !           138: ### Merge advice
        !           139: 
        !           140: When you're merging patches/PRs...
        !           141: 
        !           142: - make sure the commit messages follow our template
        !           143: - squash patch sets into a few logical commits even if the PR didn't, if
        !           144:   necessary
        !           145: - avoid the "merge" button on github, do it "manually" instead to get full
        !           146:   control and full audit trail (github leaves out you as "Committer:")
        !           147: - remember to credit the reporter and the helpers!
        !           148: 
        !           149: ## Who are maintainers?
        !           150: 
        !           151: The [list of maintainers](https://github.com/orgs/curl/people). Be aware that
        !           152: the level of presence and activity in the project vary greatly between
        !           153: different individuals and over time.
        !           154: 
        !           155: ### Become a maintainer?
        !           156: 
        !           157: If you think you can help making the project better by shouldering some
        !           158: maintaining responsibilities, then please get in touch.
        !           159: 
        !           160: You will be expected to be familiar with the curl project and its ways of
        !           161: working. You need to have gotten a few quality patches merged as a proof of
        !           162: this.
        !           163: 
        !           164: ### Stop being a maintainer
        !           165: 
        !           166: If you (appear to) not be active in the project anymore, you may be removed as
        !           167: a maintainer. Thank you for your service!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>