@ekaitz_zarraga the potential promised by being able to decouple device functionality from device physicality is pretty alluring for me.
Working in a world where the kernel has fewer than 60 total system calls, and which can be used without the crutch of some "standard C library", where the kernel has an architecture so clean that debates over it being a microkernel or not continue to this day, and yet remains as functional as any contemporary kernel, simply cannot be valued high enough. I focus on the kernel b/c its design decisions have ripple effects upon the user software.
I'll take a look to Plan9's kernel then. I suppose I'll be able to understand something.
Do you have any link to documented/commented kernel to be able to understand it better?
The one I studied earlier was https://harvey-os.org/ but this isn't *pure* Plan 9 (it is a Plan 9 clone intended to be built with off-the-shelf GCC tooling).
Hope that helps!
@roi Hey! thank you!
This is gold!
@alexandria_ @ekaitz_zarraga @djsundog IIRC, and might not be RC'ing at all, MINIX 3 draws from MINIX 1/2's philosophical heritage, and some of its user-space tools. The kernel, however, was a ground-up redesign. Again, same guiding philosophy, but the more concrete set of performance goals influenced the finished design in significant ways.
MINIX 3 looks like a fascinating system that I'd love to explore at some point in the future when I have more time.
situation: git9's git/commit uses /bin/sam, but i prefer /bin/acme
bind /bin/acme /bin/sam
no need to muck around with environment vars or recompile anything
but if i do need to recompile something, it usually only takes a few seconds
@ekaitz_zarraga the other thing, which i haven't used yet but hope to:
the plumber is a pretty neat way to do something similar to MIME apps, except more powerful because you can easily bind a new plumber into a namespace, so eg. you could make right clicks in one acme window mean "look this word up in the dictionary" and "look up this symbol definition in the source code" in another
@grainloom yeah i found some of that in a video I watched yesterday but I didn't understand it very well. :D
@ekaitz_zarraga ye, the config format is a bit ew, one of my TODOs is to make an alternative that uses parser combinators or PEGs instead of regexes
@ekaitz_zarraga I’m mostly into it for Acme. I haven’t really taken the time to get acquainted with the whole ecosystem, but Acme feels sort of like a representation of the future we could have had from the past. Where many things computer rely on metaphor, Plan9 and Acme do something different — while other environments chase the “desktop” and office-y vibe, Plan9 and Acme lean on something more like a switchboard, where the interface is just about routing round and round.
Why Plan 9?
This is a great question @ekaitz_zarraga
Think about pipes.
They let you compose independent programs so that you can build complex transformations of a data stream.
The power of pipes comes from the simple and uniform interface they use: file descriptors.
But on Unix file descriptors are not that simple (see ioctl if you are brave).
Plan 9 let you do the same with file systems: you can stack a file server on top of another. This means that while in Unix you are constrained to connect programs through a data stream, in Plan 9 you can compose local services and remote ones transparently. And your local programs can access the whole stack in an uniform way.
Let me give you an example of why this could replace the shitty architecture of the Web.
Suppose you want to use a remote Meteo service.
Now you basically open the browser, visit a Web page, execute any js they want you to execute and send them your GPS position.
With Plan 9 you could export to the Meteo service a file server that let them draw on your screen and read your GPS position.
What's the advantage?
Well you compose the fs you are going to export! You can decide your GPS position by writing a file. And you can lie!
Or you can replace your screen with a fs that write on a PNG.
Or you might add an overlay fs that transparently log any request before executing it on the underlying fs.
And this is just a trivial example.
Today we use a primitive architecture to build distributed applications and you can easily see how hard is to mesh even just contents between different websites. And we let strangers execute whatever they want on our machines just because we can't think of anything better.
Plan 9 let you think better distributed architectures.
That's why I think one day a #Plan9 system will free us from this mess.
Why Plan 9?
@Shamar And how does it handle all this?
I've seen also that memory is abstracted like a fs and can be plugged from a remote machine and so on.
Why Plan 9?
Through a simple file system protocol, #9P2000 that you can use to create/export/mount/bind file systems and a consistent design where every service is controlled through a uniform API (a file system).
You can represent anything with a file system and once it's a fs you can both share access to it or mount it wherever you want.
Devsegment for example let you allocate a memory segment that can be also accessed (and thus exported) as a file.
Server run by the main developers of the project It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!