Bring the best of Smalltalk and JavaScript

What if NodeJS loves Smalltalk and Smalltalk loves NodeJS?

Picture this…

You need an async foundation for a backend. It should connect to other systems via several libraries. You can’t develop those libraries on your own, much less maintain them in a production-ready state.

The stability of the JavaScript virtual machine is a requirement for you.

There are lots of unknowns in your project. But you know one thing for sure: all the tools available for JavaScript backends would be highly valuable.

Well, good news: NodeJS with npm and its gazillion packages available will has you covered.

Now here is the thing, you like JavaScript and you know it's great but you have seen better development tools. You’ve had way better software development experiences. Like coding with minimal yet humane syntax on workspaces, inspectors and hot debuggers. Debuggers that allow live-coding and going back, forth and restarting in the context of a thread.

All the best that Smalltalk can offer.

To be fair, there are fractions of that in different modern technologies now. For example, Apple is about to release Playgrounds and it will deliver a Smalltalk-Workspace-like experience on macOS and iPad. But truth is that Smalltalk has the whole lot already.

Wouldn’t it be cool if we could use the best in JavaScript with the best in Smalltalk today?

Well check this out:

SqueakJS is a Squeak image that runs on a browser, thanks to Bert Freudenberg's amazing work. He implemented the Squeak primitives in the JavaScript VM.

Wait, what?! Yeah, really. And the squeak images open with a click like they never knew!

But then, it occurred to me that all the heavy lifting is already done for something exciting. We can making this run on NodeJS and have SqueakJS running on the backend.

So this is an idea I want you to meditate on:

  1. SqueakJS runs on NodeJS with its impressive performance on networking frameworks.
  2. Squeak has a library that can inspect JavaScript instances and hot-evaluate things in their context
  3. You can hot-debug JavaScript from the remote tools.

Gee, you could have a Seaside web application being served with NodeJS I/O power, how crazy is that?

Now back from dreamland to Earth: neither 1, nor 2 nor 3 exists yet. Only partial progress of 1 currently exist because I’ve started with it. I’m moving snail slow with this as a pet project. Actually in the last few weeks I was stuck. I wonder if anyone out there sees value on this too, and wants to help it to move forward.

So again, what if we do things and it turns out that NodeJS loves Smalltalk and Smalltalk loves NodeJS?

Things you can do now: