How does excluding the coworker help you? It certainly won't make them suddenly realize that you do deserve human rights after all. Why not make the best of the situation and create something of value to both of you?
Reform is not the intent, although it is the criteria for re-inclusion. The intent is to create a community that respects all of it's members rights. Excluding the co-worker helps me because I don't have to worry about whether the fruits of my labor are going to a effort that will cause me harm either in the present or in the future.
Social interaction and software development go hand in hand - The idea that someone with a fundamentally hostile viewpoint is needed to create something of value for both of us is not applicable. There are many software developers who don't wish harm upon others, and they will be more willing to work with you.
The best outcome in this situation is not the product that gets created. The best outcome is an environment in which members of the community don't feel like their basic rights are in question.
How does excluding that person ensure that they won't use the fruits of your labor for an effort that will you cause you harm? If you think that was the ultimate reason for them to work on the same thing as you, they can still make use of your work indirectly. If you think that they are not just a one-dimensional character, and just happen to enjoy some of the same things as you; then excluding them deprives them of that enjoyment, but it doesn't really help you, does it?
Your second paragraph seems to assume a fixed number of developers working on a project, and in that case there is no downside in replacing them. But what about an open-source project where they keep sending PRs for bug fixes and features that all have technical merit? Would you ignore that and redo the work? If I'm working on the same project, should I avoid merging their work to accommodate you?
While I agree that a community where everyone can feel comfortable is something to strive for, I think that does not require excluding some members for the views they hold. It is enough when they don't push those views onto the others.
You're right - you can't ensure that they won't use your work for bad, that's true. You can try to lessen the impact by making sure they're not part of your organization or community. Excluding them does help me, because I don't have to put up with someone who is actively trying to make my life worse.
I think if you manage an open source project you should feel comfortable taking a stand on contributors who have/advocate for actively discriminatory positions. Just because you organize a community project that may be used by people you fundamentally disagree with doesn't mean you have to check your sense of morality at the door.
If someone submitted a PR to my project who held openly racist positions, I would deny the PR. No amount of genius or technical merit makes up for that.
One could come up with a hypothetical of an open source project that is important enough to require any help it can get, and also somehow obscure enough that only a handful of developers are working on it. Nonetheless, I don't really think most open source projects (or even for-profit projects) fall into that category. At the point where work becomes so important that you need to compromise other parts of your character in order to finish it there are probably bigger things to worry about.
> If someone submitted a PR to my project who held openly racist positions, I would deny the PR. No amount of genius or technical merit makes up for that.
In contrast, I, and many other people, would evaluate it on its technical merits and merge it if it was good. It's just code; it inherits no sin from its writer.
But you discriminate against code--not even a person--based on your personal dislike of its writer. Isn't that bigoted?
Not at all - I don't read Orson Scott Card anymore, because he's a bigot. That is a decision that doesn't touch upon whether or not his books are any good. When it comes to code, there's no piece of code or software product that can't be replaced by someone who behaves morally.
Ultimately, you can't, and shouldn't decouple someone's work from the person themselves. We ought to feel ashamed when we support someone who's beliefs and actions are reprehensible.
> Ultimately, you can't, and shouldn't decouple someone's work from the person themselves.
This is a bizarre and grossly impractical idea. Do you interrogate everyone who sells you anything? Who prepares and serves your food at a restaurant? Who delivers your packages? If you don't, you are being a hypocrite. And if we all did that, society and economy would grind to a halt. You are truly an extremist and a totalitarian.
> We ought to feel ashamed when we support someone who's beliefs and actions are reprehensible.
By that logic, I would feel ashamed to support you. Nevertheless, I would accept your code if it were well-written, because I am tolerant of views differing from my own.
What is your basis for "rights"? The idea that there is a right to having a gay marriage recognized as a marriage by the state is very novel. How did that novel determination happen exactly? It can't be the will of the people because then rights are not recognized so much as commanded or agreed upon (in which case, it's possible that the will of the people can change and poof go your supposed rights).
P.S. My impression is that you believe that opposition to gay marriage is bigoted, that it's not possible to have intelligent and powerful arguments against the idea.
Social interaction and software development go hand in hand - The idea that someone with a fundamentally hostile viewpoint is needed to create something of value for both of us is not applicable. There are many software developers who don't wish harm upon others, and they will be more willing to work with you.
The best outcome in this situation is not the product that gets created. The best outcome is an environment in which members of the community don't feel like their basic rights are in question.