By Ron Williams on
This is the first in hopefully a regular series of posts about the progress we have made on Redox this month. We have been remiss in keeping you up to date on our progress, but this is an attempt to improve the situation.
Since the last news post on our progress, there have several major accomplishments and many smaller ones. Forgive us if a few are left out.
Request for Donations
With all the exciting accomplishments of our contributors, it’s hard to believe that Redox is getting by on only a few hundred dollars per month in donations. Our goal for this summer is to find funding for 3 or 4 Redox Summer of Code projects, which will require as much as $22,000 in new donations.
New Board Member
The Redox OS Board of Directors is elected annually, and this month we had our 2024 elections. We would like to welcome our newest board member, Jacob Schneider.
“Jacob (JCake)’s portfolio stretches back over a Decade. Having begun with Windows Batch of all things, his fascination only grew. In this time, the desire to get to the absolute lowest levels of our modern tech stack has only grown stronger.
Jake found his feet in the world of Linux and other OSes a while back, and as his curious nature would have it, drove him to explore even more. Eventually stumbling on Redox, utter fascination to explore every crevice of it entirely took over. Jake now finds himself neck-deep in the most exciting project in the world."
Bios for the rest of the board are in our summer announcement.
Logo and T-Shirts
We recently refined our logo, which you can see in the screenshot below and on our T-Shirts. The logo shows up a little pixelated on the Teespring website, but it looks great on the actual shirts.
We also have new T-Shirt colors this month. Every purchase contributes approximately $14 towards Redox development and operations. Your contributions are appreciated.
We will continue updating our website and other graphics to use the new logo over the coming weeks.
Redox Path Format
Redox has a microkernel core, with drivers and other resource providers running as tasks and providing “schemes”.
A scheme is the name of a resource provider, and until now,
resources have been accessed using URI/URL format.
For example, files would be accessed as
file:path/to/my_file, and a TCP connection would be accessed as
This format, while forward-looking, has not been very backwards-compatible.
In order to simplify our efforts to port Linux software to Redox, we have decided to change our resource path format to the Linux-compatible
Paths that do not begin with
/scheme will be assumed to refer to the
/path/to/my_file is treated by the system as
but the application will only see the
Using this format, normal paths now look just like Linux paths,
while drivers and other resources can still be addressed without breaking software.
The implementation of this change has started, and the kernel and our
relibc implementation of libc can translate between
formats quite transparently.
Applications and schemes are being updated as we get to them, so you may notice a few warts,
but the essential part of the change has been completed and the system is performing well.
Redox runs on Raspberry Pi 3 Model B+! Thanks to Ivan Tan, Redox can run our
server-minimal configuration on the RP3B+.
Ivan has also helped us revamp our build system so it can handle multiple RP models, each with their own hardware configuration.
Kernel and Driver Improvements
I want to particularly highlight the contributions of Bjorn3. He has been zipping around fixing stuff like Spock at the end of TOS S3.E11. Major items include rework of the PCI driver, several fixes and some clean-up in the kernel, and improvements to the build system.
A shoutout to Darley as well, he has has been making major progress on our libc alternative,
He has completed the upgrade of our
malloc code to a port of
malloc code was written in C, and has now been completely removed.
Darley has also been working hard on Rust implementations of
libcrypt, and has implemented several new
including some wide-char string functions and some pseudo-terminal handling functions.
As we work towards a stable ABI, 4lDO2 continues removing code that directly uses the
The new stable interface is
libredox for Redox-specific Rust code and
relibc for everyone else.
This allows us to change the implementation of our current system calls, for example, moving functionality into user space,
without changing the API.
Once we have a stable API, we can focus on the next step, which is a stable ABI provided through dynamic linking
relibc and a
Dynamic linking on Redox is not ready for prime time, but it should only be a matter of finding the time to get it done.
With a little bit of
relibc trickery, we have made it so
/dev/tty refers to the process’s terminal.
That may not sound like a big deal, but since most TUI libraries rely on
/dev/tty to get the terminal’s properties,
it has greatly improved our compatibility with libraries like
In fact, we are now able to discard our
crossterm fork and use the upstream version directly.
Our ongoing efforts to port Linux software to Redox are starting to pay dividends. Ribbon has been identifying good candidates to port to Redox, and creating recipes for those apps. And more and more of them are starting to “just work”. Here are a few of the programs that now run on Redox.
- kibi is a minimalist editor.
serveis not yet working.
- presenterm is a TUI slideshow app.
- chess-tui is a human-vs-human chess game.
- hexyl is a hex file viewer.
And many more.
Jeremy’s day job at System76 includes working on various aspects of the Cosmic Desktop.
And when he has time, he is porting some of that work to Redox.
We currently have
cosmic-files running on our Orbital Windowing System.
More pieces will be added as Jeremy’s time permits. Special thanks to winit for its Redox support.
Contain is our sandboxing driver. In December, a Contain rewrite was completed, giving us much more fine-grained control over what files a user has access to.
Contain allows us to run applications in a modified namespace, where only specific files and directories are accessible. It currently can only run as root, as namespace modifications require root permission right now. But it can be used with login to create a restricted user shell, and we hope to use it with our web server when we have one ready.
We’ve added several new features to the build system, including:
- speeding up cloning Redox
- making it easier to produce either “debug” or “release” versions of Cargo programs
- optionally making errors non-fatal when building large numbers of packages
- making RUST_BACKTRACE more useful
There’s still lots to do, but every week Redox feels more like a real system. We are rounding out areas of work for our summer projects, assuming we can find the funding. Some key areas of interest for the summer are:
- Redox as a web server
- USB/HID support
- performance profiling and improvement
- more and better automated testing
- more porting of Linux apps and building out relibc and kernel compatibility features
We are super appreciative for all our contributors and the hard work they are putting in. Consider joining in the fun on our Matrix Chat!