page_title: Emacs
section_title: History
hierarchical_section_title: Emacs / History
caption_attribution_description: English: American computer scientist Guy Steele speaking at Google Boston.
context_page_description: Emacs or EMACS is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, self-documenting, real-time display editor". Development of the first Emacs began in the mid-1970s, and work on its direct descendant, GNU Emacs, continues actively as of 2020.
  Emacs has over 10,000 built-in commands and its user interface allows the user to combine these commands into macros to automate work. Implementations of Emacs typically feature a dialect of the Lisp programming language that provides a deep extension capability, allowing users and developers to write new commands and applications for the editor. Extensions have been written to manage email, files, outlines, and RSS feeds, as well as clones of ELIZA, Pong, Conway's Life, Snake and Tetris.
  The original EMACS was written in 1976 by David A. Moon and Guy L. Steele Jr. as a set of Editor MACroS for the TECO editor. It was inspired by the ideas of the TECO-macro editors TECMAC and TMACS.
  The most popular, and most ported, version of Emacs is GNU Emacs, which was created by Richard Stallman for the GNU Project.
context_section_description: Emacs development began during the 1970s at the MIT AI Lab, whose PDP-6 and PDP-10 computers used the Incompatible Timesharing System (ITS) operating system that featured a default line editor known as Tape Editor and Corrector (TECO). Unlike most modern text editors, TECO used separate modes in which the user would either add text, edit existing text, or display the document. One could not place characters directly into a document by typing them into TECO, but would instead enter a character ('i') in the TECO command language telling it to switch to input mode, enter the required characters, during which time the edited text was not displayed on the screen, and finally enter a character (<esc>) to switch the editor back to command mode. (A similar technique was used to allow overtyping.) This behavior is similar to that of the program ed.
  Richard Stallman visited the Stanford AI Lab in 1972 or 1974 and saw the lab's E editor, written by Fred Wright. He was impressed by the editor's intuitive WYSIWYG (What You See Is What You Get) behavior, which has since become the default behavior of most modern text editors. He returned to MIT where Carl Mikkelsen, a hacker at the AI Lab, had added to TECO a combined display/editing mode called Control-R that allowed the screen display to be updated each time the user entered a keystroke. Stallman reimplemented this mode to run efficiently and then added a macro feature to the TECO display-editing mode that allowed the user to redefine any keystroke to run a TECO program.
  E had another feature that TECO lacked: random-access editing. TECO was a page-sequential editor that was designed for editing paper tape on the PDP-1 and typically allowed editing on only one page at a time, in the order of the pages in the file. Instead of adopting E's approach of structuring the file for page-random access on disk, Stallman modified TECO to handle large buffers more efficiently and changed its file-management method to read, edit, and write the entire file as a single buffer. Almost all modern editors use this approach.
  The new version of TECO quickly became popular at the AI Lab and soon accumulated a large collection of custom macros whose names often ended in MAC or MACS, which stood for macro. Two years later, Guy Steele took on the project of unifying the diverse macros into a single set. Steele and Stallman's finished implementation included facilities for extending and documenting the new macro set. The resulting system was called EMACS, which stood for Editing MACroS or, alternatively, E with MACroS. Stallman picked the name Emacs "because <E> was not in use as an abbreviation on ITS at the time." An apocryphal hacker koan alleges that the program was named after Emack & Bolio's, a popular Cambridge ice cream store. The first operational EMACS system existed in late 1976.
  Stallman saw a problem in too much customization and de facto forking and set certain conditions for usage. He later wrote:
  EMACS was distributed on a basis of communal sharing, which means all improvements must be given back to me to be incorporated and distributed.
  The original Emacs, like TECO, ran only on the PDP-10 running ITS. Its behavior was sufficiently different from that of TECO that it could be considered a text editor in its own right, and it quickly became the standard editing program on ITS. Mike McMahon ported Emacs from ITS to the TENEX and TOPS-20 operating systems. Other contributors to early versions of Emacs include Kent Pitman, Earl Killian, and Eugene Ciccarelli. By 1979, Emacs was the main editor used in MIT's AI lab and its Laboratory for Computer Science.
caption: Emacs was started by Guy L. Steele Jr. as a project to unify the many divergent TECO command sets and key bindings at MIT[4]
exif: {"Image Make": "LG Electronics", "Image Model": "LG-P659", "Image Orientation": "Horizontal (normal)", "Image XResolution": "72", "Image YResolution": "72", "Image ResolutionUnit": "Pixels/Inch", "Image Software": "Microsoft Windows Photo Viewer 6.1.7600.16385", "Image DateTime": "2015:12:08 09:20:08", "Image YCbCrPositioning": "Centered", "Image ExifOffset": "2328", "Image GPSInfo": "4716", "Image Padding": "[]", "Thumbnail Compression": "JPEG (old-style)", "Thumbnail Orientation": "Rotated 90 CW", "Thumbnail XResolution": "72", "Thumbnail YResolution": "72", "Thumbnail ResolutionUnit": "Pixels/Inch", "Thumbnail JPEGInterchangeFormat": "4830", "Thumbnail JPEGInterchangeFormatLength": "3089", "EXIF ExposureTime": "1/30", "EXIF FNumber": "12/5", "EXIF ISOSpeedRatings": "400", "EXIF ExifVersion": "0220", "EXIF DateTimeOriginal": "2015:12:01 13:08:30", "EXIF DateTimeDigitized": "2015:12:01 13:08:30", "EXIF ComponentsConfiguration": "YCbCr", "EXIF ExposureBiasValue": "0", "EXIF MeteringMode": "CenterWeightedAverage", "EXIF Flash": "Flash fired", "EXIF FocalLength": "349/100", "EXIF FlashPixVersion": "0100", "EXIF ColorSpace": "sRGB", "EXIF ExifImageWidth": "1341", "EXIF ExifImageLength": "1653", "Interoperability InteroperabilityIndex": "R98", "Interoperability InteroperabilityVersion": "[48, 49, 48, 48]", "EXIF InteroperabilityOffset": "4682", "EXIF WhiteBalance": "Auto", "EXIF Padding": "[]"}