So are there any research or old operating systems around whose entire base userland is built around a text editor? That strikes me as something that could be pretty fascinating to use.
I think Genera qualifies. It is an IDE and an operating system for the Lisp machines.
Im with mulander on Genera. Check out this list of capabilities:
There’s a few that you still can’t quite do in UNIX unless I missed some new tech. For instance, whole thing is written in LISP with same language, IDE, and source loaded. If your app crashes in OS, (I was told) it will pause instead of crash, IDE will load OS source, you’ll see it with running data, you can hotfix the data or code into running memory, and then go back to your app to rerun it at that point in execution.
That was mind boggling to me as a Windows and early Linux user. It’s also the kind of advantage that led to sections of the UNIX Hater’s Handbook. I mean, going from that to crashing, UNIX boxes and early C debuggers must have sucked. ;) Not much work on replicating Genera but Mezzano on GitHub is a new LISP OS. Might be a building block.
EDIT: Corrected name of LISP OS thanks to an email from a reader.
Genera definitely seems to be it, though I’m curious if that live debugging feature could be extended to other languages than the source os? That would be a definite prerequisite for a modern version.
This doesnt say much about the userland, but it’s another kind of lisp machine that seems to be based on scheme instead of common lisp. The blog has a lot of interesting information and there was even a kickstarter (failed it seems) at one point! One of the most interesting points is that it mentions that much of the debugging facilities available to lisp can be extended to other programming languages running on the machine.
Oberon, while not displaying the same debugging capabilities, does have a very interesting user interface that makes me think of stuff like neovim’s or emacs embeded terminal.
3L is on my list of stuff to read tonight. You can bet I was thinking about Oberon as I wrote it since it’s type-safe, memory-safe, efficient, and compiles fast. It’s just the live debugging and update that it didn’t have. A runtime would be necessary to handle that. I’m guessing it would be best to ahead-of-time compile everything with an interpreter or kernel that runs that. Then, one can build the Genera capabilities into the latter leveraging fact that Oberon already compiles fast. The two projects that come to mind most as prior art are Juice (love it) and SPIN OS (interesting):
Sadly, I had to link to the text of the Juice project from Github since the original site and Wayback Machine archive are now gone. It was in Wayback as recent as maybe last year but University of California Irvine had them delete it. All the linked pages are gone except one at the top that’s just an intro. The others had deeper analyses. Good things keep disappearing…
Thats a real shame about the pages on juice disapearing… It seemed like a really interesting read. (Though spirit-of-oberon is the best github org name). I’ve added the spin os pdf to my reading list.
I’ll do a quick summary. Java let you do apps in interpreted, heavy sandbox with only binary checks. Slow as Christmas. Juice designed as alternative with these benefits:
Used free, simple language that compiled super-fast even from source.
Avoided binary so type information was retained for security checks or optimizations.
Instead of source, they used a compressed AST. A smart, middle ground that let them keep key info without unnecessary bytes of full source. The AST was sent to browser to be checked and compiled by modified, Oberon compiler.
It ran fast. Also, memory-safe with a GC.
Great project. Imagine how much better our web apps would be today if they were Juice apps instead of JS apps.
It’s not actually that way, but Plan9 is the closest thing that comes to mind, where ACME can do a lot with a mouse and the like.
https://github.com/dym/movitz and https://github.com/froggey/Mezzano might be of interest as well.