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:

  • 📦 Repositories

  • 🛣️ Roadmaps

  • 💬 Chat Rooms

  • 🤝 Community Meetings

  • 💭 Blogs

The next section provides a list of maintainers and links to the different categories shown above.

Maintainers 👷‍♂️ 

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 cortex-m, embedded-hal, itm, and 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:

Espressif Systems

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:

Ferrous Systems

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 probe-run, defmt, flip-link, app-template, and defmt-test. Additionally, they are maintainers of the nrf-hal crate.

Other Projects

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.

AVR

This is the architecture behind the popular Arduino. The repositories and documentation incorporate the Arduino abstraction layers.

Raspberry Pi

This is the architecture behind the popular Raspberry Pi.

ST Microelectronics

This is the architecture behind the popular Raspberry Pi.

Embassy Framework

Embassy is a popular framework that supports async . Embassy also incorporates three different HALs for the STM32, nRF, and rp.

Real-Time Interrupt-driven Concurrency framework (RTIC)

Reply

or to participate.