Continuing on at a break neck speed in prep for the Rust All Hands I'm gonna finally tackle one of the bigger issues coming up: Foundations. Consistently with money and Rust I've heard the call for a foundation to deal with it. Now to be frank I don't have a fully fleshed out solution here just yet to propose as an alternative to a foundation, but sometimes I think it's easier to talk about why not, rather than what we should do. In much the same way it's easier to say you know what you don't want in a job but not necessarily what you do want in one. Just a reminder these are not endorsed yet and are merely ideas and musings. With that let's begin tackling the issue of foundations and why it's gonna cause us a whole lot of issues.
What country do you make it in?
Say we make a foundation and for arguments sake let's say it's in the USA what does this mean? As programmers it's easy to forget that borders exist (unfortunately) due to the international communities we often interact with. In a single day alone I could interact with people on every continent humans live on. However, that all goes out the window when we start coming face to face with legal concerns like tax laws, payments, and visas. With our hypothetical foundation could we pay a Rust community member who lives in Iran given the USA's trade embargo and it's terrible relationship with the country? I mean maybe, but considering Trump's reinstatement of the embargo over nuclear sanctions it's likely not or really restricted. It's not just the USA either, depending on where we put the foundation as a legal entity we start having to deal with international law with paying people, due to the nature of our community. To put it more plainly choosing one country we form a foundation in restricts who gets access to the money it has and thus makes us have a preference for some contributors and not others. This is not open as a solution, but closed.
Everyone's favorite thing right? You now come to the next fun legal thing you have to deal with as a foundation. Even if you're say a 501C3 non-profit in the USA you still have to file taxes which takes time, money (gotta pay someone to file them), and paperwork. It's extra overhead for the project and cuts into the money used in the project (even if it might only be administration costs).
"What?", you might be asking. To that I say, "Where there's money there's politics." A foundation is an entity used to take in money and disperse it to those performing work in service of the community. Except, there's countless examples of people getting pissed about that not going the way they want it too. Take a look at the drama regarding Ruby Together last year as an example. It was an absolute divisive mess in the Ruby community. I have no opinion on the matter as I'm not part of it, but it's something worth learning from as we go forward in Rust. Politics will come up as controlling money is controlling the power. "But Rust is a caring community we'll be different!" I doubt it. Even if we care, there will be people pissed at the foundation for not funding them but someone else. There's always the possibility of "you only got paid cause you know the members on the foundation" cropping up. This is one of my main reasons of opposing it. Centrally managed funds leads to divisive communities and Rust is not one of those places I want to see that happen in. It sows distrust not cooperation. It's just not something I want to see happen and this for me is more than enough reason to oppose it beyond the legal ramifications. The social ones would be even more damaging.
Let's say we start taking money in from companies into the foundation. Usually there's strings attached and it's usually a board seat. Take a look at the Node.js foundation. It's predominantly companies on that board with one or two representing the entire community. That's nuts. A few corporations throw in a ton of money and now they get to determine the fate of a project at the detriment of it's users and other people. Do we really want that happening with Rust? Can we trust that a company will act in the best interest of everyone? I'm very here for us supporting efforts in production (it's what keeps the community going), but I do not want us to sacrifice the community just so we can keep the lights on. If we do that there's no reason to stick around. We need a healthy balance between the community and production users. Having a board where you can buy a seat is not one of them.
So what do we do then if it's not a foundation? How do we keep ourselves sustained? I'm not sure yet to be honest though some more half formed ideas include:
- Bounties for companies that need certain issues closed and put on stable Rust
- Having companies directly pay for server costs rather than through a foundation
- Creating a a board of tasks that people are willing to complete if given money and let companies pay directly
Now I don't think these are perfect either. However, we need to consider experimenting with different approaches than a foundation as you can point to multiple times where it's been a failure and there's no reason for us to trod that path yet again and make the same mistakes.