Annotation of embedaddon/curl/docs/GOVERNANCE.md, revision 1.1.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>