I am leaving llvm

Summary:

I am leaving llvm effectively immediately. I am sorry for any
inconvenience this may cause.

Practicalities:

I can unsubscribe myself from the email lists and I disabled email
notification on bugzilla and phabricator. Could someone please disable
my account on phabricator and delete my svn access? Thanks.

The long story:

I first became aware of llvm during a compiler course at university. I
wanted to write a toy scheme frontend to a real compiler. To my shame
I missed that llvm had a mem2reg pass and selected gcc to avoid having
to compute ssa form myself.

After contributing a few patches to gcc it was clear that the frontend
interface needed some cleanup. At the time llvm was being considered
as a potential new gcc architecture and the idea of a well defined IR
with a textual representation was a revolution.

On my first job (indt) we were using arm cpus and I was able to sell
the idea of starting an llvm backend for arm. My first commit was on
May 14, 2006. I am incredibly grateful to both indt and the llvm
developers for trusting and helping such an inexperienced and unknown
developer with such a large task.

It is only in May 2007 in the dev meeting that I got to meet the other
developers in person. It was an incredibly fun event and people were
as friendly in person as on the list.

In the next few years I was working at google. First as an sre and
then a compiler developer on gcc. During that time I kept llvm as my
20% project as much as possible. Working on it was always a refreshing
experience. It was far easier to change and far less political than gcc
at the time.

My opportunity to be back full time on llvm came with portable native
client (pnacl). They needed to be able to emit elf objects from llvm ir
and so I went to work on elf support for mc.

Unfortunately another job change (mozilla) made llvm a side project
again after that. I still managed to contribute to llvm/clang as I
helped mozilla transition away from gcc 4.2 on OS X.

It is only about 5 years ago that I started working on llvm full time
again. The big item this time was elf support in lld. I was really
excited when Rui posted a new design for a coff linker and did my best
to find a corresponding design for elf.

Unfortunately the last few years haven't been the same. On the
technical side llvm now feels far bigger and slower to change. There
are many incomplete transitions. That, by itself, would not be
sufficient reason to leave. llvm still seems better than the
competition and lld itself is still awesome.

The reason for me leaving are the changes in the community. The
current license change discussions unfortunately bring to memory the
fsf politics when I was working on gcc. That would still not be
sufficient reason to leave. As with the code, llvm will still have the
best license and if the only community change was the handling of the
license change I would probably keep going.

The community change I cannot take is how the social injustice
movement has permeated it. When I joined llvm no one asked or cared
about my religion or political view. We all seemed committed to just
writing a good compiler framework.

Somewhat recently a code of conduct was adopted. It says that the
community tries to welcome people of all "political belief". Except
those whose political belief mean that they don't agree with the code
of conduct. Since agreement is required to take part in the
conferences, I am no longer able to attend.

The last drop was llvm associating itself with an organization that
openly discriminates based on sex and ancestry (1,2). This goes
directly against my ethical views and I think I must leave the project
to not be associated with this.

So long, and thanks for all the bugs,
Rafael

[1] http://lists.llvm.org/pipermail/llvm-dev/2018-February/121161.html
[2] https://www.outreachy.org/apply/eligibility/

Hi Rafael,

I am sorry to hear that you are leaving, and I wanted to thank you for your excellent technical contributions to LLVM over the years. I hope I will be able to see you again the next time I am in Toronto.

All the best,
Peter

You know, to this day I have never been able to bring myself to inform employers that I’m gay. The humiliation is just too much. It used to be that people hid homosexuality so they wouldn’t get fired. Why should I have to disclose personal information just to satisfy some dumb diversity bureaucrat?

For most of my 20s I was told I was a worthless over-privileged white male who deserved the discrimination (as in, total exclusion from paid employment) I faced in the labor market. Often from people who had high incomes. People don’t know what it’s like to live in that sort of fear, to wonder if next year you’ll be living on the street or as a prostitute, just for being born to the wrong ethnic group.

There are 200 million “white” people in America and, what, twice that number in Europe? How many “white” ethnic groups are there? I mean, in some places Chinese, Korean and Japanese are now “white” ethnicities. What kind of idiot thinks hundreds of millions of highly diverse people (ethnically, religiously, culturally) can all be unfairly privileged at once? There’s something disgustingly racist about the idea that white people are so awesome as to never have conflicts with each other.

Summary:

I am leaving llvm effectively immediately. I am sorry for any
inconvenience this may cause.

Practicalities:

I can unsubscribe myself from the email lists and I disabled email
notification on bugzilla and phabricator. Could someone please disable
my account on phabricator and delete my svn access? Thanks.

The long story:

I first became aware of llvm during a compiler course at university. I
wanted to write a toy scheme frontend to a real compiler. To my shame
I missed that llvm had a mem2reg pass and selected gcc to avoid having
to compute ssa form myself.

After contributing a few patches to gcc it was clear that the frontend
interface needed some cleanup. At the time llvm was being considered
as a potential new gcc architecture and the idea of a well defined IR
with a textual representation was a revolution.

On my first job (indt) we were using arm cpus and I was able to sell
the idea of starting an llvm backend for arm. My first commit was on
May 14, 2006. I am incredibly grateful to both indt and the llvm
developers for trusting and helping such an inexperienced and unknown
developer with such a large task.

It is only in May 2007 in the dev meeting that I got to meet the other
developers in person. It was an incredibly fun event and people were
as friendly in person as on the list.

In the next few years I was working at google. First as an sre and
then a compiler developer on gcc. During that time I kept llvm as my
20% project as much as possible. Working on it was always a refreshing
experience. It was far easier to change and far less political than gcc
at the time.

My opportunity to be back full time on llvm came with portable native
client (pnacl). They needed to be able to emit elf objects from llvm ir
and so I went to work on elf support for mc.

Unfortunately another job change (mozilla) made llvm a side project
again after that. I still managed to contribute to llvm/clang as I
helped mozilla transition away from gcc 4.2 on OS X.

It is only about 5 years ago that I started working on llvm full time
again. The big item this time was elf support in lld. I was really
excited when Rui posted a new design for a coff linker and did my best
to find a corresponding design for elf.

Unfortunately the last few years haven't been the same. On the
technical side llvm now feels far bigger and slower to change. There
are many incomplete transitions. That, by itself, would not be
sufficient reason to leave. llvm still seems better than the
competition and lld itself is still awesome.

The reason for me leaving are the changes in the community. The
current license change discussions unfortunately bring to memory the
fsf politics when I was working on gcc. That would still not be
sufficient reason to leave. As with the code, llvm will still have the
best license and if the only community change was the handling of the
license change I would probably keep going.

The community change I cannot take is how the social injustice
movement has permeated it. When I joined llvm no one asked or cared
about my religion or political view. We all seemed committed to just
writing a good compiler framework.

Somewhat recently a code of conduct was adopted. It says that the
community tries to welcome people of all "political belief". Except
those whose political belief mean that they don't agree with the code
of conduct. Since agreement is required to take part in the
conferences, I am no longer able to attend.

I feel exactly the same way about the CoC. The whole CoC idea is just a
bullshit that brings discord in open source projects.

I haven't seen a project that adopted a CoC and had no members leaved after
that.

Hi Joe,

You know,

Actually, I don't, and this list is not a place to talk about it.

If you have a technical contribution to the project, no matter who
you are or where you come from, I'm happy to see you post it; and
so is everyone else on the list.

Thanks,
--paulr

This list is for technical compiler and tools discussions, lets not turn a thread about Rafael’s personal decision into a rant about CoC’s which we have been through before.

If you’d like to have a productive discussion about CoC topics, then please start a new thread and use a respectful and productive tone.

Thanks,

-Chris

I’m very sad to hear that you are leaving LLVM. I hope we cross paths in the future. I have learned so much from you, especially your legendary testcase reduction skills and your ability to incrementally simplify and improve a codebase.

The list of fond memories from our open-source interaction and our time as coworkers at PlayStation is far too long for this email to contain.

– Sean Silva

Rafael,

I’m extremely sad to hear that you decided to leave the project. If you already set your mind, I want to take this opportunity to say thank you to you. You are the first person to advocate the current lld design and encourage me to continue developing it. I don’t think I can express how I felt about it at the time in this email. You are also one of the best programmers I’ve ever worked with. We’ve worked together in the past few years to make a great product, and we have succeeded in making lld something that people really want to use. Today, we have a lot of companies using our linker. Lots of big name open-source projects have migrated/are migrating to lld. That wouldn’t have happened without you. You are my super-star programmer. I’ll miss you.

Rui

Summary:

I am leaving llvm effectively immediately. I am sorry for any
inconvenience this may cause.

Hi Rafael,

Against better judgement, and for what it's worth, here's my view.

We have had heated technical discussions in the past and now that you
leave, I realised how much I cherished them.

I have also distanced myself from the project for similar reasons, but
I have been convinced by other parties that LLVM is bigger than its
individual contributions (both in code and behaviour), so I will
continue here, trying to make it a better place, for I have good
friends here and I also cherish them.

Unfortunately the last few years haven't been the same. On the
technical side llvm now feels far bigger and slower to change. There
are many incomplete transitions. That, by itself, would not be
sufficient reason to leave. llvm still seems better than the
competition and lld itself is still awesome.

True to all big projects and we both knew this would happen. :slight_smile:

The community change I cannot take is how the social injustice
movement has permeated it. When I joined llvm no one asked or cared
about my religion or political view. We all seemed committed to just
writing a good compiler framework.

You'll see that this is not an LLVM trend, but a world wide trend and
that's not a bad thing.

It is, and I wholeheartedly agree, an exaggerated and poisonous trend,
but it's a response to an even more poisonous history and one that
needed a change.

History is not stable, nor it's a steady progression. History happens
in hiccups, step-function-like sudden increases in pressure, which are
then followed by attenuated periodic function. This is one of them.

More importantly, history tramples on people *every* time. Just
different events trample on different people. There's no way to avoid
this.

Somewhat recently a code of conduct was adopted. It says that the
community tries to welcome people of all "political belief". Except
those whose political belief mean that they don't agree with the code
of conduct. Since agreement is required to take part in the
conferences, I am no longer able to attend.

I defended your point of view in the code of conduct, but I have come
to accept what it is, not what it says. The code is just a statement
and have not changed how we behave (I don't think you would ever be
kicked out of a conference).

What I could not change and still fear is the report policy, which
leaves no room for the accused to defend itself, or even know it's
been accused. But that's not a discussion for this thread.

However, the main point here is why we have it and who is doing it. I
know Chandler and Tanya for a while and, while I do not speak for
them, I trust them to *want* to do the right thing (tm).

If they miss the mark, or make mistakes, I'd first point out to them,
not assume ill intent. This has been my personal experience and I have
no reason to change behaviour.

But the code of conduct is a defence against two evils: the rare bigot
and the rare SJW. By having the code, we can more easily curb bigots
but also appease SJW to not poison our community.

For what it's worth, so far, I have found the LLVM community fair and
just on how it treats its citizens, as I have myself fell foul from
ill behaviour of other members and that has been solved decently and
properly.

The last drop was llvm associating itself with an organization that
openly discriminates based on sex and ancestry (1,2). This goes
directly against my ethical views and I think I must leave the project
to not be associated with this.

I agree with you that Outreachy is discriminatory and LLVM does not
need it, but again, this is a different discussion for a different
list.

I believe efforts like GSOC are better fit for our project, for AFAIK
they are inclusive to all, and technically sound, but I also know they
are scarce.

In the past, John Maddog Hall tried to create a similar effort for
hacking Arm boards, sponsored by big companies, especially tailored to
developing countries. It did not work.

It's really hard to find places that will fund developers, especially
young ones and the ones that have no other opportunity. But we have to
be careful with whom sponsors our devs and why.

However, again, the point here is: As far as I know Tanya, she had
only have good intentions towards the LLVM community.

I truly believe the "fix" for this problem is: let's talk. Not here,
this is the dev list, but let's create a place where we can discuss
these things.

On a personal note...

It really saddens me that you would leave a technical project because
of social reasons. I have been battling social injustice my whole life
(towards myself and others) because of my utter incompetence in
understanding the social code (Autism), and this is one of the days
that we all lose. I know this hasn't been an easy decision, and this
is what makes it so unjust. Social pressure is real, and has real side
effects.

Let's discuss this off-list, I really think we can fix this.

cheers,
--renato

However, the main point here is why we have it and who is doing it. I
know Chandler and Tanya for a while and, while I do not speak for
them, I trust them to *want* to do the right thing (tm).

If they miss the mark, or make mistakes, I'd first point out to them,
not assume ill intent. This has been my personal experience and I have
no reason to change behaviour.

I feel compelled to throw in my two cents here.

I agree 100% that the Foundation is full of people with good intentions.
I have been on a board like that, and it is extremely seductive; the
downside is, having such good intentions you see no value in establishing
good practices and processes. There is a proverbial road paved with all
good intentions.

[This is where Chris will step in and say this isn't the right forum
for discussing how the Foundation is set up or behaves, and he is right.
So I will stop here.]

OOTC: I deeply respect Rafael for his technical contributions, both in
open-source and as a fellow employee. Having myself left a prior
company over an ethical issue, I fully support his decision.
--paulr

I agree 100% that the Foundation is full of people with good intentions.
I have been on a board like that, and it is extremely seductive; the
downside is, having such good intentions you see no value in establishing
good practices and processes. There is a proverbial road paved with all
good intentions.

Hear, hear. I think the need for such discussion more openly is rising.

I'd be happy with a feedback driven input into the foundation (on
cases like Outreachy), but that process needs to be defined and it
needs to be open.

[This is where Chris will step in and say this isn't the right forum
for discussing how the Foundation is set up or behaves, and he is right.
So I will stop here.]

We should't dwell on Rafael's matter any more, that is getting too personal IMO.

But we should discuss how we can influence the foundation on cases
where they miss the mark and how we can guarantee that they end up
representing our community for what it is (including people like
Rafael).

In the past, people have strongly suggested the dev list *IS* the
right place for community discussions (code of conduct, license,
github move) as this is "where everyone is at".

If this is not the place, then where is it?

I'd be happy with a feedback driven input into the foundation (on
cases like Outreachy), but that process needs to be defined and it
needs to be open.

But we should discuss how we can influence the foundation on cases
where they miss the mark and how we can guarantee that they end up
representing our community for what it is (including people like
Rafael).

In the past, people have strongly suggested the dev list *IS* the
right place for community discussions (code of conduct, license,
github move) as this is "where everyone is at".

If this is not the place, then where is it?

I’d suggest... the llvm foundation mailing list?

-Chris

I'd be happy with a feedback driven input into the foundation (on
cases like Outreachy), but that process needs to be defined and it
needs to be open.

But we should discuss how we can influence the foundation on cases
where they miss the mark and how we can guarantee that they end up
representing our community for what it is (including people like
Rafael).

In the past, people have strongly suggested the dev list *IS* the
right place for community discussions (code of conduct, license,
github move) as this is "where everyone is at".

If this is not the place, then where is it?

I’d suggest... the llvm foundation mailing list?

It's not that simple, because the foundation is not the community. *Especially* people involved in the LLVM foundation would do well to remember that.

Of the potential discussion topics you quoted, quite a lot of them are simply not foundation topics. Let's go through them one by one:

The github move and license topics *clearly* belong on llvm-dev. I mean, it's awesome for interested parties to go off somewhere else for working out proposals etc. on those, but that always needs to be done with the understanding that resulting proposals may fall flat in the actual community.

The code of conduct discussions are IMHO mostly annoying bikeshedding that brings out the worst in people, so I'd personally be happy if they happened on the foundation mailing list so I don't see them, even if they technically don't belong there :wink:

The question of how to ensure that the foundation ends up representing the community is a particularly interesting one because representing the community is not a goal of the foundation, and it probably shouldn't be.

Cheers,
Nicolai

The code of conduct discussions are IMHO mostly annoying bikeshedding that
brings out the worst in people, so I'd personally be happy if they happened
on the foundation mailing list so I don't see them, even if they technically
don't belong there :wink:

The code affects us all, on digital and physical form, as it's
supposed to be applied to the whole community.

There was an initial discussion off-list, but the final round (which
was long and painful) had to happen on the dev list (and it did).

The question of how to ensure that the foundation ends up representing the
community is a particularly interesting one because representing the
community is not a goal of the foundation, and it probably shouldn't be.

Perhaps I used the wrong word here. I did not mean representation in
the political sense, which you're right, there was no vote.

What I means was indirect representation. If an Outreachy developer
ends up sponsored to push patches in LLVM as a request from the
foundation, then, well, the foundation is changing how the community
represents itself.

But none of that was my point.

The foundation list is empty and discussions there don't catch wind of
all the developers (in the end, our entire community), and can form
the wrong consensus via echo chamber. In all mentioned discussions,
foundation board members said so, themselves.

Practicalities can be solved there, but unless there is a large enough
volume of evidence (built by discussing on the dev list), the
foundation would be smart not to take anyone's word alone on that
list, over serious matters.

Over the past few years, I have learnt and embraced the motto of my
good friend Ryan Arnold (glibc guy): trust, but verify.

I trust the foundation to wish the best over the LLVM project and to
do what it can to foster it and make it more professional, inclusive,
etc.

But without a verification process, the foundation can be victim of
its own shortsightedness (we all are), and when that can affect
hundreds of developers over dozens of different cultures, it can
become a serious matter.

Sending an email to the foundation list is *not* enough.

There has to be a process, where the community can raise concerns, and
there will be a trail to make sure the development and decisions still
reflect the community.

I'm sure the foundation board will echo this sentiment, as they don't
want to change our ways, they just want to work on the background so
that we can focus on the actual code.

But for that to happen, we need transparency and a verification process.

The thread topic is morphing (partly my fault) and probably should
become a new thread.
--paulr

Hi,

Has something changed?

"LLVM in Outreachy: Unfortunately, either the community coordinator or
the Outreachy organizers have determined that the community will not
participate in this round of Outreachy internships."

So, it seams that LLVM do not participate in Outreachy.

Last email from Tanya was looking for folks to participate, there was
no update that it wouldn't happen. Maybe this is a new development?

Anyway, I think if the foundation considers this again, there should
be a public consultation on the dev list.

The code of conduct discussions are IMHO mostly annoying bikeshedding that
brings out the worst in people, so I'd personally be happy if they happened
on the foundation mailing list so I don't see them, even if they technically
don't belong there :wink:

The code affects us all, on digital and physical form, as it's
supposed to be applied to the whole community.

There was an initial discussion off-list, but the final round (which
was long and painful) had to happen on the dev list (and it did).

The question of how to ensure that the foundation ends up representing the
community is a particularly interesting one because representing the
community is not a goal of the foundation, and it probably shouldn't be.

Perhaps I used the wrong word here. I did not mean representation in
the political sense, which you're right, there was no vote.

What I means was indirect representation. If an Outreachy developer
ends up sponsored to push patches in LLVM as a request from the
foundation, then, well, the foundation is changing how the community
represents itself.

Any intern sponsored by any channel goes through all the same process of getting patches accepted to LLVM. There is nothing special here. Please do not imply that any special treatment is being given because of the program.

-Tanya

Has something changed?
So, it seams that LLVM do not participate in Outreachy.

Last email from Tanya was looking for folks to participate, there was
no update that it wouldn't happen. Maybe this is a new development?

The way it works is, someone sponsors the money and then you still need to have mentors and projects available. Given the timing it conflicted with Google Summer of Code and we did not get any mentors volunteering. The next round will happen this fall.

Anyway, I think if the foundation considers this again, there should
be a public consultation on the dev list.

If you want to have a discussion about my decision to pursue working with Outreachy, I am happy to discuss this on the llvm-foundation mailing list.

-Tanya

I generally agree, but a couple of specific clarifications below:

The code of conduct discussions are IMHO mostly annoying bikeshedding that
brings out the worst in people, so I'd personally be happy if they happened
on the foundation mailing list so I don't see them, even if they technically
don't belong there :wink:

The code affects us all, on digital and physical form, as it's
supposed to be applied to the whole community.

There was an initial discussion off-list, but the final round (which
was long and painful) had to happen on the dev list (and it did).

Right. The CoC has already been extensively discussed. Though it didn’t receive unanimous approval, we achieved consensus, which is the best we can hope for with such a delightfully diverse community.

The question of how to ensure that the foundation ends up representing the
community is a particularly interesting one because representing the
community is not a goal of the foundation, and it probably shouldn't be.

The foundation list is empty and discussions there don't catch wind of
all the developers (in the end, our entire community), and can form
the wrong consensus via echo chamber. In all mentioned discussions,
foundation board members said so, themselves.

I’m not sure what you’re saying here. There isn’t a lot of traffic on that list, but that doesn’t mean there aren’t many members, and it doesn’t make it the wrong forum for specific discussions and questions about the foundation and its priorities. The fact that there aren’t more questions on that list is a bug, not a feature.

You seem to have a lot of questions and concerns about the foundation, but haven’t voiced them on that list. Why not? I’d rather have you get them out in the open (in the appropriate forum) than have them lurking below the surface, feeling unanswered, and leaving you dissatisfied. There is no solution to this aside from openness and transparency, and we have a venue that welcomes that for foundation discussions. Anyone who is interested in “what the foundation focuses on” should sign up for that list!

But without a verification process, the foundation can be victim of
its own shortsightedness (we all are), and when that can affect
hundreds of developers over dozens of different cultures, it can
become a serious matter.

You are implying this is not the case. Please start a thread on the foundation list explaining what you’d like to see. Understand that the Foundation is legally obligated to transparency on many levels by its IRS “for the public good” status. We are serious about fulfilling those obligations.

There has to be a process, where the community can raise concerns, and
there will be a trail to make sure the development and decisions still
reflect the community.

I'm sure the foundation board will echo this sentiment, as they don't
want to change our ways, they just want to work on the background so
that we can focus on the actual code.

But for that to happen, we need transparency and a verification process.

It might surprise you, but I believe in openness and transparency and the foundation has nothing to hide. If you’d like to have a conversation, I welcome you to start it, just use the right forum. llvm-dev is about compiler engineering, it is not about foundation policies. Anyone on this list can join the foundation list (and many have!) so please stop acting like there is some artificial divide and just do the right thing to keep the discussion on topic for the purpose of the lists we already have.

-Chris