The Great Works of Software
Is it possible to propose a software canon? To enumerate great works of software that are deeply influential—that changed the nature of the code that followed?
Canons emerge over time, as certain works gain in critical appreciation. But software is mutable stuff, quick to obsolesce. Only banks, governments, and your parents run the same programs for more than a couple years at a time; the rest of us are forced to upgrade to new versions every two years or we risk being regarded as backward-minded hill people.
As far as I can tell, no truly huge world-shifting software product has ever existed in only one version (even Flappy Bird had updates). Just about every global software product of longevity grows, changes, adapts, and reacts to other software over time.
So I set myself the task of picking five great works of software. The criteria were simple: How long had it been around? Did people directly interact with it every day? Did people use it to do something meaningful? I came up with the office suite Microsoft Office, the image editor Photoshop, the videogame Pac-Man, the operating system Unix, and the text editor Emacs.
I realized that each one of these technologies set out to help people do something but consequently grew and changed over time. Each ultimately provided a way for large groups of people to talk about and think about very difficult problems:
- Microsoft Office: How do we communicate about work?
- Photoshop: How do we create and manipulate images?
- Pac-Man: How do we play?
- Unix: How do we connect abstractions together to solve problems?
- Emacs: How do we write programs that control computers?
Computer people often talk about products. But each of these five have come to represent something else—an engagement with hard problems that are typically thought to be in the domain of philosophy, literature, or art, rather than programming. This software doesn’t just let people do things; it gives them a way to talk about and share what they did.
Other people have made similar lists. Matthew Kirschenbaum, a professor of English at the University of Maryland, wrote in Slate about influential programs [see note] (text editor Wordstar, programming environment Hypercard, image editor Photoshop, information manager Lotus Notes) in a list he made last July. Back in 2007, PC World published a list of the best tech products of all time, leading off with the first commercial web browser, Netscape Navigator, and ending at #50 with the Northgate Omnikey Ultra keyboard. Recently here on Medium Max Dunn published an appreciation of the desktop publishing program Adobe InDesign.
So Slate used “influence” as its criterion; PC World, the more nebulous criterion of “bestness.”
I propose a different kind of software canon: Not about specific moments in time, or about a specific product, but rather about works of technology that transcend the upgrade cycle, adapting to changing rhythms and new ideas, often over decades.
Ten years ago I watched a six-year-old girl catch a misspelling in something she was writing on paper with a pen. She went and got a red pen and underlined the misspelled word with a wavy line, just like Word does.
I distrust Microsoft Office, because it is a bear to use and expensive, and it has destroyed many drafts by crashing. Yet greatness is not the same as goodness and I must admit that it is a great work of software—powerful, omnipresent, and woven into the culture. It was first announced by Microsoft in 1988, but components had been around far longer—Microsoft Word since 1983. So the original ideas inside of Office have been around for 30 years.
For all that people discuss teaching kids to code, or how the Web gives people a voice, Microsoft Office is the most empowering software in the world. Word is used to write memos and novels; PowerPoint is used to sell ideas and teach classes; and Excel is used to share budgets for freelancers and giant companies alike. These tools are used to do schoolwork, and to set up billion-dollar deals. While their hegemony is no longer total—Google Docs and the like are nibbling at Office’s heels—the programs in the suite remain the mass instruments of economic power. To use anything else invites suspicion. Who wants to be the person who sends a spreadsheet that doesn’t open in Excel?
Office is emphatically not a singular thing. It changes with Microsoft’s perception of the market. There are many versions for home, office, or web. Sometimes it includes a database program called Access, sometimes it doesn’t. Some bundles might include other tools like Publisher (desktop publishing), Project (project management), and Visio (diagramming). A fairly complete history is available at Wikipedia if you are so inclined.
While Office is a testament to the power of bundling software, the integration between the different applications is still awkward. Decades in, it’s still a risky move to paste a spreadsheet into a word-processing document; to do that gives even the fastest computer pause. The boundaries and borders between Office’s programs are difficult to cross. In theory, one can turn a Word document into a PowerPoint presentation. In reality, well.
What Office provides is a language for doing office things. You don’t go in front of an audience without a PowerPoint deck. Businesspeople “live” in Excel; its language (it actually is a crypto-programming language) has become the language of money and budgets. People who do work with symbols and language to make a living organize their thoughts into the containers and systems that Office provides. Office is not so much a software product as a dialect that we all speak as we proceed about our labors.
Development on Photoshop started in 1987, and while it too exists inside a suite of tools (the Adobe Creative Suite) that includes a huge variety of software products for everything from film production to music production to Flash animation creation, it is Photoshop that is part of the cultural lexicon, today a verb. None of the other applications in the Creative Suite is as prevalent (no one asks, “Is that Illustratored” or “did you InDesign that?”).
To photoshop something is to manipulate an image, sometimes with the intention of making the subject of the photo more aesthetically pleasing than the original source image. It is of particular concern when it comes to women’s bodies; Photoshop has become the tool that we use to trim fat and reduce the effect of aging. Only pregnancy has swelled more breasts.
Photoshop itself is basically an enormous collection of ideas about images. The Photoshop file format, the way that its files are arranged and stored on disk drives, is a potted history of everything people have ever thought about images and computers, a fascinating hellish palimpsest. Here’s how one programmer described it:
Trying to get data out of a PSD file is like trying to find something in the attic of your eccentric old uncle who died in a freak freshwater shark attack on his 58th birthday. That last detail may not be important for the purposes of the simile, but at this point I am spending a lot of time imagining amusing fates for the people responsible for this Rube Goldberg of a file format.
Photoshop also remains the way that professionals communicate about the appearance and behavior of web pages. There are many ways to specify how web pages look, many tools that people use, but more often than not, when it’s time to design a web page or banner ad, it is Photoshop bouncing in the dock.
Thus, like Office, it is the de-facto standard, the tool that gives people a language (bounding box, crop, blur, channel ops, layer) for talking about digital images. It’s more than a quarter-century old and it is a verb. It belongs in the canon.
Pac-Man was created in 1980, written by Toru Iwatani. It’s a small game, running on laughable hardware. But it gave us a shorthand for a specific kind of play—iconographic, silly. The gameplay of Centipede was better, but the story (a gnome that shoots bugs) was vague; the gameplay of Missile Command crawled but the narrative was incredibly bleak.
Pac-Man was a chase, a Tom and Jerry cartoon. It presented a perfect inversion where, upon eating a certain kind of dot, the prey became predator. It took over a year to develop, and a great deal of thought went into the player’s psychology, the fact that they would empathize with the yellow circle of Pac-Man.
Here’s Iwatani in 1986, talking about ghost attacks:
When a human being is constantly under attack like this, he becomes discouraged. So we developed the wave-patterned attack–attack then disperse; as time goes by the ghosts regroup and attack again. Gradually the peaks and valleys in the curve of the wave become less pronounced so that the ghosts attack more frequently.
The mechanics of the game aligned to some primitive reptile-brain sense of narrative. Run eat run eat run eat KILL EAT KILL EAT KILL EAT KILL run eat run eat run. The music burrowed into the mind, so much so that a whole generation can hear the theme music…
—Pac-Man Theme Song
Pac-Man machines ran on solid-state technology; they had no moving parts and operated for decades. The game itself seeped out into every aspect of pop culture: wind-up toys, watches, rip-offs galore, plush toys, a terrible animated cartoon, featuring a Pac-Baby. It even showed up in Bloom County.
It was in every way a fad, but nonetheless people kept plowing quarters into Pac-Man machines for years; they became one of the steadiest earners at arcades. Namco, the game’s distributor, today offers a collected version of Pac-Man games and its derivants, like Ms. Pac Man, bundled together into something called “Pac-Man Museum”—its place in the canon has become part of its marketing. Echoes of its gameplay show up anywhere a joystick is used. And the image of a pie missing a slice has become a universal symbol for “video game”; people dress up and run around in Pac-Man costumes. And it’s remained part of the culture for 34 years.
Bell Labs Unix
Unix is an operating system, which means it’s a set of programs that run other programs on a computer. It’s part of what’s inside your Macintosh computer running Mac OS X, and it’s what runs many of the servers that you access on the web. It’s also inside billions of phones. The open-source operating system Linux is a kind of Unix, and you can run Linux inside of a web browser now, because everything can be everything else in the land of computers. So if you want to take Unix for a spin, go to.
Unix was born at Bell Labs in 1969. What it offered over its predecessors was: As little as possible. It came with a few handfuls of tiny little programs and then assumed that people would want to chain all those programs together (“piping” the output of one program into the input of another). It just didn’t make that many assumptions about what people wanted. (“Perhaps paradoxically,” wrote its creators, “the success of the Unix system is largely due to the fact that it was not designed to meet any predefined objectives.”)
Unix is best-known for its command-line “shell.” Here’s a Unix shell program that makes a list of the top ten words in this Medium post; it’s okay if your eyes glaze over:
cat medium_post.txt | tr ' ' '\n' | tr -d '[:punct:]' \
| tr '[:upper:]' '[:lower:]' | sort | uniq -c \
| sort -nr | tail -n+10 | head -30 \
| column -c 60
It looks like gobbledygook if you’ve never used Unix, but it’s actually a simple set of tools chained together (I placed an explanation in a comment above if you’re curious what it all means). Anyone who takes a week and learns about Unix shells will understand what’s happening here.
That’s a ton of power available to users for very little trade-off in time and energy; it’s not easy but it’s extremely powerful and not that hard to learn. Here’s what that command spits out, above:
45 that 17 unix 13 one
33 its 16 on 13 into
33 for 16 has 12 time
27 software 15 was 12 not
26 as 15 office 11 they
25 but 14 this 11 pacman
21 people 14 so 10 world
21 are 14 more 10 photoshop
19 about 14 an 10 language
18 at 13 with 10 ideas
In 1983, when Pac-Man was three, the Association for Computing Machinery gave Dennis Ritchie and Ken Thompson, the inventors of Unix, the Turing Award, which is the biggest award in computing. The ACM wrote:
The success of the UNIX system stems from its tasteful selection of a few key ideas and their elegant implementation. The model of the Unix system has led a generation of software designers to new ways of thinking about programming. The genius of the Unix system is its framework, which enables programmers to stand on the work of others.
True. You read the documentation for early versions of Unix, and it’s all very simple and plain-spoken, if pretty wonky. Here’s the original paper from 1974, if you’re interested:
There’s a sad tendency in most manuals and programming guides to congratulate people simply for thinking. Not here; you’re expected to think. That can be very exciting when you’re used to being patronized, and it’s one of the best things about Unix.
The people who invented Unix were not trying to teach you how to use a computer as we understand computers today; rather, they were educating professionals as to the best way to operate an incredibly heavy and expensive piece of industrial equipment. The 1974 paper says that you can run Unix on cheap computers, computers that cost as little as $40,000 ($202,000 in 2014.) Right now there are two Unix workstations in my closet that cost $35 each.
The phone company gave birth to Unix. Now there is no phone company and Unix runs on your phone.
Mass production and cheaper technology have changed almost everything about how we use computers—but not quite. Some fundamental ideas about software are the same, four decades later. Unix made it easy for computer people to talk about computing, and it still does.
Finally, GNU Emacs. This is my text editor—meaning that it’s emphatically not a word processor, but rather a tool for dealing with pure text, such as is used in programming languages. There are other text editors, like Vim, and there are passionate debates over which is best. But it’s not simply in its ability to wrangle words on screen that Emacs excels; it’s that each letter you type is not simply part of a file but rather a dynamic entity that can be manipulated, enhanced, compared, and transformed.
The “GNU” means that it’s a part of the GNU Operating System, and stands for “GNU’s Not Unix” (a recursive acronym). It was the hackers’ customary humorous way of saying, “It’s like Unix but we started from scratch.”
“Emacs” is a contraction of “Editor MACroS.” Macros are little rules, sort of mini-programs. So—stay with me—Emacs started as a set of macros built on top of TECO, which was born in the 1960s and stood for Tape Editor and COrrector, because it let you edit things on paper tapes (see correction at right). People used it at MIT.
People started messing with TECO and adding macros, and then a man named Richard Stallman and another man named Guy Steele, Jr., wrapped all of that up into a new program called Emacs. That was in 1976.
What makes Emacs different is that it’s not so much a program as an editor-development toolkit. The original Emacs used the TECO command language for its macros, but a major rewrite in 1984/85 provided a full-fledged programming language “under the hood,” called Emacs LISP (elisp). This version is the Emacs that we use today. You don’t need to program in elisp to use Emacs, but it’s there if you want to try something new. It’s absolutely, infinitely extensible.
Since that rewrite the community around Emacs has been accreting little elisp programs into its standard library—thousands of them—that perform an extraordinary range of software tasks. When you download and use the program they are already installed, ready to use, and you can get yet more of them on the Internet. There are calendar programs, productivity tools, and outliners, a version of Tetris that is perfectly playable, a text adventure, tools for searching and replacing through thousands of files, and on and on, all built up together. As you work, whether writing code or writing prose, Emacs is constantly trying to guess what your text means; it tries to intuit what you want and what you mean. Being as it’s edging on 40 years old, it knows quite a bit.
The code history of Emacs goes back 29 years and can be read online. You can see all of the code that has gone into Emacs over decades because that code was made available to everyone under a license known as the GNU General Public License (GPL). This license grants “legal permission to copy, distribute and/or modify” software code to all who follow its provisions.
The GPL is different in intent from many “open source” licenses. Wrote Richard Stallman in an essay on the GNU website:
For the free software movement, free software is an ethical imperative, essential respect for the users’ freedom. By contrast, the philosophy of open source considers issues in terms of how to make software ‘better’—in a practical sense only.
If one wants to distribute GPLed software, one must also distribute its source code. This was a unique feature of the license: It defined a specific, then-novel freedom to code. Many other licenses—the popular MIT License is one example—don’t include such a provision; one can simply use the code as one sees fit.
Imagine a popular song that many other musicians wanted to play in their own concerts. Now imagine if the original songwriter said: “Great! Play it as often as you want. Feel free to change the lyrics or the tune. You can even charge people to hear it.” Sounds good, right? But the songwriter also has a request: “If you play this song in public you must distribute the sheet music to the audience, updated to include any changes you made to the lyrics and tune.” That might seem a strange request, but it’s hardly an unfair one. No one can insist that it’s “their” song, and everyone who wants to perform it can do so.
The GPL’s application to Emacs irrevocably placed Emacs into the cultural commons. It’s more like a park or a reservoir than a skyscraper or a bank. So while it is not itself software, the GPL was and is an essential component of the success of Emacs, and Emacs was one of the software tools that first introduced people to the GPL. The software and its license grew up together.
As a consequence, today you can skim over that source code (it would take years to read it all) and see programmers coming and going. You can see how Emacs reacted, as a community and as a technology, to the incredible rate of change around it. You can also compile the code and use it, and many thousands of people do use it; it is never not in use on my computer. Emacs represents literally decades of continual, community contemplation of a solitary question: What does it mean to create with words and symbols?
Canons are tricky things. There are pieces of software—like the TCP/IP stack that allows computers to communicate on the Internet—that have fundamentally changed global culture. The legendary programming language TeX, used to prepare typeset documents, has been around for decades and has a massive community. And of course many other massively popular software products that are worthy of consideration. I expect that people will leave comments to that effect.
Not long ago the Cooper-Hewitt Design Museum (part of the Smithsonian) acquired an iPad app called Planetary for its collection:
With Planetary we are hoping to preserve more than simply the vessel, more than an instantiation of software and hardware frozen at a moment in time: Commit message fd247e35de9138f0ac411ea0b261fab21936c6e6 authored in 2011 and an iPad2 to be specific.
Translated from moon language, this means that goodly museum people acquired this app as an art object—as a set of code and graphical assets and sounds as they were assembled at a specific moment in time (“commit message”) on a specific platform (“iPad2”).
Museums have a tricky time of it, because they need to put pins in things, assign names and numbers, and integrate them into larger historical collections. In acquiring Planetary, the Cooper-Hewitt was (very consciously) asking the question: What kind of art is software? How do we name it? Their work is like the work of lexicographers, who must try to encapsulate spoken language into dictionaries, even though language is huge, changing, and ever-moving, like clouds. It’s impossible but also incredibly useful.
But software is a unique art because it is so reactive. Not just on the screen but over time, as programs adapt and change with the culture—a culture they help define. Software provides identity (consider the Linux user, the web zealot, the “Unix greybeard”), a sense of affiliation and shared experience. The greatest works of software are not just code or programs, but social, expressive, human languages. They give us a shared set of norms and tools for expressing our ideas about words, or images, or software development. Great software gives us tremendous freedom, as long as we work within its boundaries.