Jargon File entries: EMACS /ee'maks/ [from Editing MACroS] n. The ne plus ultra of hacker editors, a programmable text editor with an entire LISP system inside it. It was originally written by Richard Stallman in TECO under ITS at the MIT AI lab; AI Memo 554 described it as "an advanced, self-documenting, customizable, extensible real-time display editor". It has since been reimplemented any number of times, by various hackers, and versions exist that run under most major operating systems. Perhaps the most widely used version, also written by Stallman and now called "{GNU} EMACS" or GNUMACS, runs principally under UNIX. It includes facilities to run compilation subprocesses and send and receive mail; many hackers spend up to 80% of their tube time inside it. Other variants include GOSMACS, CCA EMACS, UniPress EMACS, Montgomery EMACS, jove, epsilon, and MicroEMACS. Some EMACS versions running under window managers iconify as an overflowing kitchen sink, perhaps to suggest the one feature the editor does not (yet) include. Indeed, some hackers find EMACS too heavyweight and baroque for their taste, and expand the name as `Escape Meta Alt Control Shift' to spoof its heavy reliance on keystrokes decorated with bucky bits. Other spoof expansions include `Eight Megabytes And Constantly Swapping', `Eventually `malloc()'s All Computer Storage', and `EMACS Makes A Computer Slow' (see recursive acronym). See also vi. GOSMACS /goz'maks/ [contraction of `Gosling EMACS'] n. The first EMACS-in-C implementation, predating but now largely eclipsed by GNUMACS. Originally freeware; a commercial version is now modestly popular as `UniPress EMACS'. The author (James Gosling) went on to invent NeWS. GNUMACS /gnoo'maks/ [contraction of `GNU EMACS'] Often-heard abbreviated name for the GNU project's flagship tool, EMACS. Used esp. in contrast with GOSMACS. Proprietary emacsen per http://www.cs.uu.nl/wais/html/na-dir/emacs-implementations.html ADEPT, Alpha, Amacs, Borland Brief, CCA Emacs, E3, EMACS-TC, Epsilon, EVE (Extensible VAX Editor), Adobe Framemaker, FRED (Fred Resembles Emacs Deliberately), Infinitor, Interleaf, M, Mince (Mince Is Not Complete Emacs) aka PerfectWriter aka The FinalWord aka FinalWordII, Multics Emacs, PMATE (aka ZMATE), Compuware Preditor aka Compuware Professional Editor aka PVCS Professional Editor aka Sage Professional Editor, Compuware Preditor/2, MicroEdge SlickEdit aka Slick, MicroEdge Visual SlickEdit, Sun Microsystems SPE Editor, Borland Sprint aka Esprit, Sys-IX Editor, Unipress Emacs aka Gosling Emacs, Stratus Computer VOS Emacs, Pearl Software Win-Emacs, Symbolics ZMACS, Texas Instruments ZMACS TI MIT's "EINE" developed into ZWEI, which forked off proprietary Symbolics ZMACS, Texas Instruments ZMACS TI. Taken from the emacs-FAQ http://unlser1.unl.csi.cuny.edu/faqs/emacs-faq/90.html 90: What is the difference between Emacs and XEmacs (formerly "Lucid Emacs")? First of all, they're both GNU Emacs. XEmacs is just as much a later version of GNU Emacs 18 as the FSF-distributed version. This FAQ refers to the latest version to be distributed by the FSF as "Emacs," partly because the XEmacs maintainers now refer to their product using the "XEmacs" name, and partly because there isn't any accurate way to differentiate between the two without getting mired in paragraphs of legalese and history. XEmacs, which began life as Lucid Emacs, is based on an early version of Emacs 19 and Epoch, an X-aware version of Emacs 18. Emacs (i.e., the version distributed by the FSF) has a larger installed base and supports character terminals, while XEmacs can do some clever tricks with X Windows, such as putting arbitrary graphics in a buffer. Emacs and XEmacs each come with Lisp packages that are lacking in the other; RMS says that the FSF would include more packages that come with XEmacs, but that the XEmacs maintainers don't always keep track of the authors of contributed code, which makes it impossible for the FSF to have certain legal papers signed. (Without these legal papers, the FSF will not distribute Lisp packages with Emacs.) Many XEmacs features have found their way into recent versions of Emacs, and more features can be expected in the future, but there are still many differences between the two packages. XEmacs vs. GNU Emacs There are currently irreconcilable differences in the views about technical, programming, design and organizational matters between RMS and the XEmacs development team which provide little hope for a merge to take place in the short-term future. If you have a comment to add regarding the merge, it is a good idea to avoid posting to the newsgroups, because of the very heated flamewars that often result. Mail your questions to xemacs-beta@xemacs.org and bug-gnu-emacs@prep.ai.mit.edu. Difference between XEmacs and GNU Emacs 19, from the XEmacs Point of View In XEmacs 20, characters are first-class objects. Characters can be converted to integers, but are not integers. FSF 19, XEmacs 19, and Mule represent them as integers. In XEmacs, events are first-class objects. FSF 19 represents them as integers, which obscures the differences between a key gesture and the ancient ASCII code used to represent a particular overlapping subset of them. In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as complicated combinations of association lists and vectors. If you use the advertised functional interface to manipulation of keymaps, the same code will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends on the underlying implementation of keymaps, it will not. XEmacs uses "extents" to represent all non-textual aspects of buffers; FSF 19 uses two distinct objects, "text properties" and "overlays", which divide up the functionality between them. Extents are a superset of the functionality of the two FSF data types. The full FSF 19 interface to text properties and overlays is supported in XEmacs (with extents being the underlying representation). Extents can be made to be copied into strings, and thus restored by kill and yank. Thus, one can specify this behavior on either "extents" or "text properties", whereas in FSF 19 text properties always have this behavior and overlays never do. Many more packages are provided standard with XEmacs than with FSF 19. Images of arbitrary size can be embedded in a buffer. Variable width fonts work. The height of a line is the height of the tallest font on that line, instead of all lines having the same height. XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes it be a more well-behaved X citizen (and also improves portability). A result of this is that it is possible to include other Xt "Widgets" in the XEmacs window. Also, XEmacs understands the standard Xt command-line arguments. XEmacs provides support for ToolTalk on systems that have it. XEmacs can ask questions using popup dialog boxes. Any command executed from a menu will ask yes/no questions with dialog boxes, while commands executed via the keyboard will use the minibuffer. XEmacs has a built-in toolbar. Four toolbars can actually be configured: top, bottom, left, and right toolbars. XEmacs has vertical and horizontal scrollbars. Unlike in FSF 19 (which provides a primitive form of vertical scrollbar), these are true toolkit scrollbars. A look-alike Motif scrollbar is provided for those who don't have Motif. (Even for those who do, the look-alike may be preferable as it is faster.) If you're running on a machine with audio hardware, you can specify sound files for XEmacs to play instead of the default X beep. See the documentation of the function load-sound-file and the variable sound-alist. An XEmacs frame can be placed within an "external client widget" managed by another application. This allows an application to use an XEmacs frame as its text pane rather than the standard Text widget that is provided with Motif or Athena. XEmacs supports Motif applications, generic Xt (e.g. Athena) applications, and raw Xlib applications. The FSF Point of View Richard Stallman writes: XEmacs is GNU software because it's a modified version of a GNU program. And it is GNU software because the FSF is the copyright holder for most of it, and therefore the legal responsibility for protecting its free status falls on us whether we want it or not. This is why the term "GNU XEmacs" is legitimate. But in another sense it is not GNU software, because we can't use XEmacs in the GNU system: using it would mean paying a price in terms of our ability to enforce the GPL. Some of the people who have worked on XEmacs have not provided, and have not asked other contributors to provide, the legal papers to help us enforce the GPL. I have managed to get legal papers for some parts myself, but most of the XEmacs developers have not helped me get them. XEmacs was possible because free software means that anyone can change it and distribute a modified version. I have no regrets about establishing this freedom for Emacs. Everyone should have the freedom to change any program, and this is not limited to changes that the original author likes. Many people have taken advantage of the freedom to change GNU Emacs, over the last decade. Most of them were willing to cooperate on integrating their changes into Emacs. XEmacs arose as a separate forked version because some of the developers--starting with Zawinski--were unwilling to do that. People should have the freedom to decide what to work on, including the freedom to compete with the GNU project, but it's a shame when they make that choice. The whole community loses when someone chooses competition rather than cooperation. But this is worse than competition--it is unfair competition. The XEmacs developers can and do copy code they like from Emacs. If I could copy the code I like from XEmacs in the same way, at least the rivalry would be fair. But I can't do that't, because substantial parts of XEmacs don't have legal papers, or don't have known authors. As long as we cannot use XEmacs in the GNU system, the GNU project has to make sure that Emacs is not left behind. In other words, we have to behave like rivals too, even though we wish there were no rivalry. When XEmacs developers try to persuade people to use, test, fix and enhance XEmacs instead of Emacs, the GNU project can't sit still; we need them to use, test, fix and enhance Emacs instead. There is good code in XEmacs, which I'd be happy to have in a merged Emacs any day. But I cannot copy it out of XEmacs myself because of the uncertain authorship and/or lack of legal papers. This problem could probably be resolved, at least for large parts of XEmacs, with substantial help from the authors of that code. Otherwise, the GNU project has to write or find replacements for it. I invite people who like Emacs, and want the best possible version of Emacs to be available for use in the GNU system, to help in one way or the other.