Embedded Rust Contribution Guide
Grow and Help the Rust Community
Are you interested in contributing to the evolution of embedded Rust? The good news is that there are several ecosystem contribution avenues/areas depending on what you want to do. Each area of contribution plays a vital role in the growth and success of the embedded Rust ecosystem. Depending on your skills, interests, and expertise, you can choose one or more areas to focus on and make a meaningful impact. For different platforms/controllers, there are maintainers of different crates that sometimes announce their priorities and areas where help is needed. You can find a list below in this post.
Contribution Areas 👨💻
Some areas include, but are not limited to, the following:
Code Contributions: Developing and enhancing embedded Rust libraries, crates, peripheral drivers, and frameworks.
Documentation and Learning Resources: Writing and improving documentation for libraries, crates, and tools. You can also create tutorials, guides, and examples to help newcomers learn embedded Rust. Additionally, translating documentation to make it accessible to a wider audience.
Bug Tracking and Issue Triage: This involves identifying and reporting bugs in libraries and tools. You can also help maintainers prioritize and triage issues.
Testing and Quality Assurance: You can write and maintain unit tests, integration tests, and end-to-end tests. Additionally, you can contribute to Continuous Integration (CI) setups to ensure code quality or perform code reviews.
Porting and Platform Support: part of increasing the reach of Rust is in supporting more controllers. As such, you can port Rust to new embedded platforms and microcontrollers. A good point to start might be also in supporting and maintaining existing platform-specific code.
Performance Optimization: You can contribute performance improvements to libraries and core components.
Tooling and Development Environment: This involves developing and improving tools that aid embedded Rust development.
Community Engagement and Awareness: This entails participating in online forums, mailing lists, community meetings, and chat platforms to help others. Also spreading awareness about the benefits of using Rust in embedded systems to encourage adoption. Some forms could be in writing blog posts, and articles, and giving talks to showcase real-world use cases.
You can find starting points for contribution areas by accessing resources available by maintainers. These resources typically fall into the following categories:
💬 Chat Rooms
🤝 Community Meetings
The next section provides a list of maintainers and links to the different categories shown above.
The Embedded Devices Working Group
The embedded devices working group is an official working group composed of several teams whose functions are defined here. The working group is broken down into different teams which you can find the full organization on the coordination GitHub repository. In its capacity, the embedded working group develops and maintains a long list of projects which are too many to list all here. However, the working group maintains some of the most popular crates like
svd2rust. You can refer to the working group repo for the full list. This section lists all the teams and all the projects owned by the WG. For contribution starting points here are some useful links:
🛣️ Roadmap: The Rust Lang Team Roadmap. Note that the roadmap is general for Rust but mentions areas of focus for embedded that fall under the embedded WG mandate.
🤝 Community Meetings: They occur in the Matrix room Tuesdays, 8pm CET/CEST. You can find past meeting logs here as well.
Espressif Systems is a semiconductor company known for its famous ESP devices. Espressif has a core team maintaining several libraries, crates, and examples for using Rust on Espressif SoC's (ESP32s mainly). This includes crates like the
esp-idf-hal and the
esp-hal among various other tools for the Espressif chips. For contribution starting points here are some useful links:
📦️ Repositories: the esp-rs official repository.
🛣️ Roadmap: Rust on Espressif chips - 2023 Roadmap.
💬 Chat Room(s): #esp-rs:matrix.org Matrix room.
🤝 Community Meetings: Thursdays at 5 pm CEST/GMT+2 via Google Meet. To join, you just need to notify the team in the Matrix room. To access previous meeting logs you can check here.
💭 Blogz: Scott Mabin’s Blog.
Ferrous Systems is a consultancy and training company that specializes in Rust, particularly in the context of embedded and systems programming. They are known for their expertise in applying Rust to various domains and developed tools like the
rust-analyzer . In the context of embedded Ferrous have developed the Knurling Tools collection composed of tools to building, debugging, and testing embedded Rust systems. This includes tools like
defmt-test. Additionally, they are maintainers of the
🛣️ Roadmap: There isn’t an expicit roadmap, but you an get a sense of direction on the Ferrous Systems Blog.
🤝 Community Meetings: N/A
💭 Blog: Ferrous Systems Blog.
There are several projects that do not have official maintainers behind them. Typically this means that maintainers would be different contributors from the community that decided to take the lead. As such, there probably won’t be any roadmaps or community meetings. As such, in order to contribute you would have to navigate the repositories and engage in chat rooms. Alternatively, you can take the initiative to start a community around a new device/platform yourself! Below is a list of popular projects. For a comprehensive list, I recommend the awesome embedded Rust repository for the full list.
This is the architecture behind the popular Arduino. The repositories and documentation incorporate the Arduino abstraction layers.
This is the architecture behind the popular Raspberry Pi.
This is the architecture behind the popular Raspberry Pi.
Embassy is a popular framework that supports
async . Embassy also incorporates three different HALs for the STM32, nRF, and rp.