RISC-V, Part 3: Contributing

Welcome to the final post in my RISC-V series! In the past two posts, we have introduced RISC-V and discussed the architecture's design. In this post, we will discuss several ways to help and contribute to RISC-V. While some methods will require knowledge of computer architecture and programming, some parts are less technical.

Contributing

Any open-source project will fail to grow past its author(s) if it doesn't get outside contributions and assistance. On the other hand, a project that has a supportive and growing community will no longer need direct contributions from its original author (see the Linux kernel as an example). Knowing this, there are three methods of contributing to RISC-V that we will discuss: funding, advocacy, and implementations.

Funding

One of the biggest problems large open-source projects and their developers face is getting funded. There comes a point where working on the project requires the time of a full-time job, but it doesn't offer the corresponding salary to its developers. It's in cases like these where monetary contributions are the most important. Otherwise, feature additions and bug fixes begin to lag behind as the community's growth outpaces what the developer can provide.

This is where foundations built around the project can come in. Just as the Linux Foundation provides salaries for Linus Torvalds and other core maintainers, the RISC-V Foundation provides a central location to donate funds and get information about the project.[1] The foundation currently contains over 300 members, including companies such as Western Digital, Qualcomm, and Google, but individuals are also able to donate if they so choose. Memberships include having a voting voice in Board elections and discounts for RISC-V workshops, which helps give an opportunity to shape RISC-V's path even if you don't know how to program. Of the three choices, funding requires the least knowledge about the project, but it does require money and a small amount of time.

Advocacy

Of course, not everyone has the money available to donate to projects like RISC-V. If that is the case, as long as you have time and enthusiasm you can easily spread awareness of the project. In computer science circles, where hardware news spreads slowly, RISC-V is still virtually unheard of. Even in computer engineering, which usually works with low-level concepts like processor design, RISC-V is catching on very slowly.

Because RISC-V is still reaching commercial viability, asking companies such as Intel or AMD to look into it is futile. However, since the original purpose of RISC-V was academic work, students have a much easier way to advocate for RISC-V research. Simply discussing the topic with the right professors is a great way to get the ball rolling, and there are multiple angles that can be taken. From posing it as a cost-savings choice (due to the lack of licensing fees), to it being a new challenge, to opportunities for recognition within the project, it's up to the student to be persuasive in this case.

If you aren't a student, what can you do? Well, that's going to depend on your social circles. If most of the people you know are non-technical, talking about a new processor architecture probably won't matter to them much. However, many hobbyists with home labs for learning about computing are interested in trying out new technologies. New ARM-based boards are frequently picked up, and a new architecture is a new challenge that many will take up. Still, until research progresses to the point that RISC-V can compete with alternatives, the ability to advocate for it will be limited by who you know.

Implementation

The last method to contribute to RISC-V is to implement either your own version of the architecture or a tool for the architecture. Obviously this is will require technical knowledge and time, but for many who are interested those are tools they already have. For those who don't have the technical knowledge, there are definitely paths to gain it.

For those wanting to learn processor design, there's several options. The RISC-V Foundation recommends several books about RISC-V that can be used to learn more about the project. Additionally, there are several online courses that can be taken free of charge, as well as a few paid ones. Once a baseline is reached, then reading the documentation that was summarized in the last two posts is an option for reviewing concepts.

While academic projects are the most common, development isn't limited just to learning applications. Because RISC-V is open, anyone can build their own processor with a Field-Programmable Gate Array (FPGA) and program for it. As more and more programming languages get native support for RISC-V, projects such as big as building your own operating system or as small as a simple "Hello World" become more and more possible.[2] Even without the knowledge to build your own virtualized hardware, there are several community-made versions that can be downloaded and tried out.

Of course, as RISC-V gains momentum it will be easier and easier to get ahold of hardware using it. Currently, companies such as SiFive allows users to design and build a custom System on a Chip (SoC) processor using RISC-V for the architecture. Additionally, they offer complete Single Board Computers (SBCs) similar to the Raspberry Pi for those who want a solution that's easier to use. Prices on these are high though, but getting one ensures that developers have a working RISC-V processor to work with and experiment on.

Conclusion

Obviously, as with any large project, meaningful contributions to RISC-V isn't as simple as pushing code to a repository. However, due to the nature of the project, good contributions can be much longer-lived, and every little piece helps the project grow. As more developers become aware of the architecture and build software and hardware around it, the little architecture that started at Berkeley can compete with the processors that control the world today.

References

[1] https://riscv.org
[2] https://osblog.stephenmarz.com/
[3] https://www.sifive.com/

blogroll

social