Yet another year is gone without much progress on Jehanne.
This was in part due to Covid (my wife is a General Doctor and she is still working more than 12 hours a day on average, to cope with the crazy lack of rationality in Italian management of the pandemic), in part due to a new high-risk project at work, and in part due to more political activities that still could be summarized as "Fight mass surveillance as the pandemic-scared world keep falling into its deadly embrace".
So in 2021 I've only been able to work on Jehanne for roughly two weeks, in November (obviously, by night, as always).
Meanwhile, a lot of things changed in the cybernetic world around Jehanne.
First, the blatant steal and distribution of valuable copylefted code by Microsoft through GitHub Copilot automatic cut&paste&string-replacer, made me realize that mainstream copylefts, including the various GNU GPL licenses, are deeply flawed.
The problem is not just the math-washed abuse of fair use, that was not accounted by the licenses, but the limits of copyright application themselves, in a context were Judges can be fooled soo easily.
To address this, I rewrote the Hacking License to
work both as a license and as a wrap contract explicitly that extends the reach of the copyleft's reciprocity to "every work that somehow
depends on, includes, integrates or otherwise extracts value or data from or through the" covered work.
Its purpose "is to create a cultural and technological corpus that will grow and evolve completely and
exclusively as a common heritage of humanity."
This should address the tragedy of the garbage:
whenever you throw your work away like was it was garbage, it won't benefit society, but the future
abusers that will privatize it.
Jehanne is still mostly licensed as GPLv2 but, with the recent publication of Plan 9 as MIT by the Plan 9 Foundation, several indipendent evolutions (including 9front and plan9port) rebased their code base to MIT.
So I could do basically the same, after removing the few lines of code inherited by Harvey still present.
Then, with the most fundamental components (kernel and libc) under MIT or under my own copyright, new development would be under the Hacking License (unless FSF will produce a convincing new GPL version in the meanwhile... but I do not hold my breath).
Obviously, Jehanne development can't continue on GitHub.
I do not want any corporation to embrace, extend and extinguish any future innovation that I want to donate to the world of my daughters, and hosting my code on GitHub means that any corporation can violate my copyright while pretending that Copilot violated it "accidentally" for them.
Thus I'm moving all Jehanne repositories to gitea.it, a Gitea instance kindly maintained by the Devol collective.
Devol is an interesting Italian tecno-political project deeply ispired by Framasoft: they aim to re-distribute the Internet, with a strong focus on people's privacy.
This is a temporary solution, as I hope to be able to self-host Jehanne's git repositories on a Jehanne machine soon enough (thanks to Orib's Git9, that I'm going to port).
But I'm very grateful to Devol's guys for their warm hospitality and support.
So from now on the new home of Jehanne is https://gitea.it/JehanneOS/
Furthermore, Jehanne's website will move to http://jehanne.h--k.it.
Update your bookmarks: old locations will only work for a few months.
But what did I do in those cold two weeks of November?
I got rid of Go, obviosly!
I know many love this programming language, but it has several drawbacks that have been annoying since the beginning of Jehanne.
First, it's not a simple language: too much syntactic sugar and many annoying corner cases. And while to many practicioner these words might look like blasphemy, at least twice a year I get emails from people who cannot build Jehanne because their Go version is somehow not backward-compatible with the building scripts.
Furthermore, Go is a project from Google employees, and
nothing good can come from there.
Yeah, I know that both Pike and
Thompson designed and developed the early Plan 9 (and much more),
but back then they were not yet working in Google.
Google corrupts everything and everybody.
From a more technical perspective, getting rid of Go has been a juge advantage for Jehanne.
Tool | Old build (loc) | New build (loc) | Delta |
Language | Go (>1500000) | Rc (~6000) | - 1500000 |
9P server | ufs (~7000) | u9fs + netcat (~8000) | + 1000 |
build tools | build&all (~3000) | build&all (~300) | - 2700 |
build scripts | JSON (~5200) | rc (~4900) | - 300 |
Go have been replaced by rc in build scripts and the unmaintained
ufs has been replaced with u9fs served over netcat.
This makes Jehanne a lot simpler and even easier to self-host: since to build Jehanne I do not need Go, I do not
need to port Go to Jehanne. Furthermore, I can remove three syscalls that nobody use in the operating system
semacquire
, semrelease
and tsemacquire
.
In particular, tsemacquire
was introduced into the Bell Labs release of Plan 9 just to enable the port
of Go 1.3.
Removing these system calls is quite easy
(I didn't do that already only because I literally lacked the time), and it will simplify
memory management
in the kernel, saving more than 128 bytes for each segment of each process.
Replacing Go tools has been quite straightforward: rc proved itself as a simple and yet powerful programming language, way better of its UNIX ancestors.
The old JSON-based code generators
(usyscalls,
ksyscalls
and mksys) have
been replaced by a sed one-liner and
few
custom
templates.
I was pretty amused by the effective simplicity of this old technique: you pipe a template to a sed script that produce a shell script that,
once executed, produces your desired output.
Also binary dumpers (data2c
and elf2c)
have been replaced by similar rc templates
using hexdump
.
The Go build script based on JSON configurations have been replaced by a bunch of simple rc scripts. The development process didn't change though: 21 lines of rc code reproduce the previous developer's experience (so much that I forgot to update the doc... sorry :-D).
A bit more tricky to replace has been
runqemu
that is used to create the initial ram disk for Jehanne by running a minimal kernel in QEMU.
Its replacement is a poor-man, inefficient, special-purpose expect
...
but it's also very simple and portable in its humble 57 lines of rc code.
The ten remaining Go tools, are simply not needed anymore.
Thus these two weeks of hacking made Jehanne way more self-contained.
Well, obviously I'd like to reach to self-hosting.
This means porting a few more 9front tools, git9 above all.
Also, after the removal of RMS from GCC Steering Committee
(as requested by a Facebook employee), I realized that
GCC is
controlled by US corporations that do not deserve any trust.
This is a tough issue: while porting TinyCC to Jehanne
and compiling Jehanne with TinyCC should be quite straightforward, the whole world depends on GCC.
Porting GCC to Jehanne was a political choice, a way to support the GNU project and Free Software, but now I realize it was a misguided one.
And yet, removing GCC from Jehanne doesn't seem wise, as it stress the system in several useful ways.
I still have to find a solution on this.
Furthermore, as I wrote above, I'd like to get rid of all the GPLv2 code under third parties' copyright to protect the project with a stronger copyleft.
Finally I still have all todos from 2021 still pending.
Sadly, I cannot promise anything. :-(
The limited amount of time that I can dedicate to Jehanne and the licensing issues made me realize that Jehanne is really a personal Research OS, as it was correctly defined, years ago, by Aiju.
So I decided to adopt the contribution strategy
of a more mature OS, like TuaruOS is: contributions in the form of code should be discussed in advance.
Feel free to reach me on the Fediverse!
However, if you really want to contribute to Jehanne, my suggestion is to contribute to 9front first: 9front is the most mature and stable among Plan 9's evolutions, it's developed by great hackers with a great sense of humor. :-D
Contributing to 9front will be much more fun and formative than contributing to Jehanne, and I will happily port your code when ready.