Original author(s) | James Gosling |
---|---|
Developer(s) | UniPress |
Initial release | 1981; 44 years ago (1981) |
Written in | C |
Operating system | Unix,VMS |
Type | Text editor |
Gosling Emacs (often shortened to "Gosmacs" or "gmacs") is a discontinuedEmacs implementation written in 1981 byJames Gosling inC.[1]
Gosling initially allowed Gosling Emacs to be redistributed with no formal restrictions, as required by the "Emacs commune" since the 1970s,[2] only asking for a letter acknowledging his authorship.[3] Later, wishing to move on and after a failed search for people who would maintain it under the same rights, he finally sold his version of Emacs to UniPress because they agreed to sell it under reasonable terms. The dispute betweenRichard Stallman and UniPress inspired the creation of the first formal license for Emacs, which laterbecame the GPL, as Congress hadintroduced copyright for software in 1980.[4]
Gosling Emacs was especially noteworthy because of the effective redisplay code,[5] which used adynamic programming technique to solve the classicalstring-to-string correction problem. The algorithm was quite sophisticated; that section of the source was headed by askull-and-crossbones inASCII art,[6] warning any would-be improver that even if they thought they understood how the display code worked, they probably did not.[7]
Since Gosling had permitted its unrestricted redistribution,Richard Stallman used some Gosling Emacs code in the initial version ofGNU Emacs.[8][9] Among other things, he rewrote part of the Gosling code headed by the skull-and-crossbones comment and made it "...shorter, faster, clearer and more extensible."[7]
In 1983 UniPress began selling Gosling Emacs onUnix for $395 and onVMS for $2,500, marketing it as "EMACS–multi-window text editor (Gosling version)".[10]
Controversially, Unipress asked Stallman to stop distributing his version of Emacs for Unix.[11]UniPress never took legal action against Stallman or his nascentFree Software Foundation,[citation needed] believing "hobbyists and academics could never produce an Emacs that could compete" with their product.[citation needed] All Gosling Emacs code was removed from GNU Emacs by version 16.56 (July 1985),[12] with the possible exception of a few particularly involved sections of the display code.[citation needed] The latest versions of GNU Emacs (since August 2004) do not feature the skull-and-crossbones warning.[citation needed]
Its extension language, Mocklisp, has a syntax that appears similar toLisp, but Mocklisp does not have lists, only strings and arrays. The Mocklisp interpreter, built by Gosling and a collaborator, was replaced by a full Lisp interpreter in GNU Emacs.[11]
The last piece of Gosmacs code that I replaced was the serial terminal scrolling optimizer, a few pages of Gosling's code which was proceeded by a comment with a skull and crossbones, meaning that it was so hard to understand that it was poison. I had to replace it, but worried that the job would be hard. I found a simpler algorithm and got it to work in a few hours, producing code that was shorter, faster, clearer, and more extensible. Then I made it use the terminal commands to insert or delete multiple lines as a single operation, which made screen updating far more efficient.
...Stallman was using code from Gosling, based on permission that Gosling had given to Labalme, but Labalme had written code for Gosling that he had commercialized without telling Labalme.
According to the developer, Gosling, while a PhD student at Carnegie Mellon, had assured early collaborators that their work would remain accessible. When UniPress caught wind of Stallman's project, however, the company threatened to enforce the copyright...In the course of reverse-engineering Gosling's interpreter, Stallman would create a fully functional Lisp interpreter, rendering the need for Gosling's original interpreter moot.