“I like technologies that are not easily replaceable, technologies that can still be used in the future, 20 years from now, that are simple and reasonable.”
This simple technical declaration marks the starting point of Zheng Junjie’s journey into the open-source world and defines the direction of his subsequent explorations.
Zheng Junjie’s Linux journey began with a strong interest in system customization. After in-depth exploration of numerous distributions, in 2020, he encountered Guix.“Guix follows the philosophy of free software, where everything can be modified, compiled from source, booted, and reproduced, integrating the system as a whole.”This aligns perfectly with the free and customizable philosophy of the RISC-V instruction set.
He stated:“Free software should be paired with an open instruction set, so RISC-V must be involved.”

Guix on RISC-V: The Collision of Free Software and Open Instruction Sets
Since 2022, he has actively dedicated his spare time to addressing the challenges of cross-compiling RISC-V for Guix. In April 2024, he officially became a Committer for the Guix project, systematically enhancing Guix ’s support for RISC-V. His contributions are comprehensive and in-depth:
1. Merged over 1700 commits, fixing and updating numerous packages, introducing and maintaining the Plasma desktop environment, while also undertaking critical patch review work.
2. Led the support for key RISC-V platforms such as VisionFive2, QEMU, and Milk-V Megrez.
3. Created the guix-riscv-channel software channel, providing support and pre-compiled binary packages outside of the official channels, lowering the barrier for users to use Guix on RISC-V hardware.
https://github.com/Z572/guix-riscv-channel/
4. Implemented a Guix virtual machine running on the riscv64 architecture, providing a stable and reproducible software testing and development environment for Guix on RISC-V.

Guix added VisionFive2 images
Porting and Optimizing ROS2 on RevyOS
His experience in handling complex system builds and dependency management in Guix provided Zheng Junjie with the key capabilities to tackle the next challenge: porting ROS2 to RevyOS. In April 2024, Zheng Junjie joined the PLCT laboratory’s RevyOS team and successfully completed this daunting task.The ROS2 project ultimately delivered over 3000 packages, providing stable and reliable support for ROS2 Humble and Jazzy versions for the Debian community.
RevyOS ROS2 progress repository:
https://github.com/revyos-ros/
Faced with such a large scale of packages, he adopted an efficient automated compilation pipeline:
-
Process Automation: Centered around Jenkins, paired with a customized Docker image for RevyOS, achieving automation of the compilation process.
-
Efficiency Optimization: Introduced apt-cacher-ng caching mechanism, reducing the amount of repeated data downloads to 60%, significantly shortening the compilation cycle.
-
Resource Reliability: Utilized reprepro in conjunction with Nginx to build a private software source, ensuring stable and high-speed access to software resources during the project build process.

turtlesim simulator on RevyOS
In-Depth Details: Overcoming Graphics Stack Compatibility Issues
During the porting process, compatibility issues between platforms also posed major technical barriers.
A typical case is that RViz2 runs normally on Milk-V Pioneer, but encounters segmentation faults on LicheePi 4A.Zheng Junjie pinpointed the root of the problem using GDB: the graphics interface mismatch:RViz2 and its dependencies rviz-rendering strongly depend on OpenGL, while LicheePi 4A only provides GLES support, and its upstream dependency ogre-next’s GLES support is no longer functional.
Zheng Junjie’s solution was clear and precise:
-
API Compatibility: Introduced the gl4es compatibility layer, simulating OpenGL API calls in a GLES environment.
-
Bypassing Hardware Limitations: Enabled software rendering mode by setting the LIBGL_ALWAYS_SOFTWARE=true environment variable, bypassing specific implementations of hardware acceleration.
This solution not only allowed RViz2 to run successfully on LicheePi 4A, but also provided a reference example for other developers to address graphics stack compatibility issues on RISC-V platforms.
At the same time, the unified, controllable, and reproducible environment provided by Guix has also become a powerful tool for him to conduct ROS testing on different development boards. In the future, he hopes to continue improving ROS support on RISC-V and adapt Guix System to more development boards.
Evangelist’s Passion: Connecting Communities and Sharing Knowledge
From the openEuler developer conference to the rvv-llama.cpp demonstration at the Xuantie conference, and to technical sharing at Hohai University, Zheng Junjie is active in various technical events. He is eager to share his practical experiences with the community without reservation.

“Whether it’s driving a real ROS car or contributing to Guix, the key is always hands-on practice,”Zheng Junjie summarized,“The charm of the open-source community lies in the fact that no matter where your interests lie, there is always space to contribute. I hope my work can pave the way for future generations, and I welcome more people to join in to make the RISC-V ecosystem richer and more colorful.”
This is the belief of a long-term technology advocate: true value comes from continuous practice and building, as well as sharing without reservation. For those newcomers who are curious about new technologies, he offers simple yet sincere advice:“Don’t be afraid of difficulty, dare to do it. You can start by learning RISC-V in a QEMU virtual machine, or contribute to the ecosystem by packaging a commonly used software.”