An email to the LLVM development mailing list spawned a large online discussion in multiple forums, which included a lot of confusion and misunderstanding. This page aims to summarize the facts of the situation in one place, with the hope of dispelling the biggest misunderstandings.
I, Chris Lattner, include a personal note at the end, which is strictly my opinion.
On May 2, 2018, Rafael Avila de Espindola sent an email to the LLVM development mailing list entitled "I am leaving llvm". The two primary reasons cited for leaving are the LLVM community adopting a code of conduct and it working with the Outreachy internship program.
LLVM is an open source project founded in 2003 as a research project at the University of Illinois.
LLVM includes multiple subprojects, including compiler optimization and code generation technology, the Clang C/C++ compiler, the LLD linker, runtime components, and other low level system technology.
LLVM is widely used by many other projects including compilers for many languages (including Rust, Swift, Java, D, Go, OpenCL, CUDA, and countless others) and is used to accelerate many other applications, including graphics and database technology. It is widely deployed in commercial settings.
LLVM has many contributors, including almost 1000 contributors to the llvm repository and almost 800 contributors to the clang repository. Many people contribute to both, and there are many other repositories.
The community is deeply technical and prides itself on a positive and collaborative feel where everyone is treated equally, and technical discussions proceed based on the merits of the work.
The community discussed a formal code of conduct for years, consensus was reached through community process, and a draft landed in June 2016. Though a strong consensus was reached and most people support the code of conduct, there was not universal approval. This is expected with such a large community of contributors.
While the community has experienced some incidents of poor behavior, this was responded to directly without escalation. This was true even before discussing a code of conduct and continues to be the case today.
The LLVM Foundation is a 501(c)(3) nonprofit whose mission is to "support education and advancement of the field of compilers and tools through educational events, grants and scholarships, and increasing diversity with the field of compilers, tools, and the LLVM project."
The foundation has a number of diversity initiatives, including goals to increase representation of Women in Compilers & Tools, which a recent blog post summarizes.
The foundation has several other important programs, including the general educational program (which drive the LLVM Developer Meetings) and sponsorship of students to get them more involved in the field of compilers.
The foundation works with third party programs that aim to increase participation in technology in general - e.g. Google Summer of Code, and Outreachy.
Outreachy has not sponsored anyone for LLVM at this time.
Rafael has been a prominent contributor to LLVM since 2006.
Among his many contributions, Rafael started an early version of the ARM code generator and made major contributions to the LLD linker project.
Rafael made his position about the code of conduct very clear in the discussions over the last couple of years.
Tanya has been an LLVM contributor since May 2003.
Tanya has an bachelor's degree in Electrical Engineering.
Tanya has a master's degree in Computer Science from the University of Illinois at Urbana Champaign, with a focus on compiler optimization. Her master's thesis describes low level compiler optimization techniques. She implemented this work in the context of LLVM and contributed in many other ways, e.g. to the early SPARC port.
After graduate school, Tanya worked on several commercial compiler projects at HP and Apple, including the Apple OpenCL implementation based on Clang and LLVM.
Tanya left Apple to form the nonprofit LLVM Foundation. This move was not financially motivated - she took a significant pay cut in the process.
Tanya is now the President of the LLVM Foundation and drives the majority of its programs.
Chris started the LLVM project in December of 2000.
Chris is a white cis male.
This section is an opinion piece, so I'm writing this in the first person. I speak for myself and do not represent anyone else in this opinion statement.
My foremost concern for the LLVM community is for it to have stability, long term governance, and guiding principles. When Tanya proposed starting the LLVM Foundation, I strongly supported her effort because it was the best path forward to make sure that LLVM's success would continue if anything ever happened to me or other leads in the community. This is one reason why the Foundation looks to standardize and codify a number of informal conventions.
When it comes to code of conduct, the LLVM community has long prided itself on being engineering driven, civil and respectful. This is particularly important for a project where many commercial competitors are collaborating on a common code base: it is essential for people to work together engineer-to-engineer, and leave politics, preconceptions, and unrelated problems out of the community. At the same time, electronic communication enables unanticipated miscommunications and other problems, and while the LLVM community has never had a problem with "bad actors" in a community, they do exist. My opinion is that the right time to introduce an LLVM Code of Conduct is when everything is fine - to set a written down set of expectations, with the hope that it will never be necessary.
When it comes to discrimination and minorities, I'll point out that I am a mid-career white male, who is married to a successful woman in tech. The challenges we have each faced over our careers have stark contrasts, and I have seen situations through both sets of eyes. I do not believe I have ever directly benefited from or suffered from discriminatory behavior, but I can say with certainty that Tanya has suffered from it, and this means I have indirectly benefited from it. I believe that this is morally reprehensible.
The challenges we in technology face with under-representation of minorities is complicated, and I am not an expert on these issues. I (and many others in the LLVM community) believe that our community will be stronger if we can improve diversity, and believe that outreach to minorities is important. At the same time, we continue to grow the community through many other programs - our involvement with Outreachy is a tiny sliver of what we do, and (as was previously mentioned) has not come to anything yet.
When it comes to Rafael, I have worked with Rafael over the internet for many years and have met him several times. Rafael is a very capable engineer who has contributed to LLVM in many ways, and I respect his work. At the same time, Rafael and the LLVM Community have divergent philosophies and neither is willing to compromise on those positions. As such, I think that Rafael's decision (which reflects significant personal sacrifice for him) is a strong display of personal conviction, and while I do not agree with the basis of this decision, I can recognize and respect his determination to follow his own beliefs. I will truly miss working with Rafael in the future, but parting ways is the best thing for both sides.
In closing, this situation strikes very close to home and is frustrating to me in multiple ways. Many people on the internet want to chime in on a complex situation without knowing any of the backstory, and without understanding what is going on. Instead, they look for confirmation of their own beliefs and to demonize people who disagree with them. This is a sad reflection of the state of social discourse in the world.