Cost of rust-analyzer
This post is also published on rust-analyzer website: https://rust-analyzer.github.io/blog/2019/10/16/finance.html
In this post, we'll talk about financial side of the rust-analyzer project. The goal is to find out how much rust-analyzer costs now, formulate financial goals for speeding up the development and document the Open Collective expenses policy.
Note that "rust-analyzer" here refers to the umbrella project of "making great Rust IDE from first-principles", and not to the specific rust-analyzer binary. The long term plan is to merge all of rustc, rls and rust-analyzer into a single tool, and there are already some first steps in this direction.
At the moment, the de-facto project lead is me, @matklad.I do both engineering tasks (code, design, mentoring) as well as project-management tasks (like writing this post). I am employed by Ferrous Systems, and dedicate half of my time to rust-analyzer. No one else at Ferrous is involved in rust-analyzer on a daily basis, but I do occasionally ask other folks for help in non-coding areas. Most notably, processing of open-collective donations needs help from a professional accountant. I would estimate this additional load on Ferrous as roughly two work days per month.
If we take 4500 EUR as a base monthly salary (this is roughtly the Blue Card level salary for Berlin), the cost of rust-analyzer for Ferrous Systems would be
4500 * 0.5 my work
+ 4500 * (2 / 20) work of other folks at Ferrous
= 2700 EUR / Month
If I were to work full time, the cost would be
4500 + 4500 * (2 / 20) = 4950 EUR / Month
There is a large number of absolutely awesome contributors to rust-analyzer, not employed by Ferrous Systems! It would be fair to reward their work as well. It's unclear exactly how rewarding should work like, but I would like to allocate at least 20% of the budget for payouts to people not affiliated with Ferrous Systems or Mozilla. The current scheme for payouts is as follows:
- contributors who make recurring, significant changes, influence design and co-maintain subsystems are eligible for payouts
- the exact conditions are discussed on the case by case bases
- the decision requires consensus from @matklad, @flodiebold, @skade and the contributor
- the final arrangement is made public
The biggest weakness of this scheme is that the decision quorum is not well-balanced. We hope to overcome this issue by being transparent and tweaking the descision process if it doesn't work well.
We also need to pay taxes from the money we receive via Open Collective.The VAT is 19%, but donations from EU-based companies are exempt from VAT. Additionally, total transaction processing fee (Open Collective + Stripe) is 8%;
So, the final formula for the yearly budget looks like this:
(cost * 10/8 payouts * 119/100 VAT * 108/100 transaction fee) * 12
Plugging the costs from above, we get the following budget targets:
52050 EUR / Year: I dedicate half of my time for rust-analyzer, 20% of the budget is spend funding people outside of Ferrous Systems.
95245 EUR / Year: I work on rust-analyzer full-time (yay!), 20% of the budget is spend funding people outside of Ferrous Systems.
We are currently at 22280 EUR / Year, which is a good start (and roughtly pays for one quarter of my time)! The work on rust-analyzer up to this point was sponsored by Mozilla and Ferrous Systems.
The road map for the next year is not ready yet. It will be published by the end of October. The preliminary plan is to focus on library-ification of two areas of the compiler: type system and parsing.