It was never meant to be. Just like UNIX initially, it was a research operating system. UNIX turned out to be an accidental runaway success, and many of Plan9's greatest ideas (like synthetic filesystems, bind/union mounts, its threading library, the 9p protocol, etc) found their way to more "practical" systems.
It also did have a commercial counterpart in Inferno (mostly finding use in products like telephone switches). But nowadays both remain mostly as toys for enthusiasts. You can get work done, if you're patient enough, and have the freedom to ignore things like Zoom calls or Excel files.
Plan 9 was also available commercially for some time.
My take is that plan 9 is basically a "pure" rewrite of a unix/posix OS, that takes many underlying principles of unix to their logical conclusions, without the taint of the incremental evolution of the existing systems, yet nevertheless informed by the lessons learned operating real OS systems. The incompatibility is why it hasn't moved forward, though many of the good ideas that are compatible with systems like bsd/linux have since been ported over.
It is really useful exercise to consider, in hindsight, how could we have built a better unix? And a bunch of really smart people participated and came up with some great ideas.
I'm interested in hearing what it's like to use it more seriously; my biggest doubts are around collaborating with people on conventional OSes.
If you’re interested in it, set it up on a Raspberry Pi, connect to it with drawterm from your daily driver. Experiment with adding a second machine, netbooting it as a CPU server etc. That way you’ll look at Plan 9 from the point of its strengths, not weaknesses.
https://awesomekling.github.io/Ladybird-a-new-cross-platform...
https://linus.dev/posts/ladybird-browser-year-in-review-2022...
Probably with web browsers the last 0.1% is 99.9% of the work.
But not giving up is the first step to success. I probably wouldn't use a browser in Go either, but as someone who has also been working on one of my own intermittently and knows how much opposition there is, I certainly encourage any attempts at increasing actual browser diversity.
as others mentioned, some people don't care about market share. the browsers I use day to day (Firefox, Chrome) are honestly pretty bloated and terrible, so I think others would agree that quality wise, users are starving for something better.
That said, shameless plug: if anyone wants a reasonably complete but immature ECMA262 parser in Go, I did do that. You can see how (un)finished it is here, with the wasm build: https://cleansheets.io/parser/ - source here. https://github.com/jchv/cleansheets
The truth is, I'd like to still work on this and even see if it's plausible to build a decent JIT without going too far into the weeds (I wouldn't tolerate a requirement on Cgo personally) but given that I never even pushed up an interpreter (I had an AST-based interpreter, but it was so ugly that I scrapped it :) I doubt I'll get anywhere near Opossum. Oh well.
It'd still be fun to at least get some pages rendering. Probably no chance in hell I'd ever get over to milestones I'd actually like to (like booting GMail for example.)
Did the author express that his intent was to capture browser marketshare? If not, he may not be delusional :)
This looks like an implementation from scratch which is fantastic.
and all of that inside single go file?
I think you'd make your life 10 times easier by splitting it better
Those components you listed could be in separate packages, but in a program this small that seems merely different, not better or worse.
Depends if you want to continue developing this (or any) project
If you want, then it makes huge difference, the faster you refactor it, then the easier the development will be.
If you want to stop putting effort into it, then there'll be no difference.
One file doing everything is almost always more annoying than stuff splitted correctly.
no, did you even visit the link?
I've seen them and point is still valid.
But it's certainly fun to make a browser! I happen to keep track of the open-source browser projects & resources here if anyone is interested:
https://github.com/DioxusLabs/taffy
I'll definitely take a look at your browser when I get some time.
I implemented the flow layout first mainly because I didn't know how difficult it would be to support flexbox. The flow layout just seems like an easy entry point back then.
At least I will enjoy checking out other projects in the meantime.
It wasn't an easy journey but I really enjoy it.
Ultimately everything can be done via software rendering as well, depending on how much one is willing to wait.
Note sure about WebGPU though.
X Windows did not come up with shared memory communication and hardware mapping extensions just for fun.
You are going to be sending commands to create the vertex buffers and upload textures (with the relevant data) and then most of your commands will be referencing those. Which is basically exactly what discrete GPUs already do anyway.
IIRC, unlike OpenGL, WebGL doesn't even allow you to do things in another way.
What X Windows did isn't very relevant because the use is very different. It'd only be somewhat comparable if the WebGL programs would treat WebGL as a way to stream new frame data for every frame (e.g. video). Also all X Windows communication with clients is done via commands sent through unix sockets which have similar performance to pipes.
I also run https://shithub.us, which is hosted from plan 9, and more or less needs plan 9 for push access. It uses the hjgit:// protocol for push access, which requires plan9 auth to establish the channel. The fact that there are so many repos up should give a hint at how active the community is.
This isn’t meant to come off as judgmental, but a real question. Plan 9 looks pretty neat but I would think that the lack of driver support alone would make it pretty difficult to run for anything.
But actually most older thinkpads are pretty well supported, you can even get Wifi with OpenBSDs drivers.
Building on mac was easy. It compiled fine with just go. But then to run it I needed:
git clone --depth=1 https://github.com/9fans/plan9port.git cd plan9port ./INSTALL
Good luck to them - we need more actual engines rather than the modern “new browser” model where it’s just whatever Google want in chrome.