implement shortcode for interview question

This commit is contained in:
Drew
2025-03-21 23:01:00 -06:00
parent a5cb5e7353
commit e5466d8de9
7 changed files with 281 additions and 92 deletions

View File

@ -8,41 +8,57 @@ summary: "After widespread resistance to codes of conduct in open-source softwar
tags: [code of conduct, dispute resolution, gender, open-source software, organizations]
---
*First of all, I want to begin with the question of how you how you prefer to introduce yourself.*
{{< i >}}
First of all, I want to begin with the question of how you how you prefer to introduce yourself.
{{< /i >}}
My name is Coraline Ada Ehmke. I'm the founder and executive director of the Organization for Ethical Source. I'm also a software engineer, emerita, having spent about two and a half decades in the industry. I'm best known as the creator of Contributor Covenant, the first and most popular code of conduct in the world for open source communities and other digital communities. And I'm very happy to be here with you, Nathan.
*How would you outline the trajectory of your life and career? Where do you start? And where are you now?*
{{< i >}}
How would you outline the trajectory of your life and career? Where do you start? And where are you now?
{{< /i >}}
Career-wise, I would start in 1994, when I was a kind of adrift kind of kid. I was working at an engineering company in Austin, Texas, because my girlfriend got her dad to give me a job there. Back then I'm a smoker, and I'm always having conversations with the other smokers, who, some of whom are software engineers and some of whom are IT folks. So I have a good relationship with them. And one day one of them comes up to me and says, "Coraline, did you hear the company's putting together a web team?" I was like, "Oh, that's amazing. Put the company on the Internet. That's great." And he said, "So what do you think that's going to do for your career?" And that is how I fell into software development as a college dropout.
Then fast forward a lot of years to about 2012, 2013. This is the point where I had made a decision to begin my gender transition. I was slowly waking up to realities of the world that had been conveniently easily ignored by me previously, and that were no longer ignorable. Things that I understood in principle, I was beginning to experience firsthand, and that made me angry. But it was a righteous fury, and I decided to look for ways that I could use my skills and my life experience to change things, change the world, change the sphere that I was operating in---the sphere of tech and the sphere of open source---to make it less awful for people. And over time I've graduated from less awful to actually, like, maybe pro-social. Maybe we can use technology to actually make a difference in the world, a positive difference in the world. So I am less righteous fury these days, and more hopeful, looking for visions of equitable futures. I guess that's my career in a nutshell.
*Does the does the world word "protocol" mean anything to you? Is that a word that you've used to describe aspects of your life, or that has been an important part of your work?*
{{< i >}}
Does the does the world word "protocol" mean anything to you? Is that a word that you've used to describe aspects of your life, or that has been an important part of your work?
{{< /i >}}
It is, in multiple senses of the word. Back in the day I was giving a talk called "He Doesn't Work Here Anymore," which was about my experience of transitioning as an engineer, as a technologist. One of the things I pointed out was that I was learning that communication works very differently than the way I'd experienced it in the past. If you likened it to the HTTP protocol, women were including extra headers that indicated the kind of response that they were hoping to get by sharing a particular by communicating a certain thing. Men on the receiving end were ignoring those headers and answering in a way that was maybe solving a problem or something, but not what was wanted. Other women are sensitive to these headers that are embedded in the messages, and communicate more empathetically for that reason. I was using the HTTP protocol as a metaphor for humans communicating. So I think I've always had the notion of a protocol as a methodology for interactions, whether between human agents or pieces of code.
*I love that you brought up that context, and it reminds me, too, of the what you said earlier about the way in which things become visible in the context of transition. Things that are invisible otherwise visibilize themselves. And you know that, I think, is part of the behavior of protocols---to be invisible as infrastructures, and then to become visible when some kind of the inadequacy becomes clear.*
{{< i >}}
I love that you brought up that context, and it reminds me, too, of the what you said earlier about the way in which things become visible in the context of transition. Things that are invisible otherwise visibilize themselves. And you know that, I think, is part of the behavior of protocols---to be invisible as infrastructures, and then to become visible when some kind of the inadequacy becomes clear.
{{< /i >}}
Sure, or a bad implementation. That's always a possibility as well. A protocol is only as good as its adaptations.
*You identified earlier with the Contributor Covenant. I wanted to focus this conversation as well, but feel free to bring in other projects as well, because I think other projects of yours are relevant. But starting with the Contributor Covenant, can you describe the story of your motivation for developing and then stewarding it, especially for people who are not familiar with what it is. Where did that story start for you?*
{{< i >}}
You identified earlier with the Contributor Covenant. I wanted to focus this conversation as well, but feel free to bring in other projects as well, because I think other projects of yours are relevant. But starting with the Contributor Covenant, can you describe the story of your motivation for developing and then stewarding it, especially for people who are not familiar with what it is. Where did that story start for you?
{{< /i >}}
It was around 2013, I believe, 2013 or 2014, when a Twitter hashtag emerged from the Python [programming language] community, which was #COCPledge. Basically, conference speakers were pledging to not speak at conferences that didn't have an enforceable code of conduct. This is a time when we have a lot of new people coming into the industry, a lot of people who have seen the salaries that tech companies offer and can see the transformative power of being involved in that economy. And a lot of those people didn't look like the people who came before them. And a lot of those people faced challenges that the people who came before them didn't experience. Those challenges could seem invisible. So codes of conduct were becoming necessary for the peaceful operation of gatherings of technologists. But that was meeting with resistance. It was very controversial. This is something we take for granted now---even department stores have codes of conduct now. But it was very controversial at the time for conferences, and there was a lot of a lot of activism that was required to make it a norm.
In the midst of that, I saw that there are other places where technologists gathered, where their conduct also had the potential to be problematic. This was on Github, in the context of our open source communities and projects. The concept of a "community" was beginning to come into common usage to describe the group of people that coalesced around an open source project, and was not always a given. As we began to see projects as communities, we saw the need for shared values and norms to emerge. This led to the philosophy behind the Contributor Covenant, which was written as a way to establish shared values and norms for how people would interact in these open source communities. Over time, our understanding of what this means has developed and matured, and the Contributor Covenant has become a living document. The team is currently working on the tenth anniversary version 3.0, which will be modular to accommodate the novel use cases they've discovered, such as Discord servers, Slack communities, and even offline events. This evolution towards an "adapt versus adopt" approach is another way the concept of codes of conduct for digital communities is maturing to meet changing needs. The Contributor Covenant has always been a living document, accepting pull requests and being translated into more than twenty-five languages. With Contributor Covenant 3.0, the team is looking to expand their coverage of languages from the global south, in an effort to counteract the export of white western values that often go along with open source by default, and to be a force for decolonization. They have big plans for what a more globally oriented, norm-based instrument can do for the world.
*So, in telling that story, you began in passive voice---it was created---and then you switched to first-person plural. I wonder if you could describe a bit more about the design process for the Contributor Covenant at each stage? From the beginning, what was that process like and how has it evolved now?*
{{< i >}}
So, in telling that story, you began in passive voice---it was created---and then you switched to first-person plural. I wonder if you could describe a bit more about the design process for the Contributor Covenant at each stage? From the beginning, what was that process like and how has it evolved now?
{{< /i >}}
Wow! That's a great question and a great observation. At the beginning, the Contributor Covenant was very much a social justice manifesto, and many critics of codes of conduct in general, and the Contributor Covenant in particular, regarded it as a political document pushing a certain political agenda. I was in full agreement with these critics that yes, the Contributor Covenant was attached to a social justice agenda. And why shouldn't it be? It was very confrontational, and the language was also confrontational, because they were confronting a status quo and a culture that was literally harmful. Of course, what they proposed was antagonistic and confrontational, because that was the context in which they were operating.
Over time, however, the Contributor Covenant has gotten less confrontational and less adversarial, and more reflective. I hope it is more reflective of changing values in our digital communities as well. With version 3.0, the emphasis is on the globalization of the Contributor Covenant as an instrument. To achieve this, we actually have to strip out a lot of the language that would typically be associated with some of the values they're talking about, because it's jargon---social justice jargon. When talking to people who don't speak English as a first language, or people who are from outside the white Western sphere, those words aren't going to make sense to them, and that's not acceptable anymore.
*Was it a collective project from the beginning?*
{{< i >}}
Was it a collective project from the beginning?
{{< /i >}}
No, it was just me shepherding it, guiding it, and writing it for a number of years. I gifted contributor Covenant to OES, I believe, in 2021 or 2022.
*The Organization for Ethical Source.*
{{< i >}}
The Organization for Ethical Source.
{{< /i >}}
Yes, I gifted the Contributor Covenant to the Organization for Ethical Source because I saw that it was too important to be under the control of just one person. I didn't want there to be a single person responsible for it.
@ -59,7 +75,9 @@ There's a reason it's called the Contributor Covenant instead of the Contributor
It's adopting a protocol, and that just made a lot more sense than a list of rules or regulations, or policies or manifestos. Not to say that those things don't have value, not to say that those things aren't related or interdependent. But it just makes sense to me as a really general, well-recognized form of social contract.
*Can you talk me through the way it functions? I think this connects to the distinction between code and covenant. How does it work? Maybe in an example or in general practice that you've seen? How does this function in the world?*
{{< i >}}
Can you talk me through the way it functions? I think this connects to the distinction between code and covenant. How does it work? Maybe in an example or in general practice that you've seen? How does this function in the world?
{{< /i >}}
The Contributor Covenant begins with a preamble which is basically a list of protected classes from a human rights perspective. This establishes the intent right off the bat---it's saying we are intending our community to recognize, understand, and remediate issues that people who fit these criteria often experience. So first of all, we're prioritizing the safety of the most vulnerable and those with the least agency. We're saying that right from the beginning.
@ -69,7 +87,9 @@ From there, we go into some procedures around how to report a violation, and wha
At the end, we're hinting that we want people to adapt, not just adopt, by saying this code of conduct is adapted from the Contributor Covenant, with a link to the permanent URL. We're going to make that a little bit more explicit with Contributor Covenant 3.0, but that's basically how it works. It's setting up, "Here's what we value, here's how we treat each other, here's what we do in case of conflict." At a high level, that's the purpose of a lot of governance documents. Right? Here's what we value. Here's how we treat each other. Here's how we operate. Here's why. And here's how.
*How has this been adopted in practice? It's gone from being an insurgent project that encountered a lot of resistance, as you said, to becoming really widespread in the open source world. What kinds of doors opened? Were there particular moments you think of that revealed something about how the protocol was working?*
{{< i >}}
How has this been adopted in practice? It's gone from being an insurgent project that encountered a lot of resistance, as you said, to becoming really widespread in the open source world. What kinds of doors opened? Were there particular moments you think of that revealed something about how the protocol was working?
{{< /i >}}
In the beginning, say for the first 5-6 years, the presence of a code of conduct was a signal that the project leaders, the community leaders, cared about these shared values, had the intention of making their community welcoming and safe. However, with the widespread adoption of codes of conduct, it's become something that people don't think too much about until they have to. It has also become less of a signal, because the adoption is less intentional. Now, the reverse is true. A project without a code of conduct is a stronger signal than a project with one.
@ -77,12 +97,16 @@ In a sense, this is a victory, because we have normalized something that once wa
Our relationship with equity has changed and gotten a little bit more complicated, and maybe a little bit more demanding. But the same could be said of governance across the board in digital communities---it requires a lot more work now than it did ten years ago. This is the reality we're facing, and it's something that needs to be continuously addressed and improved upon.
*Have you had experiences of capture? When, for instance, has the covenant been used in ways that you didn't expect, and that you objected to?*
{{< i >}}
Have you had experiences of capture? When, for instance, has the covenant been used in ways that you didn't expect, and that you objected to?
{{< /i >}}
I've had questions about why certain communities have adopted it---communities whose work I think is not necessarily terribly pro-social. I've had mixed feelings about big adoptions by FAANG companies, for example. Facebook, Apple, Amazon, Netflix, Google. There have been companies whose business models are predicated on human rights abuses. I have mixed feelings about them using Contributor Covenant. But the way I reconcile it is that a lot of developers, a lot of technologists, and others are going to be interacting
with the open source projects that these companies put out. I care more about the experience and equitable treatment of the people who are in a position where they are interacting with those projects, maybe because they have to. I care more about them than I care about Facebook itself, for instance. So objecting to Facebook's adoption would be negatively impactful on the tens of thousands of developers who use their frameworks.
*Referring to these companies makes me wonder about the question of economy. You've more recently worked to build an organization around this around this work. But what has been the experience so far around supporting the work that goes into developing this project? Was there funding at the beginning? What kind of economic journey has this project been on?*
{{< i >}}
Referring to these companies makes me wonder about the question of economy. You've more recently worked to build an organization around this around this work. But what has been the experience so far around supporting the work that goes into developing this project? Was there funding at the beginning? What kind of economic journey has this project been on?
{{< /i >}}
The Organization for Ethical Source was founded with a grant from Omidyar, in conjunction with a partner organization. This interest was sparked by our work on the Hippocratic License, the Ethical Open Source license that's tied to the United Nations Declaration of Human Rights.
@ -94,7 +118,9 @@ I think it might be because the Contributor Covenant is now something that's tak
This has been a challenge, but luckily the Organization for Ethical Source is scrappy and we're volunteer-led, so we're not going to let that stop us.
*What have been some of the most important and material tasks or decisions over the course of the project? Were there particular pivot points?*
{{< i >}}
What have been some of the most important and material tasks or decisions over the course of the project? Were there particular pivot points?
{{< /i >}}
The addition of the Enforcement Guidelines were a pretty big milestone for the Contributor Covenant. A lot of the critiques people had were around codes of conduct being very divisive, as I mentioned from the get-go. And while sometimes those opinions were expressed through violence and threats of violence, I always tried to listen to what people were saying behind those threats, to understand what they were afraid of and see if there was anything I could do to make them less afraid.
@ -106,7 +132,9 @@ Including the Enforcement Guidelines seemed to address a lot of the feedback and
Despite this pushback and even vitriol, I've tried to adapt to the changing conditions and demonstrate that, despite the Contributor Covenant's social justice origins, the underlying social justice concepts are pro-social and should not be controversial. I'm not asking someone to adopt an entire political agenda---I'm simply asking them not to discriminate against others and to treat each other as fellow human beings.
*You mentioned the license licensure work, the work with the ethical source licenses. Could you say a bit about how that next phase of protocol development came about for you?*
{{< i >}}
You mentioned the license licensure work, the work with the ethical source licenses. Could you say a bit about how that next phase of protocol development came about for you?
{{< /i >}}
The impetus for creating the Hippocratic License 1.0, or even the alpha version that got so much attention in 2019, came from Mijente, the Latinx activist organization and immigrants' rights activist organization, and their "No Tech for ICE" campaign. This highlighted the issue for us. We saw that open source was being used and abused in ways that the open source community wouldn't accept, like an individual maintainer's software being used in extrajudicial killings. At least, we hoped they would be opposed to something like that.
@ -120,34 +148,46 @@ That's something we've contended with, and we've tried to address critiques of e
The Hippocratic License has actually become very popular---the most popular sector of adopters is academic researchers. That's fascinating to me, even though it's not the intended use case we had in mind. It's really interesting to see what's happening with it in the real world.
*You talked about the enforcement there, and that's a point of contrast between the two designs. Right? The Contributor Covenant relies largely on the assumption that there's either an organization or a maintainer, somebody who is exercising a kind of community-scale enforcement power, and they have the ability to remove people, whereas the the Hippocratic license, the ethical source licenses, rely on a level of legal enforcement. Can you say a bit about how that that kind of dependency, so to speak, affects the design of the protocol?*
{{< i >}}
You talked about the enforcement there, and that's a point of contrast between the two designs. Right? The Contributor Covenant relies largely on the assumption that there's either an organization or a maintainer, somebody who is exercising a kind of community-scale enforcement power, and they have the ability to remove people, whereas the the Hippocratic license, the ethical source licenses, rely on a level of legal enforcement. Can you say a bit about how that that kind of dependency, so to speak, affects the design of the protocol?
{{< /i >}}
One of the key goals for the Ethical Source licenses that aligns perfectly with the Contributor Covenant's framework is to make the implicit explicit. The team wanted to ensure that the rights extended to the most vulnerable. Just like in the preamble of the Contributor Covenant, they are calling out specific protected classes as a priority for their community. The Hippocratic Code License 3 introduced an interesting provision on the enforcement side, which a lawyer would call a "supply chain impacted provision." This provision essentially states that if Facebook uses the code licensed under the Hippocratic License, and the use of that code results in human rights violations against a specific population, that population has the right to sue Facebook for damages. This inverts the power, giving the impacted people the opportunity to pursue legal action, which corporations would have to take seriously. As a maintainer of a JavaScript library, they would not sue Facebook for infringement of someone else's human rights. It wouldn't work. But if the people upon whom facial recognition software is used and abused choose to file a class-action lawsuit, that's something very different.
Licenses are the intersection of open source communities and corporations or institutions. Institutions can't be held to ethical standards that depend on their goodwill. Institutions have a different set of incentives than people do, and therefore the norms that we are establishing have to be incentivized differently. That means relying on legal regulation.
*The question of incentives has been running throughout the conversation. I hear that also in what you were describing about the signaling power of the Contributor Covenant. How much of that kind of thinking went into the design process explicitly? Or is it more a matter of observation after the fact?*
{{< i >}}
The question of incentives has been running throughout the conversation. I hear that also in what you were describing about the signaling power of the Contributor Covenant. How much of that kind of thinking went into the design process explicitly? Or is it more a matter of observation after the fact?
{{< /i >}}
II would say it was after the fact. I started writing Contributor Covenant in a moment of inspiration and a desire for righteous retribution. I was riled up by the state of the world and wanted to make a big impact and a big change in the way things were done.
But things have changed since then, and I've become more deliberative. Now that we have an org, we're very deliberative, doing more strategic thinking and less reactionary stuff. And that's just the natural evolution of a project like this. We're still staying true to our roots, of course, and to the values that inspired the original version. But the technosocial context has changed, and we have to adapt with it. What worked at the beginning won't work anymore. And that reflects our changing way of maintaining it. I hope that answers your question.
*Yes, thank you. Finally, I'm curious about earlier legacies. You've talked in the context of the Contributor Covenant about earlier codes of conduct and with the licenses about the way open source in general is built on that foundation of licensing. But are there other kinds of precedents that you think of, that informed your motivation and your designs?*
{{< i >}}
Yes, thank you. Finally, I'm curious about earlier legacies. You've talked in the context of the Contributor Covenant about earlier codes of conduct and with the licenses about the way open source in general is built on that foundation of licensing. But are there other kinds of precedents that you think of, that informed your motivation and your designs?
{{< /i >}}
When I look back on it, I wouldn't say that there were specific things that directly inspired the language of Contributor Covenant 1.0 beyond fluency and the concepts. But in retrospect, I guess the circles I was moving in had more explicit norms.
As a Gen Xer, I think we take a lot for granted. But through my interactions with later generations of technologists, I've found that people are more explicit about expressing boundaries verbally, introducing themselves, acknowledging their disabilities, and other norms that didn't happen when I was coming up. So the fact that these are norms with newer generations of technologists is inspiring and definitely influences what we're doing. It reminds us why we're trying to make the invisible visible and be open to different ways of expression and interaction as the world moves on. We have to adapt, you know?
*Is there anything else you want to bring up before we wrap up?*
{{< i >}}
Is there anything else you want to bring up before we wrap up?
{{< /i >}}
Some protocols are very long-lived, and my favorite example is the MIDI protocol. It was established in 1983 and has only gone through one major revision, which was backwards compatible.
I think the most effective and long-lived protocols make the fewest assumptions, are the most explicit, and are just as simple as the complexity of their domain will allow them to be. And I think we can take inspiration from those aspects of successful technical protocols and apply them to social, interpersonal protocols as well.
*Is there a danger, though, in that narrowness of a tightly defined protocol, in the context of social protocols?*
{{< i >}}
Is there a danger, though, in that narrowness of a tightly defined protocol, in the context of social protocols?
{{< /i >}}
You just want to make sure that the protocol is capable of expressing the things that need to be expressed. Simplicity is not necessarily the same as filtering or losing data or losing resolution, or anything like that. The messages can be very rich, meaning the activities can be very rich. What's passing through the protocol can be very rich, even with a simple protocol. Telephones operate on that principle. Telephones don't care what you say, but they're gonna get that voice communication across the wire right.
*Yeah, or the modem communication across the wire. You can do all sorts of things.*
{{< i >}}
Yeah, or the modem communication across the wire. You can do all sorts of things.
{{< /i >}}
And that's the beauty of protocols: they're fundamental and they become infrastructure---if they're effective, they become infrastructure. Not to say that we don't want to pay attention to them. They require maintenance. All infrastructure requires maintenance. But you're successful when it becomes when it becomes a normal way of doing things.