On adopting a Code of Conduct for NLnet Labs

At NLnet Labs, we have recently adopted a code of conduct that applies to all our projects and the interactions with our community. In this blog post, we discuss why we did this, how we went about the process and what we learned along the way.


4 min read

By Roland van Rijswijk-Deij

Open, open and open

Photo by Taylor Simpson on Unsplash

Photo by Alex Holyoake on Unsplash

Our core mission is to support an open Internet by developing open source implementations of open standards and to contribute to the development of these standards. It is impossible to achieve these goals without an open mindset and an open culture that fosters new ideas and contributions from anyone, regardless of their background.

As is often the case with things that are important, but not urgent, while we have always been mindful of how we interact with our community, we had never quite found the time to formalise our principles in a code of conduct. This changed when we received a grant from the Mozilla Open Source Support programme for work on our Unbound DNS resolver. This grant came with the request to establish a code of conduct, and more importantly: it came with support from a specialised consultant, Paloma Figueroa of ReadySet, included. So with her help we set out to develop a code of conduct that embodies our values.

Getting inspired and finding a fit

Photo by Taylor Simpson on Unsplash

The first step towards developing our own code of conduct was to find inspiration in what others did. With the help of Paloma, who provided links to a set of examples of codes of conduct, and with input from our team, we studied about a dozen different codes of conduct. Goal of this exercise was not just to get inspired, but also to figure out which style resonated with our team.

It was clear from the get go that short and informal was strongly preferred over long and detailed. We wanted to develop a code of conduct based on principles rather than creating a document with exhaustive detail. While this sounds easy, it is hard to strike a balance. If text becomes too short or too informal, it often also becomes ambiguous. On the other hand, we wanted to steer clear of explaining everything with examples, as this runs the risk of spelling out each and every type of conduct you want to encourage or discourage.

Equally, we saw that some codes of conduct define a long list of grounds on which people are discriminated against. While we see the good intentions behind this, and could reason about each and every example we found listed, we felt that for us this would not be a good fit. The biggest risk we saw was that we would never be able to exhaustively complete such a list, which in turn might lead people to feel excluded because we did not discuss the grounds on which they had been discriminated in the past. Instead, we chose to list commonly understood grounds for discrimination that also align with the Dutch constitution.

NLnet Labs is dedicated to creating an inclusive environment for everyone, regardless of race, ethnicity, gender and gender identity, sexual orientation or any other personal characteristics or beliefs.

We also wanted to make sure we first and foremost encourage positive behaviour that we would like to see, rather than just being restrictive and listing bad behaviours. We emphasised this by writing in the active voice about encouraged behaviour, and in passive voice about behaviours we consider unacceptable.

Ironing out the details and working with feedback

Photo by Filip Mroz on Unsplash

We now get to, perhaps, the most important lesson we learned during the writing process. Writing and reading a code of conduct is very personal. That is: every person reads such a document with their own life experiences in mind. The first round of feedback took place within our team. While overall the values in the team aligned really well, and the chosen style for our code of conduct was generally appreciated, language can be ambiguous, and we ironed out many ambiguities in shorter and longer discussions.

The next step was to get feedback from Paloma and her colleagues. This led to further clarifications and suggestions to improve potentially ambiguous text. It also led to a few slightly more difficult choices. What to do with suggestions from experienced professionals that might lead to significant changes or additions to the text? On the one hand, we wanted to keep our text compact, on the other hand, it felt wrong to ignore input from the pros. Fortunately, we got excellent guidance from Paloma in what feedback we should definitely take on board, and what feedback was a suggestion, but not necessarily a must-do. So after choosing what to take on board, and what to leave for the future, we ended up with the version we just published on our website.

So now you have this code of conduct, what’s next?

First order of business is to make sure our community is aware of the code of conduct. In order to do this, we will publish the code in the Github repositories for our open source projects and announce the code of conduct on our community mailing lists.

The thing about a code of conduct is, of course, that you mainly have it for when things go off the rails. We hope it will be a long time before this happens, but if it happens, it will be when we most need our code of conduct. We will treat every report of a violation of our code of conduct with the utmost care and will try to learn something from every case if and when it occurs. The lessons we learn may lead to periodic updates. If this is the case, know that we will be as transparent about this as possible and communicate this to our community.

For now, we hope that you, our community, will take a few moments to read the code of conduct, and if you have any feedback, please let us know!

Acknowledgements

We would like to thank the Mozilla Open Source Support programme for providing funding to support the writing process, and Paloma Figueroa and her colleagues from ReadySet for guidance and valuable input during the writing process.


Leaping through RPKI history with Ziggy
Previous article

Leaping through RPKI history with Ziggy

RPKI, the Resource Public Key Infrastructure, is an important cornerstone in securing the BGP routing system on the Internet. In its…

Response Policy Zones in Unbound
Next article

Response Policy Zones in Unbound

We are incredibly happy to introduce Unbound 1.10. This release features RPZ, a mechanism that makes it possible to define your local policies in a standardized way, and load your policies from external sources.


Related Articles

Building a new home for NLnet Labs
3 min read
Open Recursor Blocked
2 min read

GO TOP