Home

Awesome

TLDR

What would a Dynabook (a la Alan Kay) look like from the inside? Here is the result of one user's system, lived in and honed for over a decade.

Overview

NB. Much of the following is an export of the class comment of BaselineOfDynabook. When viewed from inside the system, it is live, dynamic and beautiful. "Just the markdown" only gives you a taste. We suggest you dive in and view the documentation as it was intended as quickly as possible - it will be more enjoyable and productive!

Alan Kay's Dynabook [2] dream is often explored from the perspective of creating such a system. But what would/could a Dynabook look like after actually being lived in for a long period. What sorts of tools and services would appear? How would they interact?

You can start by exploring my core components (start with the class comments of the BaslineOfXyzs):

BaselineOfDynabook coreBaselines

What is a Dynabook?

Buckle your seatbelt. Here's an excerpt from my longer blog post "Programmers: You Probably Don’t Know What a Computer Is", about Smalltalk, the environment powering this system:

You may not realize it, but you have opened a portal to some of the greatest minds in the history of our industry. In the beginning, for many of our heroes — Doug Engelbart, Alan Kay, Seymour Papert — computing was about the possibility of evolving the general level of human thought for the benefit of mankind. Effective critical thinking is vital to modern life e.g. the proper functioning of democratic governments. Yet traditional media have been ineffective at improving our thought on a large scale. Today, we’re mostly glorified “caveman with briefcases”, reacting to the same human universals as our distant ancestors — Fantasies, Stories, Superstition, Religion/Magic, Vendetta.

So what does this have to do with computing?!

I’m glad you asked :) In 1972, Alan Kay envisioned a “dynamic medium for creative thought” which he called a Dynabook [1]. It was an answer to the problem described above — a computer to support and guide minds to the level required to overcome our uglier instincts, and replace them with our highest ideas, like Equal Rights, Democracy, Slow Deep Thinking, Legal System over Vendetta, Theory of Harmony — ideas which do not take seed on their own, but must be actively nurtured.

So what does this have to do with programming?!

I’m glad you asked that, too :) Smalltalk is interim [2] Dynabook software! You have in your hands, not a programming language, but a live, dynamic, turtles-all-the-way-down environment designed to provide “support for the creative spirit in everyone”.

More practically, Smalltalk is a programming tool that allows productivity unimaginable in most systems. And, if you put in enough time and effort to actually think in it, it will help you program better in any language you use. But, I think it would be a great waste if you left Smalltalk “a better programmer”, when the questions before you are:

From PARC's 1977 paper [1]: The Learning Research Group... is concerned with all aspects of the communication and manipulation of knowledge. We design, build, and use dynamic media which can be used by human beings of all ages. Several years ago, we crystallized our dreams into a design idea for a personal dynamic medium the size of a notebook (the Dynabook) which could be owned by everyone and could have the power to handle virtually all of its owner's information-related needs. Towards this goal we have designed and built a communications system: the Smalltalk language, implemented on small computers we refer to as "interim Dynabooks." We are exploring the use of this system as a programming and problem solving tool; as an interactive memory for the storage and manipulation of data; as a text editor; and as a medium for expression through drawing, painting, animating pictures, and composing and generating music.

Components

The following projects are the core components:

Icon Attribution

Our GTooklit Home Section uses the following icons from Noun Project:

References

  1. "Personal Dynamic Media"
  2. Smalltalk: Design Principles Behind Smalltalk

Installation

In GToolkit (preferably) or Pharo (v. 10 best supported at time of writing), do the following:

[
EpMonitor current disable.
[ Metacello new
	baseline: 'Dynabook';
	repository: 'github://seandenigris/Dynabook';
	"onConflict: [ :ex | ex allow ];"
	load ] ensure: [ EpMonitor current enable ].

] fork.

N.B. you only have to do the outer fork if on GT and you want the UI to stay responsive during the load.

Disclaimer

This project is part of a ~20 year (as of 2021) exploration of the Dynabook idea (a la Alan Kay). It's intensely personal and opinionated and I've open sourced it due to repeated requests. Use at your own risk. Any part may change at any time. I'm happy to give support when I have time in the form of explanations, but do not expect me to implement any particular feature, or even accept PRs if they don't feel right. That said, I'm happy to have anyone along on the journey :)

License Explanation

The license is MIT. However, my original intent was to release my Dynabook libraries under a copy far left license (free use for cooperatives, but negotiated licenses for those utilizing paid labor for profit). I love sharing any work I do, but am disgusted by the prospect that (especially multi-billion-dollar) corporations will exploit my work for free, especially toward ends with which I don't philosophically agree. However, after many discussions with colleagues, it appears that at this moment there is just no way to protect one's work from parasites without effectively keeping it from everyone. Even GPL, which doesn't even come close to "solving" the problem stated above, seems enough to put off most people. In closing, now that my intentions are clear, I request the following from any entity utilizing wage labor or selling for profit who uses my work:

  1. Attribution
  2. Pay for what you use, or don't use it

While there may be no legal means for me to enforce the above given that this code is released under MIT, my intentions should be clear; violate the above at risk to your own conscience.