GNU Emacs es un editor de texto extensible, personalizable y autodocumentado.https://www.gnu.org/software/emacs/manual/html_node/emacs/index.html Manual de Emacs (en inglés) Fue desarrollado por Richard Stallman y la Free Software Foundation como parte del proyecto GNU. Es software libre y se distribuye bajo la licencia GPL. Permanece en desarrollo gracias a una activa comunidad de usuarios y programadores.
El núcleo de GNU Emacs está escrito en lenguaje de programación C, que se encarga de las tareas a bajo nivel, como la interacción con el sistema operativo, la gestión de memoria y otros aspectos fundamentales para su funcionamiento. Por otro lado, Emacs Lisp se utiliza para dotarlo de extensibilidad y capacidad de personalización. Esta estructura, permite que las funciones, el comportamiento y forma de interactuar con el usuario en GNU Emacs, puedan ser modificados en tiempo real. Además, posibilita la escritura de una amplia gama de paquetes o funcionalidades que cubren diversas necesidades relacionadas con el texto, desde soportar múltiples lenguajes de programación, hasta el soporte de infraestructura de desarrollo colaborativa y tareas como revisión de correo electrónico, chat, navegación por Internet, juegos, reproducción de audio, entre otras.
A lo largo de los años, han sido publicadas distintas versiones de Emacs, pero solo dos han gozado de popularidad y difusión: GNU Emacs y XEmacs, una bifurcación de GNU Emacs. A día de hoy, la más utilizada es GNU Emacs.
Historia
thumb|250px|Emacs en modo texto, ejecutado en la línea de comandos sin modo gráfico. Emacs nació en los laboratorios del MIT durante los años 70. Antes de su introducción, el editor de textos predeterminado en el Sistema Incompatible de Tiempo Compartido (ITS), el sistema operativo en los laboratorios de inteligencia artificial PDP-6 y PDP-10, era un editor de líneas conocido como TECO. A diferencia de los editores de texto modernos, en TECO la introducción de texto, la edición y la vista del mismo se hacía de manera separada, como Vi lo haría luego. Los caracteres tecleados no aparecían dentro del documento, había que introducir una serie de instrucciones, en el lenguaje de TECO, indicándole que debía colocar los caracteres requeridos. El texto no se mostraba en la pantalla. Este comportamiento es similar al del programa ed, que todavía se utiliza hoy en día.
Richard Stallman visitó el Laboratorio de Inteligencia Artificial de Stanford en 1972 o 1974 y conoció al editor de textos "E". Escrito por Fred Wright, el editor tenía un comportamiento intuitivo WYSIWYG (lo que ves es lo que obtienes) como es común en los editores de textos modernos. Impresionado por esta característica, Stallman volvió al MIT donde Carl Mikkelsen, uno de los hackers en el Laboratorio de Inteligencia Artificial, había agregado un modo de edición-muestreo llamado "Control-R" a TECO, que le permitía a la pantalla mostrar lo que el usuario ingresaba desde el teclado. Stallman reimplementó este modo para que corriera eficientemente. Agregó una característica al modo edición-muestreo de TECO, para que el usuario pueda redefinir cualquier atajo de teclado para ejecutar un programa TECO.
Otra característica de E, que no tenía TECO, era corregir el acceso aleatorio. Desde la implementación, el TECO original fue un editor secuencial, diseñado para editar cinta de papel perforada en el PDP-1. La edición típica podía ser llevada a cabo en una página a la vez, en el orden que las páginas aparecen en el archivo.
La nueva versión de TECO fue popular en el Laboratorio de IA, y pronto acumuló una colección de macros, cuyos nombres terminaban en "MAC" o "MACS". Dos años después, Guy Steele unificó una diversidad de macros de teclado en uno solo.
Después de una noche de hacking conjunto por Steele y Stallman, este acabó la implementación, que incluía utilidades para extender y documentar el nuevo conjunto de macros. El sistema resultante fue llamado EMACS, es decir, "Editing MACroS". Una versión alternativa sostiene que EMACS quería decir "E con MACroS", refiriéndose a la falta de capacidades de macros en E. Según Stallman, él tomó el nombre Emacs "porque <E> no estaba en uso como abreviatura en el ITS en aquel momento". Se ha comentado también que "Emack & Bolio's" era el nombre de una heladería popular en Boston, a poca distancia del MIT. Un programa de formateo de texto usado en ITS fue llamado más tarde BOLIO por Dave Moon, que frecuentaba la heladería. No obstante, a Stallman no le gustaba ese helado, y ni siquiera lo conocía cuando eligió el nombre "Emacs"; esta ignorancia es la base de un Hacker koan, Emacs and Bolio).
Stallman se dio cuenta del peligro que entrañaba demasiadas personalizaciones del programa y las bifurcaciones de facto que podría llegar a suponer, y estableció ciertas condiciones para el uso del programa. Más tarde escribió:
El Emacs original, como el TECO, se ejecutaba únicamente en la familia de ordenadores PDP. Su comportamiento era suficientemente distinto de TECO, como para ser considerado un editor de texto por derecho propio. Rápidamente se convirtió en el programa estándar de edición en ITS. También fue portado de ITS al Tenex y a sistemas operativos TOPS-20 por Michael McMahon, pero no a Unix inicialmente. Otros colaboradores en versiones tempranas de Emacs fueron Kent Pitman, Earl Killian y Eugene Ciccarelli.
Otros emacsen Durante los siguientes años, se escribieron muchos editores similares a Emacs para otros sistemas operativos. Entre ellos SINE (Sine Is Not EMACS), EINE ("Eine Is Not EMACS") y ZWEI ("ZWEI Was EINE Initially", para la máquina Lisp), que fueron escritos por Michael McMahon y Daniel Weinreb (Los nombres EINE y ZWEI significan respectivamente "uno" y "dos" en alemán). En 1978, Bernard Greenberg escribió Multics Emacs en el Cambridge Information Systems Lab de Honeywell.
El primer editor similar a Emacs que funcionó sobre Unix fue el Gosling Emacs, escrito en 1981 por James Gosling (que más tarde inventó el lenguaje de programación Java). Fue escrito en el lenguaje de programación C y utilizaba un lenguaje de extensión conocido como Mocklisp, con sintaxis similar a la del lenguaje Lisp. En 1984 era software propietario.
GNU Emacs miniaturadeimagen|GNU Emacs corriendo sobre el escritorio GNOME en Parábola GNU/Linux-libre.En 1984, Stallman empezó a trabajar en GNU Emacs para producir una alternativa de software libre al Gosling Emacs. Inicialmente se basó en el Gosling Emacs, pero Stallman reemplazó el intérprete de Mocklisp con un intérprete de Lisp, lo que le obligó a sustituir casi todo el código. GNU Emacs se convirtió en el primer programa publicado por el emergente Proyecto GNU.
GNU Emacs está escrito en Emacs Lisp (a su vez implementado en C) como lenguaje de extensión. La primera versión ampliamente distribuida de GNU Emacs fue la 15.34, que apareció en 1985. Las versiones de la 2 a la 12 no existieron nunca. Las primeras versiones habían sido numeradas con la forma "1.x.x", pero antes de la versión 1.12 se decidió quitar el "1" inicial, ya que se pensaba que este número nunca cambiaría. La versión 13, la primera que fue pública, se liberó el 20 de marzo de 1985.
GNU Emacs se ejecutaba en Unix, al igual que Gosling Emacs. No obstante, GNU Emacs tenía más funciones, como por ejemplo, el Lisp (completo) como lenguaje de extensión. Como resultado, pronto reemplazó a Gosling Emacs como editor Emacs de facto sobre Unix.
Hasta 1999, el desarrollo de GNU Emacs fue relativamente cerrado, hasta el punto en que fue utilizado como ejemplo del modelo de desarrollo de "catedral" en La catedral y el bazar. El proyecto ha adoptado desde entonces una lista de correo pública de desarrollo, y acceso anónimo al sistema CVS. El desarrollo tiene lugar en una única rama de CVS, que está actualmente en la versión 23.4.1.
XEmacs
thumb|250px|Captura de pantalla de XEmacs. A partir de 1991, Jamie Zawinski y otros desarrollaron Lucid Emacs en Lucid Inc., basándose en una versión alfa de GNU Emacs 19. Las dos bases de código divergieron pronto, y los dos equipos de desarrollo desistieron de intentar combinarlas de nuevo en un solo programa. Este fue uno de los más famosos forks de un programa de software libre. Lucid Emacs ha sido renombrado como XEmacs. Este y GNU Emacs son las dos variedades actuales en uso más populares. La "X" en XEmacs se deriva, bien de un enfoque inicial para soportar el sistema X Window como interfaz gráfica de usuario, o bien un "nombre de compromiso" entre las partes que desarrollaban XEmacs. Tanto GNU Emacs como XEmacs soportan interfaces gráficas y terminales de texto.
Otras implementaciones GNU Emacs fue inicialmente pensado para computadores con un espacio de direcciones de 32-bit, y al menos 1 MiB de RAM, en una época en la cual esos computadores eran considerados de alta calidad. Esto dejó una puerta abierta para pequeñas reimplementaciones. Algunas destacables se nombran a continuación: MicroEMACS, una implementación muy portable originalmente escrita por Dave Conroy y Daniel Lawrence siguió desarrollándola. Este editor es usado por Linus Torvalds.Jarosław Rzeszótko. (16 de Octubre de 2006) Stiff asks, great programmers answer (en inglés) MG, originalmente denominado MicroGNUEmacs, un offshoot de MicroEMACS que intenta asemejarse más a GNU Emacs. Ahora viene instalado por defecto en OpenBSD. JOVE (Jonathan's Own Version of Emacs), una implementación no-programable de Emacs para sistemas UNIX-like por Jonathan Payne. Freemacs, una versión DOS con un lenguaje de extensión basado en text macro expansion, todo dentro del límite de memoria original de 64 KiB. MeadowMeadow: Multilingual enhancement to gnu Emacs with ADvantages Over Windows (en inglés) es una variante de Emacs originada en Japón diseñada para operar en Windows. Meadow se focaliza en proveer soporte multi-lenguaje.
Licencia
Para GNU Emacs (y en general para los paquetes de software GNU), la política sigue consistiendo en aceptar contribuciones significativas de código solamente si el titular del copyright renuncia adecuadamente a sus derechos de copia. No obstante, se hizo una excepción a esta política para el código de MULE (MULtilingual Extension, extensión multilingüe que maneja Unicode y métodos más avanzados de tratar con otros lenguajes), ya que el titular del copyright es el gobierno japonés y la transferencia de copyright no era posible.Richard Stallman. (27 de Septiembre de 2000) VM and the FSF (en inglés)
Esta política, sin embargo, no se aplica a contribuciones de código extremadamente pequeñas o corrección de fallos. No hay una definición estricta de contribución pequeña, pero a modo de orientación, se considera que sería menos de 10 líneas de código.
Esta política está pensada para facilitar el refuerzo del copyleft, de manera que la FSF pueda defender el software en un juicio, si este se produjera.
Características miniaturadeimagen|250x250px|GNU Emacs editando código fuente, interactuando con una línea de comandos, navegando en Wikipedia y navegando un directorio local.El resto de este artículo trata sobre las versiones modernas de Emacs, es decir, GNU Emacs y XEmacs, las únicas encarnaciones de Emacs que son ampliamente usadas hoy en día. El término "Emacs" se usará para referirse a ambos programas, ya que tienen características muy similares; XEmacs comenzó como un fork de GNU Emacs y sus versiones siguientes se han mantenido más o menos compatibles con GNU Emacs.