Just over a month ago, we announced Knurling-rs, our push to sustainably build better tooling for developing and debugging Rust software for embedded systems.
In the past month, we've made some amazing achievements. We've released a number of tools to make things like developing, logging, debugging, and testing just as easy as writing any other Rust program. We've also been lucky enough to have 62 sponsors as of the time of this writing, that have supported us, and helped to show a real need for this kind of tooling!
I want to talk a little bit about what we've learned - and where we want to take this. For me, this is an incredibly important and personal topic - I think Rust has the chance to drastically change how we build and think about embedded systems, and I think now is the time to push that idea into reality.
Want to help us make it happen? Read on, and become a sponsor today!
What it took
A little over a month ago, we had a number of ideas that we wanted to make happen, built over our lessons learned from building customer projects as well as our training classes. These were tools and libraries we needed, or we wished we had when working on projects in Rust. As a team that works full time on embedded Rust development, these are problems we knew needed better solutions, and scratched a concrete itch.
We decided to focus a significant part of our time for a trial period of one month, to see how far we could get, and to see what the community response would be. Based on what we've achieved so far, and the response we've seen, I would personally call this an incredibly successful start!
Over the past month, nearly everyone at Ferrous has helped contribute to our projects, with a few different folks taking turns in a project manager role, deciding what the focus and deliverables should be. Over the course of the month, we've spent roughly the equivalent of two full engineer-months on these efforts.
This might seem like a surprisingly low amount of effort for how much we've managed to get done in that time, but I think that carving out the time to focus on this project, rather than having to fit it between other work, allowed us to deliver something more coherent, and more impactful than our typical here-and-there open source contributions.
Recently, matklad, the primary developer of rust-analyzer and part of the team at Ferrous, wrote a bit about what he wants to see for Rust in 2021. You should go read the whole post, but this part rang most true for me:
This experience taught me that there’s a great deal of a difference between the work done by the community, and the work done during payed hours. To put it bluntly, a small team of 2-3 people working full-time on a specific project with a long time horizon can do a lot. Not because payed hours == higher quality work, but because of the cumulative effect of:
- being able to focus on a single thing,
- keeping the project in a mental cache and accumulating knowledge,
- being able to “invest” into the code and do long-term planing effectively.
I mentioned before that we currently have 62 sponsors of Knurling-rs. The majority of these sponsors are individuals, with most sponsors contributing $10 a month. This currently totals $940 per month of financial contributions.
Having this number of sponsors and support after only one month has been a wonderfully positive sign! Often gaining initial traction is one of the hardest things to do, but the support from the community already has been astounding, and I can't thank all of our sponsors enough.
That being said, the current level of support would not allow us to sustain the same pace we've put in so far continuously. As Knurling is also a Ferrous project, rust-analyzer's Cost of rust-analyzer's analysis of what it takes to be sustainable is still generally accurate, meaning to sustain one half time engineer + one part time engineer + community contributors, we would need to reach a funding level of around $5,000 per month.
We are on our way there, and I think it helps to have concrete information and an upfront discussion of money in open source development. We've said from the first day that we want to make Knurling a sustainable effort, and to make that happen, it means putting concentrated focus to obtain a high value output.
The Next Goal
We'd like to reach a point where we can dedicate one engineer half-time to manage and focus on building Knurling projects. This would allow us to continue to make architectural design and maintenance efforts happen, while also managing feature improvements and pull requests from Ferrous developers as well as from the community.
I think that meeting this first goal of one engineer half-time will be a real turning point for sustained development in Knurling, and would allow us to make visible progress towards our mission of making embedded development in Rust the most productive and reasonable choice for building embedded systems today, bar none.
To be clear: if we had the funding, we would be happy to have our entire six person engineering team working full time to deliver world-class open source tooling and libraries for the embedded Rust ecosystem. Projects like rust-analyzer have shown that this is possible, and the huge impact tools like this can make for an entire ecosystem.
Until then, we'll continue improving and refining the tools we have already built, as well as try out new ideas, like Knurling Sessions, to help introduce more people to embedded Rust development.
How We Can Achieve That Goal
To achieve this next goal, we need to increase our amount of sponsorship by approximately 5x. There are a couple of ways that we can do this.
The first is by expanding our number of individual sponsors. If you are interested in embedded Rust, and are comfortably able to, we would love to have you as a sponsor! You'll get early access to not yet released tools, and will help us keep these projects going! If you enjoy the things we're doing, we'd really appreciate you telling your friends and colleagues, and sharing all of the things we are doing on Twitter, Reddit, or wherever you talk to other embedded developers!
The second is by finding our first corporate sponsors. A single company sponsoring the project can often be the same impact as 50 or 100 individual sponsors, which goes a long way towards reaching our goal! Companies like Embark, Microsoft, Discord, and many others have seen the kind of benefits that can be achieved, for less than the cost of a single in-house or contracted full time engineer. We think that tools like Knurling can be a multiplier for companies using Rust, and that we can provide a huge impact for a relatively low spend.
If your company isn't able to use GitHub Sponsors, send us an email! We're happy to write you an invoice, purchase order, or other formats of funding that are more suitable for business to business transactions.
The third way is by doing contracting work around Knurling-rs. If your company needs help integrating, using, or extending parts of Knurling to better fit your workflow, we'd love to help! We see Knurling tools as being an open source core, which we can improve with more in-production users.
Have an idea for a tool you don't have time to build in house? We'd be happy to help! We are also happy to build proprietary integrations for your needs on top of the open source core of Knurling tools. If you'd like us to show you how much more productive we can make your team, send us an email!
Thank You to Everyone who has Supported Us!
We want to thank every one of our first 62 sponsors. We couldn't have done it without you! We can't wait to show you what we have in store next. If you want to support this work, consider becoming a sponsor today!