What does HackerNews think of CogNOS?

A Cog VM in the bare metal using the Nopsys library

Language: Smalltalk

There is the more recent CogNos/NopSys [1,2] "an evolution of the SqueakNOS project" "a Smalltalk virtual machine running on bare x86 hardware", but that project has also been inactive for several years.

1. https://github.com/nopsys/CogNOS

2. https://charig.github.io/assets/papers/SCDE-DLS.pdf

A slightly more updated (2018) revival of the same project is available here: https://github.com/nopsys/CogNOS
A recent start on this could be the NopSys/CogNos project, which built a standalone Smalltalk system on x86 a few years ago. There are GitHub repos[1,2,3] and a paper [4] where the authors write "there would certainly be much more work needed before one could consider deploying our system." The project seems to be inactive now.

1. https://github.com/nopsys/nopsys

2. https://github.com/nopsys/CogNOS

3. https://github.com/nopsys/SmalltalkNOS

4. https://charig.github.io/assets/papers/SCDE-DLS.pdf

The nopsys/CogNOS project is more recent (commits in 2018): "CogNOS is actually a third iteration of the orginal SqueakNOS project ..."

https://github.com/nopsys/CogNOS

There is a conference paper about it, also from 2018:

https://charig.github.io/assets/papers/SCDE-DLS.pdf

> I wish there was a nice wrapper dedicated to abstracting hardware support

There is NopSys, about 3500 lines of C and 600 lines of assembler for booting, accessing device registers, and responding to interrupts. So you can write the rest of the OS on top of that. CogNOS is a Smalltalk system written on top of NopSys.

https://github.com/nopsys/nopsys

https://github.com/nopsys/CogNOS

https://charig.github.io/assets/papers/SCDE-DLS.pdf

There is an almost all-Smalltalk bare metal system for X86, CogNOS. It runs on top of NopSys, about 3500 lines of C and 600 lines of assembler for booting, accessing device registers, and responding to interrupts. But the file system etc. are in Smalltalk.

https://github.com/nopsys/CogNOS

https://charig.github.io/assets/papers/SCDE-DLS.pdf

> However, one question that I have about Smalltalk and historical Lisp machine environments is whether there has been any work done on implementing support for other languages

Today's open source Smalltalk VMs are developed in and with Smalltalk itself. To do this, they use a subset of Smalltalk that can easily be translated to C called Slang [1]. Additionally, there are several parsing and parser generator tools designed to allow people to compose DSLs or other languages that can run in the Smalltalk context, including OMeta [2] which let to Ohm [3], PetitParser [4], and SmaCC [5].

One could also imagine a mechanism by which a "Smalltalk Machine" could have an optional method for executing instructions and interacting with memory (at a low level) that is similar to the way the C world wants, and to compile C code into this format -- imagine it encapsulated by some special Smalltalk context object or something.

> There's something very appealing about these "turtles-all-the-way-down" environments where all of the objects in the system are live and can be inspected by using a REPL, and how system behavior can be changed on-the-fly.

I am of the belief that a whole new personal computing system -- from the hardware on up -- designed around these principles would be of great benefit to all. It would run directly counter to the current culture of computing, which says that there are developers and users (scribes and plebs!) and nothing in between. In fact, the people who had the greatest qualitative input into the development of personal computing specifically thought that users would be programmers, and therefore programming would need to be something a bit different than it had been up until that time, and so would the computing environment and all the rest (some of these people invented Smalltalk).

The major impediments to doing such a thing are time, money, and worldview. Most developers today, or "computer people" who should presumably be in the know, likely aren't very familiar with, if at all, these environments. There is a very ingrained idea about "how things should be done" that is mistakenly equivocated with "how things have to be done." There is also limited funding for these endeavors. The business world is not set up to make these kinds of leaps these days (short-termism and shareholder primary have dominated enterprize thinking since the late 70s). I've said before on here that FOSS is also not the solution: you need long periods of time and lots of money to make something like this (as history shows), and people doing things in their free time isn't going to cut it. Case in point: FOSS is for the most part premised on Unix, because that's what was around and available for free when the movement started. All "new OSes" are some form of Unix because it is impossible for people to think outside of that context given the limited resources available to them.

I will end this rant (sorry) with a couple of refs. The first is to the CogNOS project, which was at one point an effort to get the OpensmalltalkVM running on bare metal [6]. I do now know the current status. The second is to Lukas Hartmann's Reform laptop project. Notable for being an entirely open hardware and software platform, he began the project because he wanted to build a custom machine for his own Lisp OS called Interim [7]. When I last asked him about it, he said that he still has a goal of getting Interim to run on the machine. But, of course, it's taken him years of work to even get to the point he's at now.

[1] http://wiki.squeak.org/squeak/slang

[2] https://en.wikipedia.org/wiki/OMeta

[3] http://wiki.squeak.org/squeak/4878

[4] http://scg.unibe.ch/research/helvetia/petitparser

[5] https://github.com/SmaCCRefactoring/SmaCC

[6] https://github.com/nopsys/CogNOS

[7] https://github.com/mntmn/interim

Yo I cannot reply to some older comments you've made that I found, but I thought you'd be interested to know about this [1].

These guys are working on a version of the Cog VM that will run on its own, and also working on the relevant Squeak / Pharo libraries that could use it (they need the equivalent of "drivers" — these dudes are even implementing tcp in Smalltalk).

Check it out. Let me know what you think.

[1] https://github.com/nopsys/CogNOS