GCC 9.2.0 on Jehanne

06 Jan 2021

Finally, 2020 is gone.

It has been a crazy year during which my political efforts had to be directed away from Jehanne development, to protect my people and family as much as possible.

We might sum up all of these actions as "Fight mass surveillance as the pandemic-scared world falls into its deadly embrace".

All I managed to do for Jehanne is to complete and consolidate the GCC port, so that now you can compile C and C++ code from there.

The port required minor improvements and fixes to LibPOSIX in particular to get C++ happy, but nothing really relevant.

Hovever the most important issue has been to handle the idiosyncrasies and the weird assumptions about a POSIX filesystem, so that GCC was able to find libraries and includes both when used to compile POSIX programs and when used to compile native ones.

Since GCC is a GNU software mostly developed on (and for) Unix-like operating systems and since most programs makes assumptions on how it works in their build scripts, I decided to preserve the orignal behaviour of command-line flags, so that people building POSIX code won't need to change their scripts (as long as their scripting language has been ported to Jehanne... :-D).

Thus you can bind the /posix/ directory to build a simple self-contained POSIX environment where, by default, GCC will search for standard stuffs.

However, a new -9 flag has been introduced to exclude the POSIX's search paths and libraries from the compilation.

While it took a while to grasp the GCC Spec-Files, I know that running GCC on a Plan 9 based fork is not a great achievement by itself.

Not just because most of Plan 9 fans do not like the GCC complexity, but because by itself it doesn't provide a complete POSIX system for those who want one.

Next step: a package manager...

The next logical step in Jehanne development would be to build a package management system that allows people to build, install and/or bind remote packages in the namespace.

Indeed my insight is that software should always and only be distributed in source form, rising the risks connected to malware injection.

Thus the package manager should leverage a properly designed set of conventions to automatically build the software from sources and install them on a /pkgs/ subfolder.

Furthermore it should ease the import of the new binaries in the process namespace. And this also means that it should ease the import from trusted binary repositories distributed over 9P2000.

I think such package manager would be an important software for Jehanne (even just to achieve self-hosting without too much bloat), but... do not hold your breath: I do not know when I will find the time to write it.

...or a new File Protocol?

The corona virus pandemic made it even more evident how broken is our cybernetic infrastructure. However it also reduced the amount of free time I can dedicate to Jehanne.

So ultimately I realized I should focus on what is the most innovative contribution that Jehanne can bring to the table: the new file protocol inspired by 9P2000 but simpler and more powerful.

As of today, talking about the FP protocol is almost like describing vaporware: it exists only on paper, as scratches I put down during these years.

After various attempts on private branches to hack the kernel to replace 9P2000 with it, I realized it's better to work on a new set of syscalls dedicated to it so that I can keep working with a functional OS while replacing it's core one piece at a time.

Plan 9 code is indeed very tightly coupled with the 9P2000 design and to get advantage of the FP protocol, I need to replace several kernel components, such as the Dev and the Chan structures.

Furthermore, I'd like to turn FP into a safe public good (aka Commons), protected by a very strong copyleft, so that any software built on top of it would have to be Free Software.

I know that, after decades of Open Source marketing selling weak licenses, many people think that the bindings of copylefts work as annoying limitations to its economic exploitation and, ultimately, the US-centric egemonic individualism.

But the fact is that... I don't give a shit about individualism! :-D

Any unprotected gift you donate to humanity will be stolen by assholes.
That's the "Tragedy of the Commons Garbage", as the famous propaganda piece of Hardin argued during Cold War (against Communists).

After all, if you throw software away like garbage, as Tim Berners-Lee did with HTTP, you can't complain when it's taken by evil governments and corporation to create the worst dystopia the world has ever seen!

I do not want this to happen with my File Protocol.

Thus it will likely be released under the (next version of) the Hacking License.