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?

8 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.

8 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.

19 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.

11 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:

13 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.

14 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”.

2 Likes

Pherhaps we should reiterate "Crater for Business" doesn't need to be a paid product, just in case

Yeah, this is my experience as well. Checks for tooling required by the engineering department are written easily, but "let's donate some money to help their cause" is a whole different story.

One way to tackle this would be to have some other entity (which needs the trust of the community), separate from Mozilla or Rust run a "Crater for Business Enterprise Support" paid service. It could run as a non-profit, taking what it needs to sustain itself, and donating the rest to whatever foundation is used to help advance the goals of the Rust community.

Companies are not required to take this support package, as "Crater for Business" is 100% open-source, and as a Rust community we'll always be at the ready to help businesses run the tool, but companies simply like the extra insurance such a support package gives, so (at least in my experience) such an extra add-on is an easy sell for developers within an organisation (of course, the developers themselves know they could probably do without, but that's besides the point, as mentioned, this is simply how businesses work, insurances are a way of making sure any needed support is at the ready).

It's all a bit complicated, but such is the world of business and finance.

4 Likes

Hi!
Searching for a way to donate led me here.
There is aturon’s list, and the one from readrust.

Incoming donations for people on those lists are nowhere near a main source of income levels.

Key people have touched on ”Rust Foundation topic” few times lately, but I did not notice anything real happen. I feel that if community is focusing on governance as one primary things this year, such topic should not be ignored. It is kind of like ”big refactor” that will make future progress much easier. And probably better to resolve it sooner than later.

Comment turned out much longer than I expected, sorry for that. I may come ”too strong” in my writing, it is not intentional, just lack of practice/skill :slight_smile:

TL;DR: Foundation preferred, alternatively: “Official, easily reachable” donate page with a list of people seeking donations for open source work. Curated or randomized order.

Since there are reasons why following (or something similar) can’t work:

Paying people to work on compiler, libs (3rd party too), docs. The raised pecking issue “who gets paid and who does not” could be important. Extra burden to core team, simplify by working only with one year fixed contracts, people reach out to core team with their plans for the year and expected yearly salary. Core team selects those that provide best bang for the buck. People with demonstrated skill, especially if they are long time contributors are easier to consider.

Regarding “how much to pay”, I am confident there are many capable developers who would be happy to have $30-40k yearly for open source work without any qualms about other people earning more. My guess is that at least some people who work on Rust earn significantly more (unavoidable if they live in expensive cities). I don’t follow Blender 3D as close as I do Rust, but seems like they are doing something similar and it is working out for them.

I am confident that smart people who have only the best long-term interests at heart for the whole Rust/surrounding ecosystem have given the issue serious thinking time. Also, people deciding this have more experience with open source dynamics than I or anyone else asking for a simple “Donate button” has.

(I did not see convincing argument why it can’t, but probably I did not search enough to find it, maybe there are even RFCs discussing all this in much more detail)

How about having a page explaining that attitude, reasoning behind it, linked from homepage, the footer at least if not a more prominent location, with a list of developers interested in receiving donations?

Anyone can register on the list. If you are still concerned about bad faith, have list sorted randomly. Personally, I would prefer it curated, categories, order, info about how much they are receiving already (optional, I prefer transparency, especially if they have a prominent position) and how much they hope to get via donations.

I hope it would significantly boost income for people on aturon’s/readrust list. Another side effect, is that a company (or a developer within a company that can push/sell idea internally) can easily see stuff like “oh, if I donate a few thousand bucks per month or a big chunk of few dozen thousands, these parts of the ecosystem will get a significant boost”. If not that, “oh, maybe we can hire developer_xyz and that will make the critical component/s in our system faster/safer/more stable/features get implemented faster, fixes for stuff we had to work around, smart person on the team with specific knowledge, having such a person could help with bringing new hires for normal closed-source work.”

Even if whole official “donate to people/projects list” sounds like a terrible idea, consider having at least an official page explaining stance on the topic, with links to such lists or advice on how to search for them.

Because the money is there, and companies are willing to inject it into ecosystem. I sincerely believe that such donations would prove beneficial and not detrimental.

Is hassle/overhead by making it easier to donate worth it?

P.S. Just in case to prevent any confusion: I believe that "foundation" is significantly better approach, because it can hire/contract people full time, and can additionally manage "we are also very happy if you want to donate to some specific person/project instead of foundation directly, we make it easy for you!"

2 Likes