I'd also like to thank you for turning me on to NeWS et. al. ages ago in another forum. Blew my mind because at the time I only really knew about MS Windows and X.
There was an X11 server for Lisp Machines! Not sure who wrote it, but it was probably written inside or at least nearby the X Consortium, and I remember Robert Scheifler used it regularly.
"For example the TI Explorer Lisp Machine came with an X11 server written in Lisp. On my Symbolics Lisp Machine I used the usual MIT X11 server written in C - this was possible because the Symbolics Lisp machine had a C compiler." -lispm
John Steinhart wrote XTool, a nice snappy reimplementation of X11 on top of SunView! ;)
>XTool was very small and
fast compared to the X sample server because I wrote the server from scratch.
I think that I'm the only person to write an X server outside of the X
Consortium. One of the things that I learned by doing it was that the X
Consortium folks were wrong when they said that the documentation was the
standard, not the sample server. There were significant differences between
>The only really worthwhile thing about X was the distributed extension
registration mechanism. All of the input, graphics and other crap
should be moved to extension #1. That way, it won't be mandatory in
conforming implementations once that stuff was obsolete. As you probably
know, that's where we are today; nobody uses that stuff but it's like the
corner of an Intel chip that implements the original instruction set. As
an aside, I upset many when working on OpenDoc for Apple and saying the
same thing there.
>The atom/property mechanism allows clients to allocate memory in the server
that can never be freed. Some way to free memory needs to be added.
>The bit encodings should be part of a separate language binding, not part
of the functional description.
>Had he done some real design work and looked at what others were doing he might
have realized that at its core, X was a distributed database system in which
operations on some of the databases have visual side-effects. I forget the
exact number, but X includes around 20 different databases: atoms, properties,
contexts, selections, keymaps, etc. each with their own set of API calls. As
a result, the X API is wide and shallow like the Mac, and full of interesting
race conditions to boot. The whole thing could have been done with less than
a dozen API calls.
So that might go some ways to explaining why building your own isn't a walk in the park.
If you're interested in visual programming with a powerful Scheme-like language with first class functions, closures, special forms, macros, and even continuations so you can define your own control structures, check out Snap! (The exclamation mark is part of the name, so it's easy to get excited about Snap!)
Snap was written by Jens Mönig and Brian Harvey, who know what they're doing! ;)
Y Combinator: https://i.imgur.com/cOq8tvR.png
A* Pathfinding Demo:
https://snap.berkeley.edu/snapsource/snap.html#present:Usern... (press the diagonal arrow button at the top to see the block code in the development environment!)
Snap! is a visual programming language inspired by Scratch. Run Snap! in your browser at http://snap.berkeley.edu/run The IIIA1 in the title means that this is the first tutorial corresponding to Chapter III, Section A of the Reference Manual at http://snap.berkeley.edu/SnapManual.pdf
Snap! Tutorial IIIA1: Make a block
Snap! Tutorial IIIA2: Custom Blocks with Inputs:
The Basics of Snap!
Prototypical Inheritance in Snap! (no audio) https://www.youtube.com/watch?v=lvlWvHgfrlw
Editing Formulas in Snap! (no audio)
† X Window System.
I've already starred the repo and when I have time I'll search my Evernote because I know there a few notes there from projects that would fit this collection.
To shorten it, just call it X. Eschew 'X Windows' -- there's no such thing.