Next: , Up: Beginnings   [Index]

1.1 Historical Context

One major idea in software is that programming is merely giving a computer a set of instructions to solve some problem. In this point of view, the only value of software is to achieve a result, and therefore, a piece of software is only as interesting as having that problem solved. Furthermore, as programming is not interesting by itself, it is left to a professional guild with a specialized technical knowledge of how to write software, and the rest of the world just ignores it.

Our focus is on one thread in the history of powerful ideas which give a different lens through which to explore software development. The historical development of these ideas differs from the just solve a problem view. We think this is worth revisiting.

The first clear vision of an automated information processor to augment our collective memory, to find and share knowledge – indeed to transform the data explosion into an information explosion, and then into a knowledge and understanding explosion – was called Memex and described in the Vannevar Bush essay “As We May Think” in 1945 3. Bush’s description of the possibility of developing a Memex processing system to help individuals access, evolve and capture knowledge for our collective benefit inspired many later thinkers and inventors in the development of personal computers, networks, hypertext, search engines, and knowledge repositories such as Wikipedia 4.

As computational machinery evolved from large, single program at a time mainframes, into timesharing mainframes, and into minicomputers, another area of insight was developing with models of how humans learn 5. People began to talk of human-computer symbiosis. Alan Kay conceived the idea that computer software and computer programming could become a new medium for expressing thoughts and knowledge. The ability to express ideas in this new medium would be the new literacy. Every person should learn to read and write in this new digital medium, and would have available their own dynamic book, a Dynabook 6 7 to accomplish this.

Very readable accounts of historic developments are Alan Kay’s papers “The Early History of Smalltalk” 8 and “What is a Dynabook?” 9 in which he notes The best way to predict the future is to invent it. Realizing the Dynabook vision required significant advances and mutually supporting development of hardware and software. The original development took place at the Xerox PARC research center in the 1970’s. The first interim Dynabook hardware was the Xerox Alto, generally considered the first personal computer. The software system was Smalltalk. The design of both was guided by the objectives of making Personal Dynamic Media and the Dynabook real. The final version of Smalltalk built at Xerox was Smalltalk-80.

Given the relatively weak capabilities of computer hardware at that time, implementing this vision presented real challenges, and much creativity was called for. Today, smartphones, tablets and laptops do have the hardware capabilities a Dynabook requires. However, the same advance hasn’t happened for the medium of personal software.

In 1981 Dan Ingalls, one of the early Smalltalk inventors, wrote in his article “Design Principles Behind Smalltalk” 10 a number of principles that still guide us today. Among these:

Personal Mastery. If a system is to serve the creative spirit, it must be entirely comprehensible to a single individual.

Reactive Principle. Every component accessible to the user should be able to present itself in a meaningful way for observation and manipulation.

With the commercialization of software, the trend has been to give people “shrink wrapped” applications which are sealed off and written by professional software developers. One may customize an application by changing “user settings”, but there is no way to see into or change deep capabilities.

In keeping with the ideal of personal media literacy, we believe that everyone should have full access to the software that runs our systems. Understanding and exploring computer systems requires writing software in ways that can be read and shared.

The thinking change in problem solving can shift from What can I do here with what I am presented? to asking What tools do I need to be successful here? and then building them to be ever more successful.

This way of thinking about software systems is important to us.

For this reason, Cuis is a kernel Smalltalk system which is still rather close to Smalltalk-80. The Cuis-Smalltalk goal is to be a small, coherent Smalltalk development environment that, with study, is comprehensible to a single person.

As we experiment with and evolve Cuis, this goal is carried out by removing everything possible from the base system which is not essential, and by having a composition strategy which allows one to write or add any features as needed. As one gains understanding of the software kernel or core, one only has to read and learn from each additional feature at a time to understand the whole.

Modern, open software environments are highly complex. Cuis is an attempt to remain oriented and able to discover patterns without being lost in a large wealth of possibilities which one does not completely grasp.

It is said that one understands the world by building it. Developing fluency and depth in a new medium takes time and practice.

We invite you to become fluent and look forward to sharing with us what you have built.

First, however, we must start with some of the mechanics.

As the saying goes “A journey of a thousand miles begins with a single step” 11.

Let’s step forward together.




Notable early milestones in this line of development were Ivan Sutherland’s Sketchpad (1963), the RAND tablet (1964), and Doug Engelbart’s NLS ("oN-Line System") (1968). Later developments include Ted Nelson’s Xanadu, the Apple Macintosh, the World Wide Web, smartphones and tablet computers.


Early notables here are J. Piaget, J. Brunner, O. K. Moore, and S. Papert.


“A personal computer for children of all ages”(1972)


“Personal Dynamic Media”(1977)





Next: , Up: Beginnings   [Index]