Comment by linguae
13 hours ago
My dream is to work on an operating system that at least gets us to the 1990s and 2000s when it comes to research ideas.
I have a soft spot for the Smalltalk-80 environment and Lisp machines. They had a single address space. In my opinion, the two most interesting things about these environments are (1) their facilitation for component-based software based on live, dynamic objects, and (2) the malleability of the system, where every aspect of the system can be modified by the user in real time.
Of course, a critical downside of Smalltalk-80 and Lisp machine environments is the lack of security; any piece of code can modify the system. There are two solutions to this that I'm thinking about: (1) capability-based security for objects in the system, and (2) work on single-address space operating systems that still have memory protection (Opal was a research system that had this design; see Sharing and Protection in a Single-Address-Space Operating System [Chase et al. 1994]).
One of the nice things about Lisp is its metaprogramming facilities, from macros to the metaobject protocol. Metaprogramming makes it feasible to implement domain-specific languages that make expressing problems more aligned to their domains.
During the late 2000s and early 2010s, Alan Kay's Viewpoints Research Institute had a project named STEPS that investigated the pervasive use of DSLs to implement an entire desktop environment. They did not use Lisp as a substrate, but they did use OMeta (https://tinlizzie.org/ometa/) for handling parsing expression grammars (PEGs), which are used to describe many of the systems in STEPS. Two DSLs that immediately come to mind are one for describing the 2D graphics system and another for describing TCP.
So now I've described my dream substrate: a single-address operating system with capability-based security, where each subsystem is expressed as a live object, ideally coded in a DSL.
Now comes the interface. The programmer's interface would be similar to Smalltalk-80 and Lisp machines, with a live REPL for interactive coding. All objects can be accessed programmatically by sending messages to them. The end-user interface would be heavily based on the classic Mac OS, and applications would conform to human interface guidelines similar to System 7.5, but with some updates to reflect usage patterns and lessons in UI/UX that weren't known at the time. Application software would be similar to the OpenDoc vision, where components can be combined based on the user's wishes.
The end result sounds like a synthesis of various Apple projects from the late 1980s until 1996: component-based applications backed by a live object system with capability-based security.
This is my dream and is a side project I'd love to create.
If you're okay with a System 6 appearance, I've already made one <https://github.com/jjuran/metamage_1/tree/master/68k/modules...>, for Advanced Mac Substitute <https://www.v68k.org/ams/>.
I do appreciate Alan Kay's thinking, in particular his talk "Normal Considered Harmful" <https://www.youtube.com/watch?v=FvmTSpJU-Xc>
My own high-level language, Varyx, has somewhat LISPy internals and is very dynamic — for example, you can annotate a variable with a type that's determined only at run time — and has an eval() that insulates the caller from the payload and vice versa. You can sequester mutable state within a closure, which can't be cracked open. Using an experimental Varyx build with some bindings for Apple's Core Graphics API, I wrote a script that rendered an arrow cursor (which I donated to the ravynOS project).
Perhaps we should talk. :-)
I share the sentiment, which is why someone I ended up gravitating around technologies somehow related to it like Java, .NET, and the related languages on their ecosystems.
Also why despite not agreeing how Google went down with Java in Android, I appreciate their approach, because this kind of platforms apparently only get adoption with such kind of hard pushes, otherwise it would be yet another tiny UNIX clone.
Ironically is probably the closest we have on the market from Inferno/Limbo ideas on a mainstream OS.
So … is this MallowOS?