Week 2 -- a glimpse into the community

This week we started by focusing on an essential element of a community, the Code of Conduct. It is a document guiding people to behave courteously within the community. And we can see from examples that different companies/organizations may emphasize different terms during different period in the Code of Conduct. Later on, by investing web extension for Firefox and getting our hands dirty, we had a more closer experience to the industry.

Code of Conduct

To begin with, using the code of conduct from the Go project as an example, we can see some benefits for a project to have such document. In the code of conduct, the values that the community cherishes, what behaviors are encouraged, what are not, for what range such guidance is applied and how conflicts are accommodated are stated. By having such a document, behaviors of people involved in the community could be regulated. Decent behaviors both help the community have a good reputation, which attracts more contributor and users, and help people in the community to communicate more comfortably, which further contribute to more efficient team works. Though we here begin by referring to the code of conduct of the Go project, I believe having similar document would benefit other projects as well, since the benefits mentioned above are generally helpful to most projects that need communication and cooperation.

In order to notice the purpose of code of conduct as well as how it serves to the project’s goal, we compare different versions of code of conduct. Here, the Go project adapted its code of conduct from the Contributor Covenant. We start by comparing these two.

There are two main differences between these two. Firstly, under the sub-section “Scope”, the Go project adds a sentence at the end saying “This Code of Conduct also applies outside the project spaces when the Project Stewards have a reasonable belief that an individual’s behavior may have a negative impact on the project or its community.” This change regulate users’ behavior outside the project. And it serves for the purpose of reducing negative effect on the project coming from outside spaces. Which is a consideration in guaranteeing the community’s reputation more completely.

The second difference is that, while the Contributor Covenant has a sub-section “Enforcement” telling users that when there is a conflict, email to the project team, and then the project team will handle the situation as well as give feedbacks to the reporter. However, this part is stated in differently under the sub-title “Conflict Resolution” in the code of conduct of the Go project. For the Go project, how the managers handle the conflict is more detailed introduced. A change of discuss will be provided to the one that is not behaving properly. The reporter may not receive feedback and the identity of the reporter would also be hidden. By noticing these changes, we can see that the Go project is considerate in terms of handling conflicts. Offering a chance of discussion can eliminate some misunderstanding, and is also a way to construct a more friendly and inclusive community. Hiding the reporter’s identity is also helpful in terms of protecting the reporter and reduce potential unfriendly attacks.

Another project that adapted the Contributor Covenant, is the Eclipse, its code of conduct is placed under “Eclipse Foundation.” Besides the original sections, Eclipse code of conduct also adds sections “Investigation of Potential Code Violations”, “Actions”, “No Retaliation”, and “Amendments.” At the same time, in “Our Standard,” there are more statements, for example, encouraged behaviors like “Being direct but professional” and “Leading by example by holding yourself and others accountable”, and unacceptable behaviors like “Unwelcome sexual attention or advances”, “Sharing private content, such as emails sent privately or non-publicly, or unlogged forums such as IRC channel history” are additionally added. In general, we can see that Eclipse shows a stricter code of conduct in terms of regulating decent and restricting not-welcomed behaviors. My personal idea is that since Eclipse is focusing on providing a platform for collaboration, it needs to be prudent of guiding communities since this its business. As therefore, it is understandable that its code of conduct is especially strict and specific when it comes to defining what behaviors are not acceptable and how to do with such behaviors.

Now we consider another code of conduct that is not based on Contributor Covenant, the code of conduct of Sugar. This code of conduct is based on Ubuntu code of conduct. And Sugar’s code of conduct is formed in sections titled as specific behavior like “Be Flexible”, “When you disagree, consult others”, etc. It is simple yet clear, and it is not focusing on discussing how unpleasant behaviors would be handled. Perhaps this is because Sugar is a platform intended to be used by children. In this way, children can understand more clearly how they should behavior and what they should do when there is a problem.

For me, I also checked an open source project what I used, Wireshark, its code of conduct is on the website. By comparing it to former ones, we can notice that it is more similar to Sugar’s code of conduct, i.e., its subsection are specific recommended behaviors like “Be considerate”, “Be collaborative”, “Support others in the community”, etc. However, it is not adapted from Ubuntu. It is adapted from KDE code of conduct. And I personally like the design of inputing an overview of the code of conduct at first here. It is helpful for readers to get a general idea.

Add-on Projects

I didn’t have much experience with add-on projects before. Actually I am not using any myself (but now I may consider use some since some of them are really helpful). From the experience of trying out coding two simple web extensions in class, I got the sense that it basically needs knowledge of how a web page is displayed, or more specifically, how the browser handles this, which mainly involves JavaScript, HTML and some CSS. Mostly, the core part of a web extension is to write functions defining what to do when receiving certain user behaviors. Currently, my groups are figuring out what we want to do for our own extension, I am interested in adjusting the title bar of a web page, which, though is little, I believe that it has space for improvement and fun to play with. I am reading related open source projects on Github and hope will have more inspiration before next week.

Written before or on February 5, 2023