An introduction to Morphic: Self's UI toolkit
sin-ack.github.io
sin-ack.github.io
When I was a student at Brown U. CS (same time as the much more accomplished Bryan Cantrill), the department had a good relationship with Sun, so students got to play with cool R&D stuff, like Self and Oak (Java).
As I've mentioned before on HN, the research around Self did a few neat things we use today, and is worth looking at:
* JIT compilation and runtime optimization,
* prototype-based object model (and not just this, which we then saw in JS, but Self did this when OO was hot and it seemed everyone thought class-instance was the way to go, and only recently has mainstream PL been moving away from class-instance), and
* the direct-manipulation morphs world, which seemed to go back to some of the promise of the PARC Smalltalk work (before UI thinking turned "and here's some examples of the kinds of interactive graphical objects we could have" to "these is the set of approved standard business form GUI widgets by which all shall abide").
Those are the ones that I noticed and recall, but I wouldn't be surprised if there were more.
If you want to play with morphs worlds today, besides what's in Self, I think Squeak has seen a lot of activity. In any case, it's also worth at least reading some of the seminal research papers around Self.
BTW, the text aliasing in the screenshots didn't look that sharp on a CRT. :)
Wow, now that is what I call a blast from the past - the last time I sat in front of a CRT was ... roughly 15 years ago. (-:
In any case, the main issue of these platforms is a bit like explaining monads and other complicated stuff.
To really get the point of how those systems work, a person needs to invest time into the system until it clicks, and no matter how much we try to put the experience into words, there is only so much the audience is able to grasp, assuming it actually cares to pay attention to.
imo, the Self/Smalltalk vision was just hard to sell to people in the 80s/90s since it was so ahead of its time, with no easy bridge back to the world people were building their existing software in. It might even be hard to sell it today. People built their apps with an existing toolchain and a language they already knew. To adopt the Self/Smalltalk vision largely meant ditching all that to replace your language, your OS, and your toolchain at the same time, for a bet on the claim that a dynamic language was somehow fast enough.
Instead, we piecemeal evolved into a worse world where Javascript apps run in a worse OS (the browser) and Python apps run in a lower level OS that needs to transport itself in a worse image model (Docker). But, it was easier to adopt from what came before. I can't say I'm happy about it, but at least the vision of Self and Smalltalk caught on.
I used Smalltalk/V for some university projects and then there was Visual Age for Smalltalk.
However then Java happened and most of the vendors pivoted into it.
I still switch to the Smalltalk like browser on Eclipse from time to time.
I think Pharo, as a fork of Squeak, has that as well. There's even a MOOC at https://mooc.pharo.org/
It powers Snap![1] which is the spiritual successor of Scratch 1.4 [2].
[0]: https://github.com/jmoenig/morphic.js/
- https://www.youtube.com/watch?v=vjVbxH1kdkQ - https://www.youtube.com/watch?v=HqISKf7vGuw