├── README.md ├── RFC.rst ├── code-of-conduct.rst ├── contributor-guidelines.rst ├── examples.rst ├── mediation.rst └── procedures.rst /README.md: -------------------------------------------------------------------------------- 1 | # php-code-of-conduct 2 | Repository for the PHP Code of Conduct process 3 | -------------------------------------------------------------------------------- /RFC.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | PHP RFC: Adopt Code Of Conduct 3 | ============================== 4 | 5 | * Version: 0.6-dev 6 | * Date: 2016-02-03 7 | * Author: Derick Rethans 8 | * Original Author: Anthony Ferrara 9 | * Status: Open 10 | * First Published at: http://wiki.php.net/rfc/adopt-code-of-conduct 11 | 12 | Introduction 13 | ============ 14 | 15 | This RFC proposes that the PHP project should adopt Contributing Guidelines 16 | and a formal Code of Conduct for its members. 17 | 18 | PHP is a widely-used open source general-purpose scripting language that is 19 | especially suited for web development. It is used by millions of developers 20 | world wide, regardless of level of experience, gender, gender identity and 21 | expression, sexual orientation, disability, personal appearance, body size, 22 | race, ethnicity, age, religion, or nationality. As project maintainers we 23 | are committed to making participation in this project a comfortable experience 24 | for everyone. 25 | 26 | The goal of the Contributor Guidelines and Code of Conduct is to give a clear 27 | signal what is expected of contributors and project maintainers, regarding 28 | their conduct in discussions on mailing lists, and other related communication 29 | channels. More specifically, the expected conduct in discussing language 30 | improvements and changes through the RFC process. 31 | 32 | This proposal consists of several parts: 33 | 34 | - The goal of the documents (this part). 35 | - Contributor `Guidelines `_, to decrease toxicity 36 | and improve collaboration. 37 | - A more formal `Code of Conduct `_, which provides a 38 | general overview on what constitutes as unacceptable behaviour. 39 | - A set of `procedures `_ to follow if individuals wish to 40 | make complaints if other project members do not follow either the Code of 41 | Conduct or the Constructive Collaboration Guidelines. 42 | - The creation of a `Contributor Mediation Team `_ to assess 43 | and act upon the complaints as received through the above procedures 44 | - A set of `examples `_ and thought experience on good and bad 45 | behaviour. 46 | 47 | Updating Code Of Conduct 48 | ======================== 49 | 50 | Any changes to the text of the above mentioned documents, minus grammatical and 51 | spelling errors, but including the Contributor Guidelines, Code of Conduct, and 52 | Mediation Team Guidelines, shall require an RFC with 2/3 majority voting. Any 53 | changes to the text of the Contributor Guidelines shall require an RFC with 54 | 2/3 majority voting. 55 | 56 | Vote 57 | ==== 58 | 59 | This RFC requires 2/3 majority to pass, as it has a significant impact on the 60 | community and project operations. 61 | 62 | Changelog 63 | ========= 64 | 65 | * 0.1 - Initial Draft 66 | * 0.2 - Move to 2/3 majority 67 | * 0.3 - Significant expansion of the RFC 68 | * 0.4 - More significant expansion, adding examples 69 | * 0.5 - Focus more on mediation than punishment. Rename the Conflict Resolution Team to Contributor Mediation Team. Reshuffle content. Added Constructive Collaboration Guidelines. 70 | * 0.6-dev - Collecting different documents, and including feedback from various people 71 | -------------------------------------------------------------------------------- /code-of-conduct.rst: -------------------------------------------------------------------------------- 1 | PHP Project Code of Conduct (CoC) 2 | ================================= 3 | 4 | Taken from https://github.com/derickr/php-community-health/issues/14: 5 | 6 | 1. The CoC is to provide community guidelines for creating and enforcing a 7 | safe, respectful, productive, and collaborative place for any person who is 8 | willing to contribute in a safe, respectful, productive and collaborative 9 | way. 10 | 11 | 2. The CoC is not about being offended. One should always assume good 12 | intentions. As with any diverse community, anyone can — and probably will — 13 | get offended at anything. 14 | 15 | 3. A safe, respectful, productive and collaborative environment is free of 16 | personal attacks and disparaging remarks of any kind, this includes (but is 17 | not limited to): level of experience, gender, gender identity and 18 | expression, sexual orientation, disability, personal appearance, body size, 19 | race, ethnicity, age, religion, beliefs, politics, and nationality. 20 | 21 | 4. Any sustained disruption of the collaborative space (mailing lists, wiki, 22 | bug tracker, official social media accounts) or when representing the PHP 23 | project shall be construed as a violation of the CoC and appropriate action 24 | will be taken by the CoC committee. 25 | 26 | 5. The CoC is only about interaction with the PHP community. Your private and 27 | public lives outside of the PHP community are your own. However, we reserve 28 | the right to take your public conduct into account when considering your 29 | project related conduct. 30 | 31 | Encouraged Behaviour 32 | -------------------- 33 | 34 | Examples of encouraged behaviour include: 35 | 36 | - Discuss and disagree respectfully concerning new features, changes, and 37 | technical implementations (e.g. discussing any RFC) 38 | - Objective and qualified responses regarding why features or their 39 | implementations are lacking or otherwise not suitable 40 | - Mentor newcomers to the project 41 | - Behave professionally 42 | - Exercise consideration of the many different world views present and be 43 | respectful of them in your speech and actions 44 | - Attempt collaboration before conflict, and attempt to improve upon ideas 45 | presented, rather than dismissing them 46 | 47 | Our expectation is that we will treat each other, and others our community 48 | interacts with, with consideration, empathy, and respect. Our speech and 49 | behaviour will be guided by a desire to create and maintain an inclusive 50 | community purposed towards sharing knowledge and encouraging enthusiasm for 51 | solving problems. 52 | 53 | Unacceptable Behaviour 54 | ---------------------- 55 | 56 | Examples of unacceptable behaviour by participants include: 57 | 58 | - The use of sexualized language or imagery and unwelcome sexual attention or 59 | advances 60 | - Trolling, insulting/derogatory comments, and personal or political attacks 61 | - Public or private harassment 62 | - Publishing other's private information, such as physical or electronic 63 | addresses, without explicit permission (AKA doxing) 64 | - Coercing other members to vote for a particular option on an RFC, or to 65 | change or withdraw an RFC 66 | - Other conduct which could reasonably be considered inappropriate in a 67 | professional setting 68 | 69 | Application of the Code of Conduct 70 | ---------------------------------- 71 | 72 | Project maintainers are responsible for clarifying the standards of acceptable 73 | behavior and are expected to take appropriate and fair corrective action in 74 | response to any instances of unacceptable behavior. 75 | 76 | Project maintainers have the right and responsibility to remove, edit, or 77 | reject comments, commits, code, wiki edits, issues, and other contributions 78 | that are not aligned to this Code of Conduct, or to ban temporarily or 79 | permanently any contributor for other behaviours that they deem 80 | threatening, offensive, or harmful. 81 | 82 | This Code of Conduct applies both within project spaces and in public spaces 83 | when an individual is representing the project or its community — 84 | specifically, this means anywhere you are using your @php.net email address 85 | (e.g. via email or on a contact me slide), or are otherwise presenting 86 | yourself as an official representative of the PHP project. 87 | 88 | Instances of abusive, harassing, or otherwise unacceptable behaviour may be 89 | reported by contacting a project maintainer at codeofconduct@php.net. All 90 | complaints will be reviewed and investigated as outlined 91 | [here](#appropriatelink) and will result in a response that is deemed 92 | necessary and appropriate to the circumstances. Maintainers are obligated to 93 | maintain confidentiality with regard to both the reporter of an incident, and 94 | the accused, and expect all parties to assist in ensuring this. 95 | -------------------------------------------------------------------------------- /contributor-guidelines.rst: -------------------------------------------------------------------------------- 1 | Contributor Guidelines 2 | ====================== 3 | 4 | This is a collection of suggestions on how to improve communication and 5 | collaboration. About two thirds of this is reworked from the ancient wisdoms 6 | as encoded in http://php.net/mailing-lists.php and 7 | http://git.php.net/?p=php-src.git;a=blob_plain;f=README.MAILINGLIST_RULES;hb=HEAD 8 | 9 | Constructive Collaboration Guidelines 10 | ------------------------------------- 11 | 12 | This section presents a loose collection of guidelines that focus on 13 | encouraging constructive feedback on language proposals (RFCs) and other email 14 | threads. RFCs are used to introduce new features into the language. In some 15 | cases, discussions could benefit from more focus on collaborative improvements 16 | to an RFC, instead of comments to the tune of, "I don't like it". The RFC 17 | process is primarily designed to improve RFCs, and by extension, PHP, before they 18 | are put to a vote. Even though you might be inclined to vote "no" on an RFC, you 19 | can still provide feedback to make the RFC and feature better. 20 | 21 | PHP is developed through the efforts of a large number of people. 22 | Collaboration is a Good Thing™, and mailing lists are the collaboration platform. 23 | Thus, following some basic rules with regards to mailing list usage will: 24 | 25 | * Make everyone happier, especially those responsible for developing PHP 26 | itself. 27 | * Help in making sure we all use our time more efficiently. 28 | * Prevent you from making a fool of yourself in public. 29 | * Increase the general level of goodwill on planet Earth. 30 | 31 | Below are several suggestions on how to provide constructive criticism on RFCs 32 | and other related discussions: 33 | 34 | * Respect other people working on the project. 35 | * Make sure you know what you are talking about. PHP is a very large project 36 | that strives to be very open. The flip side is that the core developers 37 | are faced with a lot of requests. Make sure that you have done your 38 | research before posting to the entire developer community. 39 | * Write as clearly and unambiguously as you can. It is better to be descriptive 40 | than to be concise. 41 | * Write as much as is necessary, but as little as you can get away with. 42 | * Not everyone that will read your post is a native English speaker, try to 43 | use simple words where possible. 44 | * Debate the proposal, not the person. Frank and critical discussion of ideas 45 | improve collaboration, whilst personal attacks and innuendos only detract 46 | from the process. 47 | * When you disagree with a certain proposal, try to think whether there are 48 | changes that can be made to the RFC that will enable you to 49 | support it. If you come up with such improvements, respectfully propose them 50 | to the RFC author to try and evolve the idea into a better one. Only resort 51 | towards arguing against the RFC if you think it's a bad idea and you can 52 | think of no ways to improve it. When disagreeing, provide substantial reasons 53 | against the RFC instead of just saying "no". Try to outline 54 | specific points you disagree with and suggest ways of improvement. And 55 | remember, you can suggest improvements to an RFC even if you would not vote 56 | to support the RFC. 57 | * RFCs with patches have a much greater chance of acceptance than just asking the 58 | PHP developers to implement a feature for you. For one it makes the 59 | discussion more concrete and it shows that the poster put thought and time 60 | into the request. If you can't implement an idea yourself, try to find 61 | somebody to implement your ideas *before* proposing a feature. 62 | 63 | And here are a few things you should avoid while discussing features and other 64 | technical content: 65 | 66 | * Try to avoid hyperbole to defend your arguments. 67 | * Do not post when you are angry. Any post can wait a few hours. Review 68 | your post after a good breather or a good nights sleep. From this follows: 69 | Don't send a "quick email", especially during a heated debate. 70 | * If you are posting to an existing thread, make sure that you know what 71 | previous posters have said. This is even more important the longer the 72 | thread is already. 73 | * Think before you send "reply". Consider how the other party is likely to 74 | feel about the content. Reflect how you would feel if the same text was 75 | directed at you. Emotions are important and difficult, especially when you 76 | have never met persons in real life. 77 | * If you notice that your posting ratio is much higher than that of other 78 | people, double check the above rules. Try to wait a bit longer before 79 | sending your replies to give other people more time to digest your answers; 80 | more importantly this will ensure that your current position is aggregated 81 | into a single email instead of multiple ones. 82 | * Consider taking a step back from a very active thread now and then. Maybe 83 | talking to some friends and fellow developers will help in understanding 84 | the other opinions better. Go discuss it with your local user group. 85 | * Do not hijack threads, by bringing up entirely new topics. Please 86 | create an entirely new thread copying anything you wish to quote into the 87 | new thread. 88 | 89 | E-mail Etiquette 90 | ---------------- 91 | 92 | This is a set of guidelines to make sure that your emails can reach the 93 | largest group of people without annoying them regarding form and layout. 94 | Realise that people can not always use the same email client, and that there 95 | is long standing etiquette to improve communication. 96 | 97 | - Please configure your email client to use a real name. 98 | - Please keep message signature short. Don't add legal disclaimers. 99 | - Do not top post. Place your answer underneath anyone you wish to quote 100 | and remove any previous comment that is not relevant to your post. There is 101 | a great guide at https://www.netmeister.org/news/learn2quote.html 102 | - Use a valid email address. Every new poster's email address is checked for 103 | validity through confirmation. 104 | - Send plain ASCII messages, no HTML-formatted emails please. 105 | - Turn on word wrapping so your entire message doesn't show up on a single line. 106 | - Be sure to click Reply-All to reply to list. Clicking Reply will email the 107 | author of the message privately. 108 | - No attachments please, just post a URL if you want someone to look at 109 | something. All attachments that are not send as "text/plain" will be 110 | stripped by our mailinglist software. 111 | - Don't GPG/PGP sign your messages. If you want people to be able to send you 112 | encrypted email, stick your key-locator in your signature 113 | - Don't hijack other peoples' threads. To post on a new topic, start a new 114 | message, don't reply and just change the subject. 115 | - Check the archives before posting a suggestion or question, chances are it 116 | has already been asked and answered a few times. 117 | - When asking a question, don't just tell us, "it doesn't work". Tell us what 118 | you are trying to accomplish, a short code snippet showing how you tried to 119 | solve it, what you expected to get and what you got instead. 120 | -------------------------------------------------------------------------------- /examples.rst: -------------------------------------------------------------------------------- 1 | Examples 2 | ======== 3 | 4 | Representing The Project 5 | ------------------------ 6 | 7 | Activities on a php.net property 8 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 | 10 | Activities on a php.net property shall always be considered "representing the 11 | project" and hence fall under the jurisdiction of the Code of Conduct and 12 | Community Mediation Team. This includes any php.net mailing list. 13 | 14 | Activities at a technology conference 15 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 16 | 17 | While at a technology conference, the Code of Conduct is only considered to 18 | apply if and only if the person is demonstrably representing the project. 19 | 20 | For example, merely speaking at a conference about PHP is not enough to be 21 | "representing the project". However, when speaking about the project itself 22 | (meaning internals functions, etc), while the talk is occurring the Code of 23 | Conduct shall apply. 24 | 25 | This is not intended to limit the applicability of the Code of Conduct solely 26 | to the duration of the talk, however any violation that happens at a 27 | conference shall be assumed to **not** be representing the project unless 28 | there is significant and obvious evidence to the contrary. 29 | 30 | Activities on a social network 31 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 | 33 | On social networks, the Code of Conduct is only considered to apply if the 34 | context of the conversation makes it clear that the person represents the PHP 35 | project. 36 | 37 | For example, merely having "PHP contributor" in an about or bio is not enough 38 | to be "representing the project". However, a conversation about the PHP 39 | project itself (including RFCs, etc) is enough to justify "representation". 40 | 41 | Other 42 | ~~~~~ 43 | 44 | In all cases, if an issue seems reasonably connected to a project matter, the 45 | Code of Conduct may apply depending on how strongly the connection is. 46 | 47 | For example, if one person is involved in a heated discussion on internals@, 48 | and then immediately after starts harassing another participant on another 49 | channel with similar tone, the harassment may be considered a violation. 50 | 51 | In no case should a casual connection be considered a violation (just because 52 | two people are both members of the project is not enough to form a 53 | connection). 54 | -------------------------------------------------------------------------------- /mediation.rst: -------------------------------------------------------------------------------- 1 | Community Mediation Team 2 | ======================== 3 | 4 | A team of 5 volunteers shall be assembled who will make up the Community 5 | Mediation Team. 6 | 7 | The team shall consist of: 8 | 9 | * At least one person with commit karma to php-src 10 | * At least one person **without** any karma to php-src 11 | * At least one person with commit karma to php-documentation 12 | 13 | As long as the preceding three seats are filled, by three different people, 14 | there is no karma requirement (wiki or otherwise) for the remaining two seats. 15 | 16 | All team members will be elected by RFC vote (requiring 2/3 majority). 17 | 18 | There is no specified term limit, but if either the PHP project or the other 19 | members of the Community Mediation Team feel that a specific member is not 20 | doing their job, they can be removed by an RFC vote (requiring 50% + 1 to 21 | support removal). 22 | 23 | Transparency 24 | ------------ 25 | 26 | Any action taken by the Community Mediation Team shall be reported to 27 | internals@php.net, including a summary of the incident and the action taken. 28 | The summary of the incident should include supporting evidence and 29 | justification for the decision. 30 | 31 | Reasonable efforts should be taken to ensure the privacy of the reporting 32 | party. The only two exceptions are if the incident was public or if the 33 | reporting party agrees to be identified. 34 | 35 | Additionally, once per quarter (every 3 months), the Community Mediation Team 36 | shall produce an aggregated report as to the number of times incidents were 37 | reported, and the outcomes of the incidents, even if no action was taken. 38 | 39 | Potential Actions 40 | ----------------- 41 | 42 | The intention is that nothing in this section will ever be needed. In extreme 43 | cases, when the Community Mediation Team finds that a certain project member 44 | continues to violate either the Code of Conduct or Constructive Contributing 45 | Guidelines, more action **might** be required. 46 | 47 | The Community Mediation Team should make every reasonable attempt to defuse 48 | the situation without having to resort to action against the accused. This 49 | includes establishing a meaningful discussion around the incident, giving the 50 | accused transgresser the chance to apologize (privately or publicly, depending 51 | on the incident) or determining that no action is necessary even if the Code 52 | of Conduct was violated. 53 | 54 | In the event that action is required, it may include: 55 | 56 | * Reverting or editing existing commits 57 | * Rejecting pull requests 58 | * Reverting or rejecting wiki edits, issues and other contributions 59 | * Issuing a temporary ban (no more than 7 days) 60 | 61 | If the Community Mediation Team (with 4/5th majority as described above) 62 | determines that additional action is required, an RFC to the general project 63 | is created. Once the RFC is issued, the original temporary ban's lifetime will 64 | be tied to the RFC's lifetime (will expire when the vote is finished). All 65 | additional action RFCs will require 2/3 majority to affect the ban. However, 66 | the original temporary ban shall not include the //internals@php.net// mailing 67 | list, provided that the accused party remains civil and reasonably within the 68 | Code of Conduct to ensure that they receive a fair representation during the 69 | ban discussion. 70 | 71 | Additional action may include removal of commit karma, mailing list write 72 | access as well as disabling of the associated PHP.net account. Depending on 73 | the particular infraction, one, many or all access may be suspended. 74 | 75 | A new address/account which is believed to be used by an already banned 76 | individual does not require a RFC to effect provided there is reasonable 77 | evidence to support the correlation. 78 | 79 | Bans (temporary or permanent) should only be used in egregious cases where a 80 | pattern of disregard for the Code of Conduct is demonstrated. 81 | 82 | Appeals 83 | ------- 84 | 85 | Either party may appeal an action by raising the concern to internals@php.net. 86 | PHP project members may then vote to overturn or strengthen the action as 87 | necessary (votes require 50%+1 to overturn, and 2/3 majority to strengthen the 88 | action). 89 | 90 | It is worth noting that this may be used as a technique to attempt to disclose 91 | the reporter to make them the subject of public scrutiny. Therefore reasonable 92 | attempts at confidentiality should be maintained, and the teams (Community 93 | Mediation Team and PHP project members) should keep this in mind. 94 | 95 | Conflict of Interest 96 | -------------------- 97 | 98 | In the event that a Code of Conduct violation is reported against a Community 99 | Mediation Team member, the remaining members shall investigate and raise the 100 | concern to internals@php.net, even if they determine no action is to be taken. 101 | 102 | Accountability 103 | -------------- 104 | 105 | The PHP project voting body has the right to overturn any action taken the 106 | Community Mediation Team by vote (50% + 1 required to overturn). 107 | 108 | Initial Community Mediation Team 109 | -------------------------------- 110 | 111 | This RFC will include a vote for the initial Community Mediation Team. A 112 | separate thread will be opened asking for volunteers. 113 | -------------------------------------------------------------------------------- /procedures.rst: -------------------------------------------------------------------------------- 1 | Procedures 2 | ========== 3 | 4 | A new mailing list will be created at //codeofconduct@php.net// for use in 5 | reporting incidents and discussing them internally. This mailing list will be 6 | private. 7 | 8 | Process For Reported Incidents 9 | ------------------------------ 10 | 11 | In the event that an incident is reported the following process should be 12 | followed: 13 | 14 | * The Community Mediation Team is notified of an incident through //codeofconduct@php.net// 15 | * The Community Mediation Team should pick a case handler to deal with each specific incident 16 | * A team member shall document the issue as thoroughly as possible, researching any supporting materials necessary 17 | * A team member shall make contact with the accused transgressing party and document their side as much as possible 18 | * A team member shall make every reasonable attempt to mediate and defuse the situation without needing to resort to taking action against the accused 19 | 20 | If all reasonable efforts to reach a mediated agreement fail and other action 21 | is deemed absolutely necessary as a last resort: 22 | 23 | * The team member makes a recommended course-of-action to the Community Mediation Team 24 | * The Community Mediation Team will vote internally on the recommended course-of-action (4/5 majority required to affect any action) 25 | * The Community Mediation Team shall report a redacted summary of the incident and the course-of-action to //internals@php.net// 26 | 27 | At all steps the reporter(s) should be kept up to date on the process and 28 | recommendations that are made. 29 | 30 | During the investigation the reporter(s) should respect the Community 31 | Mediation Team's workings, and the privacy of the accused offending party. For 32 | example, there should be no public shaming of the accused offending party, nor 33 | of the Community Mediation Team's way of handling things before a conclusion 34 | by the team is reached. 35 | 36 | Confidentiality 37 | --------------- 38 | 39 | All incidents are to be kept in the strictest form of confidentiality. The 40 | Community Mediation Team shall be the only group to know about the reporter 41 | and the precise details of any incident. Any communication outside of the team 42 | (including fact-finding, investigation, documentation, etc.) shall not include 43 | identifying information as to the reporter unless agreed by the reporter or is 44 | otherwise public. 45 | 46 | Additionally, reasonable attempts shall be made as to the confidentiality to 47 | the accused person. This includes transparency reports where no significant 48 | action is taken (due to lack of evidence or that the Community Mediation Team 49 | determines it wasn't significant enough to warrant action against the 50 | accused). 51 | 52 | 53 | Reasonable Person Test 54 | ---------------------- 55 | 56 | To determine if the incident is a violation or not, the Community Mediation 57 | Team shall use the `Reasonable Person Test`_. 58 | 59 | .. _`Reasonable Person Test`: https://en.wikipedia.org/wiki/Reasonable_person 60 | 61 | The following four points shall be taken into account for any incident: 62 | 63 | * the foreseeable risk of harm their actions create versus the utility of their actions 64 | * the extent of the risk so created 65 | * the likelihood such risk will actually cause harm to others 66 | * any alternatives of lesser risk, and the costs of those alternatives 67 | 68 | Additionally, it shall be assumed that both parties (the accuser and the 69 | accused) are acting as reasonable people until proven otherwise. This means 70 | that best intentions shall be assumed unless significant evidence to the 71 | contrary is found. 72 | 73 | Note: reporting an incident does not absolve a person of the requirement to 74 | abide by the Code of Conduct. This means that the victim of harassment is not 75 | entitled to "harass back". 76 | --------------------------------------------------------------------------------