The Long View
The Long View
HyperCard
Imagine an Apple computer that opens with a simple full-screen user interface. When you first start it up, you see home screen consisting of a set of icons representing programs. Click once on an icon and you start that program. The programs are lightweight and so start almost immediately. You never really quit them, but they quit on their own when you switch to a different program. As you add more programs to your home screen, it fills with icons. When it gets too full, you just add another page to the home screen. You can easily flip through these home pages, with horizontal sliding transitions.
The programs maintain their own data, so there is no apparent file system. Some programs are mostly data. For example some are books, made of non-editable text and pictures with just enough code to let you change pages, search for text, set bookmarks, write margin notes, etc. Some have movies, or sounds. The data used by those programs are embedded right into the program. In some you can add new pictures, sounds or movies to the program. Those programs let you browse the added stuff using a set of thumbnails. Other programs are mostly code, with only a little data beyond that for the user interface. A calculator, for example, or a graph drawing program. You can only have one program on the screen at one time, but you can cut and paste data between them. The programs are easy to write and so are really inexpensive to buy, often free, and available on the internet. Is this the latest thing in Apple software and hardware? Yes, it is, or rather it was, in 1987. It is HyperCard.
What Was HyperCard Exactly?
At the time it was released, the computer press seemed consumed by the need to categorize HyperCard. They kept asking what it was exactly. It was something new for most Macintosh users, and in fact most computer users at the time, and it didn’t fit into any familiar categories. But it doesn’t seem so odd to us now. It was a Macintosh program, but when you ran it, it created an alternative environment. HyperCard was not an alternative operating system, but it felt like one. It could be used to create, as well as to run programs, and the programs created in it ran in a unique environment that conformed only loosely to the standard Macintosh interface. It was similar to Macintosh Smalltalk-80, which was also a Macintosh program that could be used to create programs that only ran within Smalltalk. Like Smalltalk, it created a complete working environment that the user did not need to ever leave. It occupied the entire screen of the old small-screen series of Macintosh available at the time it was released. HyperCard’s little programs, which were called stacks, occupied the entire screen as well and in the first version only one stack could run at a time. Later versions could support multiple stacks open in overlapping windows with various sizes. Because the early Macintosh screens were small, HyperCard stacks usually didn’t use scrollbars, but consisted of a series of fixed-size pages, called cards, you could look through in order, or jump around in via links. It was always possible to go back to the Home (called Home Card) using the Go menu, a keyboard shortcut, but most stacks offered a button that when clicked would take you Home. The most amazing thing about HyperCard now is not that it is something new -- but rather how similar it is to the iOS interface. I’m sure that’s no coincidence. But of course it was also influential in the design of the world wide web, and of course it was the inspiration for AppleScript.
Applications and Documents
Within Hypercard, there was no distinction between applications and documents. Stacks were both applications and documents. Compound documents, which included both text and images, were the latest thing in the 1980s. The Macintosh was revolutionary because users could see and compose compound documents on screen. This capability was largely due to Bill Atkinson, the programmer that wrote the Macintosh’s Quickdraw library that programmers used to draw text and images on the screen. Then Atkinson wrote MacPaint, the tool most early Macintosh users used to create their first compound documents. Only 3 years after the Macintosh was introduced, Atkinson introduced HyperCard, whose idea was basically to add interactivity to documents. That is, it removed the distinction between programs and documents. HyperCard stacks contained images and text like documents, but also, buttons, menus, and functions associated with them. Hypercard added the capabilities of applications to the document. And by combining the features of documents and programs, it obviated the need for the user to interact directly with the file system. There was no need to start a program and use it to open a document. No need for the standard file package. No need to explain to users that an application that created a document is a different thing from the document it created. If you changed something in HyperCard, it was saved automatically. There was no Save menu item. You do it, and it gets saved. In short, it removed all the things that made the Macintosh hard to understand for new (or old) users.
What is so hyper about hypertext?
In the 1980’s lots of people talked about hypertext, but few people had ever seen it. It’s commonplace now. You click on a word or phrase in a piece of text, and it takes you to some other place in the document or in another document to get more information about the phrase. The card metaphor simplified the implementation of hypertext, and enabled HyperCard to deliver hypertext in a practical way. If a program had something to say about something, it was on a card. Hypertext was reduced to just making links from one card to another. The most fundamental act in HyperCard was to go from the current card to another one. Cards almost always had a button that you could click to take you to the Home card. It was very easy to make a button that when clicked would take the user to another card. To make hypertext work, all you had to do was to draw an invisible box around the text in the link, and make that box a button that takes the user to a different card. This implementation was so simple and clean, it seemed to take all the mystery out of hypertext. This is the idea that powered the beginning of the world wide web. To translate to the web, card becomes page, and stack becomes site.
Selling Stacks
HyperCard stacks were everywhere in the late 1980s and early 1990s. The program was a huge success, and everybody was making programs that worked in the system. One reason for this was the fact that HyperCard was distributed with every Macintosh, so every Macintosh user had a copy of HyperCard. This was an irresistible invitation to programmers, including people who were new to programming, to write HyperCard stacks and sell them, potentially to the entire population of Macintosh owners. But there wasn’t a good way to sell them. At that time software was sold in stores, on a diskette in a box with a manual and the whole thing wrapped in shrink-wrap plastic. The cost of printing the manual, packaging everything, and getting it into the stores put a lower limit on what could be charged for a program sold that way. Most HyperCard stacks weren’t big and complex enough to justify that cost, and they were just given away on freeware collections and exchanged on the internet. There were some exceptions. The largest stacks were databases, and some of these had enough value to be sold in stores. For example, I remember a stack for birdwatchers that contained pictures of every kind of bird and recordings of their calls. Apple distributed their principal programmer information Inside Macintosh as a set of hypercard stacks. The popular game Myst started out as a hypercard stack. Basically, big stacks full of information could be sold, but the majority of stacks were relatively small things that were just given away. This, of course, is a contributing factor to the eventual demise of HyperCard. If there had been a large and lucrative industry built around making and selling HyperCard stacks, Apple would have had to keep it going. It would have been cool if Apple had created an on-line stack store, where you could buy a stack electronically. Apple could have managed the sales, so programmers wouldn’t have to worry about that, and there would have been no packaging, so prices could have been really low. They could have called it the Stack Store. Somebody could have written a stack that let you browse the store and make purchases that would be automatically installed in HyperCard.
Programming HyperCard
There is no question that HyperCard was intended to be a programming environment for non-programmers. This is what Bill Atkinson was saying when he called it a software ‘erector set’. Maybe this sounds like a doomed endeavor to people now. Do you think there is a mass market for user-programmable software? In iOS, for example, user-programmable stuff is pretty much forbidden. But in the late 1980’s it didn’t seem like that. Most computer enthusiasts thought that programmability was the ultimate attraction of the general purpose computer. There was a belief in the computer science community that advances in programming languages might make programming substantially easier, so that anybody could do it with minimal training. There was a lot of research on how to make programming more natural and intuitive. After all, just using computers seemed too hard for most people before the Macintosh operating system was designed. Maybe a similar breakthrough in programming environments would make programming easy for everybody. On the Macintosh, a lot of what went into a program was art -- images and sounds. The programmer would draw images in MacPaint or some other program, or get an artist to draw them, and those images might be a large part of the program. A lot of the code in a program was just pulling images and sounds from disk and deploying them when the user clicked the mouse somewhere. It wasn’t hard to imagine a programming system that minimized the writing of code, by allowing that kind of programming to be done graphically, by pointing and clicking, rather than by writing code in some arcane computer language. There were a lot of experimental graphical programming languages, and a few commercial ones (e.g. Prograph) already being used on the Macintosh.
HyperCard was an awesome programming environment. A famous problem learning programming is that you have to know quite a bit about a language before you can get started doing anything useful with it. HyperCard was completely different; you could ease into it stepwise. You could start by altering the images on an existing card, or making a blank card and drawing something on it. HyperCard came with a fully capable MacPaint-like drawing program built in. Later versions would let you record sounds on your Macintosh and put them into your stack as well. A text field tool let you put an editable text field on your card, that you could populate with some information, or could be filled in by the users to store their own data. When you were ready to add some real executable code, you would start with the essential HyperCard action, which was to move to a different card. Any place on your card could be turned into a button by using the button-making tool and drawing a box with it. If you did that around a little image, that image just became a button. If you want to make that button a link to a different card, there was a simple dialog box that you could open, and just by navigating there, assign a destination for your button. Your stack of decorated cards could become a sequence of navigable cards with no more programming than that.
When you wanted more, you could learn to write in HyperTalk, HyperCard’s scripting language created by Dan Winkler. HyperTalk was designed to seem like English. The wisdom of trying to make an English-like programming language has been much debated since then, especially in relation to AppleScript, which is a direct descendent of HyperTalk and shares many of its strengths and shortcomings. But everything considered, HyperTalk was very clever and easy to learn compared to other programming languages. Most importantly, code belonged to objects you could see on the screen, and distributed around among them. HyperCard was an object-oriented system, in a more concrete way than is usually meant. If you wanted a button to do something, like play a sound, you could open a little text editor belonging to the button, and write your code in the form of an action handler for the button. For example, if you wanted to play your sound when the mouse was clicked on the button, you could write a handler for mouse clicks:
on mouseDown
Play “mySound”
end mouseDown.
This code could only be found and edited by manipulating the button itself, and best of all, if you copied the button and pasted it into a new card or a new stack, it would retain its code and function. Some surprising functions could be added to your stack just by copying stuff like buttons or text fields from other stacks. That is code-reuse the way it was meant to be. Code could be attached to the stack itself, an individual card, or a user interface item within a card. And an image or user interface item could be placed on a card’s background or foreground layer. So if you want a bunch of cards with some things in common and then differing in others, you put the common objects in the background one time and they appear and work on all the cards that share that background.
Finally, if you wanted to have a capability in HyperTalk that wasn’t already there, you could write some compiled code in the form of a resource called an XCMD, and install it in HyperCard, and it would work exactly like a native HyperTalk command.
HyperCard really was an easy programming system. Why did it not change the world? Are you kidding? Of course it totally did. Hypercard was a huge influence on the user interface for the world wide web, for everything about Applescript, and for many years it was seen everywhere as the software used for museum displays, kiosks, and preprogrammed multimedia displays.
HyperCard Was Your First Slide Show
One great feature of hypercard was the ease with which you could make full-screen graphics on a series of cards, play sounds or show movies automatically when a card opened, and sequence a series of timed transitions through a series of cards. Because this was a natural for HyperCard, it became the first program to gain wide use for making slide shows. LCD projectors were not in common use at that time, so these shows were shown on computer screens (but they were still usually called slide shows). The first commercial LCD projectors were available in 1988, but they did not come into common use till till the late 1990s. By that time, HyperCard was falling into disuse.
HyperCard Version 2
A new version of HyperCard was released in 1990. It was the brainchild of Kevin Calhoun, and it was a complete overhaul of the program. Cards could be any size, and more than one stack could be opened at a time. HyperTalk execution was greatly sped up and many new commands were added. Among these were a lot of important multimedia features making use of Quicktime, which was coming into it’s own at that time. AppleScript support was added, and HyperCard became a great platform for learning and using AppleScript. HyperCard version 2 was just as brilliant as Atkinson’s original, but much more powerful.
But HyperCard got tangled up in corporate strategy at Apple. Most of Apple’s application software was unbundled and spun out to a new company, Claris. I guess this was partly because of complaints from software houses that they didn’t want to have to compete with Apple’s bundled software. HyperCard version 2 came out just in time to meet this unhappy fate. Apple continued to bundle an execute-only version of HyperCard, called HyperCard Reader, with the operating system. But while the reader could run stacks, if you wanted to make or modify stacks you had to pay Claris. The key thing about HyperCard had been the way it blurred the boundary between a software developer and a software user. It was deadly to unbundle the development version of HyperCard, and charge $200 for it. That was the kind of money you would spend to buy a c++ development system. Claris failed, and HyperCard returned to the Apple fold in 1993. But they never bundled it again.
Apple executives have long been confused about their attitude about programming. Of course, Apple // users were often programmers, and every Apple // came with Basic installed in ROM. But the Macintosh was released with no programming tools whatsoever, and programmers were told they should buy a Lisa. Of course, this advice was not intended for casual programmers, who couldn’t possibly afford a Lisa. Maybe Apple intended that Macintosh software would only be made by corporate programmers, whose tools would purchased by their employers. If that had continued, it would have been a disaster for the Macintosh. But after a while, commercial development tools became available on the Macintosh. Still, there was no simple bundled programming option for users, comparable to Basic on the Apple //. Hypercard was that option. Every Macintosh purchaser got a simple but powerful programming system that was easy to use and consistent with the Macintosh style. As simple as that sounds now, the corporate leadership at Apple never seemed to get it. When they talked about HyperCard, they always played down the idea of user-programming, as if they were ashamed of it. But despite them, HyperCard was very popular and many users created stacks and shared them with others. In the late 1980s and 1990s, there was nothing comparable on any other platform (although imitators did appear later) , and many users purchased a Macintosh because of HyperCard. The loss of HyperCard as a community user programming tool hurt Apple badly in the middle 1990s, when they really needed help. It should be noted that this mistake could not be blamed on Steve Jobs, who was long gone from Apple when HyperCard appeared. He did kill HyperCard in the late 1990s, but I doubt it was out of contempt for user-programming. Remember that NeXT machines came bundled with great programming tools, and those tools were and continue to be bundled with Mac OS X today. Current Macintosh users have some great programming options, because of one of HyperCard’s brilliant children, AppleScript.
-- BG (basalgangster@macGUI.com)
Saturday, October 23, 2010