Raise more money and attract more developers to Rust development

After reading http://smallcultfollowing.com/babysteps/blog/2019/07/10/aic-unbounded-queues-and-lang-design/ it seems to me that the main issue of Rust development is that quite simply there aren’t enough people working on the Rust compiler to timely implement all RFCs that are conceived and accepted.

So IMHO the best solution is to make changes that would persuade other people and entities to provide more money to employ Rust developers or directly employ developers to work on the compiler.

Ideas for that:

  1. If possible, setup a Rust foundation separate from Mozilla
  2. Provide a way to set up one-shot and recurring donations to the foundation or to Mozilla earmarked for Rust
  3. Provide a way for companies to pay recurring money in exchange for “partner status”
  4. Give core team seats to partners paying enough money (e.g. 3 highest paying partners or anyone giving >$10-100m per year), and also give them advertising according to partnership level up to being mentioned as co-maintainers of Rust along with Mozilla
  5. Require payment for the service of adding code under NDA to crater runs and for any similar service (either directly or by making it available only to partners paying enough money)
  6. Figure out other ways of motivating large tech companies into giving money or employing Rust developers (esp. those who don’t already have major support for other programming languages, like Facebook and Amazon)
  7. Create a “looking for employment” system where companies can easily find people with experience working on the Rust compiler who are looking for someone to employ them to work it (this can also be extended to general Rust software development)
  8. Provide an easy way to pay to get a particular feature completed, by simply paying money for that feature or being willing to hire someone and letting the Rust team figure out how to spend it or who should be hired
  9. Provide a way to pay a high price to get an issue prioritized or get immediate support for Rust issues, targeted at companies, also perhaps as a support subscription model, possibly tied with partnership
  10. Look at how to make it easy for PhD students to improve Rust as part of their thesis work
  11. Look at whether it’s possible to get academic or general government (US, EU, etc.) grants for some improvements to Rust
1 Like

And what would the foundation do?

Setting up a “Rust foundation” comes up every now and then. I was even involved in setting up a European one, which didn’t happen for unrelated reasons. But what would that achieve? Who would be responsible? Who would be paying the person running the foundation?

I beg to differ. If Rust has a “feature problem”, then it’s definitely “too much features too fast”, and not the converse. I don’t think we need to fuel that direction even more with money.

In case it is deemed that there isn’t currently enough workforce for the compiler and/or other infrastructural work, why not invest, for example, into upholding to the “memory safe” promise instead, by paying people to fix the many soundness bugs in the compiler and the standard library?

5 Likes

First of all, while we have talked about setting up a “Rust foundation” to allow donations to support Rust, one of the properties almost everyone is agreed on about such a foundation is that it should not directly pay developers. (It might potentially cover things like travel costs and conferences, but not developer salaries.) Down that path lies a great deal of strife between volunteers and paid developers, and potentially a net reduction in people working on Rust.

Second, any Rust foundation we set up would specifically want to avoid a “pay for play” structure, especially for things like “core team seats”. Yikes. And while advertising of sponsors is fine, the only thing that would get a company/developer described as being a “co-maintainer of Rust” is actually doing the work to be a co-maintainer of Rust.

For the rest of this post, I want to pick out a couple of ideas from your list that I think do have some potential, if carefully separated from any the above issues.

The concept of paying to include private projects in crater runs is an interesting one, though then that would get into issues of “who gets to see the details of such code”. I could imagine ways to solve that problem (starting with a simple boolean “something broke here” and a notification to the maintainers of the private repository), and it’s an interesting one, but we’d want to firmly separate it from the rest of what’s mentioned here.

For such things, I’d suggest talking to companies like Ferrous Systems. I could also imagine having a way for individual Rust developers who do consulting to advertise themselves as such.

These are certainly reasonable ideas.

7 Likes

Mozilla already pays developers to work on Rust, so why would a Rust foundation paying them be different?

I could maybe see a problem if a culture of paying single developers for single features at their request develops, as then people may start demanding payment for any contribution. However, as long as payments are for ongoing employment and payments for specific features are initiated by the foundation/core team, this shouldn’t be an issue.

If someone were to invest money into employing the best avaiable Rust developers to work on the compiler, they would get a sizable amount of influence by being able to direct them and them getting on various Rust governance teams just by merit and effort.

So I think it makes sense to give a similar amount of influence to entities that decide to contribute money instead of directly using it to employ people.

I think a variation of this already exists, and it seems a way to provide something in return for a corporation funding Rust development, while not impacting non-commercial users (who can just publish their code on crates.io).

Many companies pay developers to work on Rust, and get to direct (partially or completely) what those developers do in Rust to align with their goals.

Having an official foundation do so would be off-putting and generate strife with volunteer contributors. It also generates a questions like “who decides which work gets paid”, and “why is that contribution paid and my work volunteer”, as well as conflicts of interest. Also, you’d then run into “how much should we pay for this feature, or that feature”, and “how much should we pay developers in different areas of the world”, and “do we pay senior developers more”. Questions different companies can choose different answers for regarding their own employees, but which a foundation would have far more trouble answering by committee.

Such a foundation would compete directly with existing companies and consultants, including those who participate in the project.

And also, you get into very dangerous legal territory if it looks like you’re using a foundation (with a foundation’s tax status) primarily to pay developers.

Many, many people have explored this territory; it does not end well.

I want to see Rust developers paid, too. And if you want to start a consulting company to handle those logistics, by all means do so. Let’s have multiple such companies exist, and let’s keep all of them firmly separate from any non-profit foundation started for Rust.

16 Likes

If setting up a separate entity has more downsides than benefits, then having Mozilla take contributions earmarked for only Rust development and sell Rust partnerships should work almost as well.

Also the separate entity can just be a spin-off of Mozilla’s Rust operations, wholly controlled by Mozilla (at least at first) and continuing business as usual.

As mentioned above, non-profits like the Mozilla Foundation have limits on their activities. The Mozilla Foundation has a taxable subsidiary (the Mozilla Corporation) that generates its own income, pays taxes on it, and can use it in different ways from the Mozilla Foundation – such as paying people to develop Rust and Firefox.

The Corporation is wholly owned by the Foundation and pays dividends to it, so their finances are not wholly separate, but they also can’t be intermingled willy-nilly. The two entities must have separate boards of directors and management. The Foundation can’t just treat the Corporation as an accounting fiction for funneling tax-exempt donations toward non-tax-exempt purposes.

(This isn’t to say that you shouldn’t donate to Mozilla to support Rust; the overall health of Mozilla is what allows it to create and maintain projects like Rust. But this support will necessarily be somewhat indirect. Also, disclosure: I was a Mozilla Corporation employee for over 9 years, and was on the Servo team for 4 of those years.)

There are a few ways for contributors to get paid for their Rust work:

  1. Get hired by a company like Mozilla that uses Rust in its products and pays people to work on the language and libraries.
  2. Sell consulting services including support, training, and custom software development.
  3. Crowdfund. Aaron Turon put together a list of Rust developers seeking sponsorship about a year ago.

People and companies who want to contribute financially to Rust development can do so indirectly by donating or purchasing from companies doing (1), or more directly by paying developers doing (2) and (3).

2 Likes

The immediate problem is that https://donate.mozilla.org/en-US/ doesn’t allow to specify that the money must be spent on Rust and is generally not designed to support nor entice regular large contributions from corporations.

Setting up a different entity is the cleanest solution, but changing the Mozilla donation process could also work.

As for non-profits, it’s not clear to me that there is anything wrong with forming one with the purpose of paying salaries to advance the Rust language in the public interest. It seems the thing that is illegal is using salaries as a roundabout way to extract dividends from a non-profit, but if you are paying developers market salaries to perform work it seems like it should be fine. Perhaps donations that are actually payment for specific development work as a service could also be illegal, in which case those could be handled either by Mozilla Corp, a “Rust Corporation” with a Mozilla-like structure, or direct payment to developers as contractors.

Hi, I’m the maintainer of Crater!

I had ideas on the best way for Crater to test proprietary code a few months ago, and while no code nor documentation exists yet I have a rough plan in my mind. What I codenamed “Crater for Business” is an agent companies can run on their own infrastructure, which hooks into our public instance and tests their proprietary code without ever sending it to us, along with a public API for companies that don’t want or can’t use our agent. Unfortunately I don’t have the time at the moment to develop it, as other things in the project are way higher priority for me to work on.

Now, with my Release Team hat on, I’m strongly opposed to having companies pay for testing their code on Crater. The issue is not a money one since with self-hosted agents we have no costs adding more companies: Crater is vital to our stability guarantee and I wouldn’t feel comfortable at all releasing a stable compiler every 6 weeks without it, even though it doesn’t have perfect coverage (it never will).

Most of the regressions fixed in a release are found by Crater, and requiring people to pay to be part of our stability guarantee isn’t what I want. Companies should be encouraged to sponsor the development of the language, yes, but I don’t want to go down the road of basically making the release stability a paid product.

9 Likes
  1. Crowdfund. Aaron Turon put together a list of Rust developers seeking sponsorship about a year ago.

Please don’t use this list. A lot more of Rust contributors (including myself) aren’t listed there. Instead, please use https://readrust.net/support.html which is more complete and more up-to-date. :slight_smile:

10 Likes

I see that you want to create proper incentives. However, businesses work in weird ways :slight_smile:

It’s much much easier to get a company to pay for a product than to sponsor something, especially when the sponsorship isn’t just a way to buy an ad or a job posting.

As a developer in a large company I can say “Our team uses Rust, and we need this tool”, and the checks will be written quickly. But it’s much much harder to explain internally “Rust is cool, we should sponsor it in general”. Even if everyone nods in agreement, nothing will get done, because companies don’t have departments for spending money on good causes. They have departments that may appear to support good causes, but that’s marketing.

11 Likes

Yeah, that particular service seems a great candidate for providing an incentive to buy a paid service since it only benefits entities with proprietary code and doesn’t cost core developer time to provide (beyond fixing issues that come up as a result of it, but that’s necessary anyway). Can even have two tiers, one where the code is provided under NDA for small companies that already give out their code to GitHub private repositories, etc. and an on-premise version that only reports test results for enterprises that don’t want to do that.

Maybe there are other services with those properties that can be provided to entice companies to sponsor Rust development.

1 Like

Wouldn’t “crater for business” give us strictly better coverage? That is, we would cover all the code we already cover, but doing this would additionally allow us to cover projects we don’t know about today. Or am I misunderstanding you?

Yeah, covering more code would be the goal of “Crater for Business”.

1 Like