Введение
конкретная реализация Emacs
XEmacs — это графический и консольный текстовый редактор, работающий на практически любой Unix-подобной операционной системе, а также на Microsoft Windows. XEmacs является ответвлением, основанным на версии GNU Emacs конца 1980-х годов. Любой пользователь может загружать, использовать и изменять XEmacs как свободное программное обеспечение, распространяемое под лицензией GNU General Public License версии 2 или любой более поздней версии.
История
В период с 1987 по 1993 год возникли значительные задержки с выпуском новой версии GNU Emacs (предположительно, версии 19). В конце 1980-х компания Lucid Inc. Ричарда П. Габриэля столкнулась с необходимостью поставлять Emacs для поддержки IDE Energize C++. Поэтому Lucid наняла команду для улучшения и расширения кода с намерением, чтобы их новая версия, выпущенная в 1991 году, послужила основой для GNU Emacs версии 19. Однако у них не было возможности ждать, пока их изменения примет Фонд свободного программного обеспечения (FSF). Lucid продолжала разрабатывать и поддерживать свою версию Emacs, а FSF выпустила версию 19 GNU Emacs годом позже, включив в неё часть кода и адаптировав другие его части. Когда Lucid прекратила существование в 1994 году, другие разработчики взяли на себя поддержку кода. Такие компании, как Sun Microsystems, хотели продолжать распространять Lucid Emacs, но использование товарного знака стало юридически неопределённым, поскольку никто не знал, кто в конечном итоге будет владеть товарным знаком "Lucid". Соответственно, "X" в XEmacs представляет собой компромисс между сторонами, участвовавшими в разработке XEmacs. Таким образом, "X" в XEmacs не связано с X Window System. Изначально поддерживая только X11, XEmacs стал поддерживать текстовые терминалы и оконные системы, отличные от X11. Установщики могут компилировать как XEmacs, так и GNU Emacs с поддержкой X и без неё. В течение некоторого времени XEmacs даже обладал некоторыми функциями, специфичными для терминалов, например, раскраской текста, которых не было в GNU Emacs. Сообщество разработчиков программного обеспечения обычно называет GNU Emacs, XEmacs (и ряд других подобных редакторов) в совокупности или по отдельности как emacsen (по аналогии с oxen) или просто как emacs, поскольку оба редактора вдохновлены оригинальным TECO Emacs.
with the intention that their new version, released in 1991, would form the basis of GNU Emacs version 19. However, they did not have time to wait for their changes to be accepted by the Free Software Foundation (FSF). Lucid continued developing and maintaining their version of Emacs, while the FSF released version 19 of GNU Emacs a year later, while merging some of the code and adapting some other parts. When Lucid went out of business in 1994, other developers picked up the code. Companies such as Sun Microsystems wanted to carry on shipping Lucid Emacs, but using the trademark had become legally ambiguous because no one knew who would eventually control the trademark "Lucid". Accordingly, the "X" in XEmacs represents a compromise among the parties involved in developing XEmacs. The "X" in XEmacs is thus not related to the X Window System. After initially only supporting X11, XEmacs supported text based terminals and windowing systems other than X11. Installers can compile both XEmacs and GNU Emacs with and without X support. For a period of time XEmacs even had some terminal specific features, such as coloring, that GNU Emacs lacked. The software community generally refers to GNU Emacs, XEmacs (and a number of other similar editors) collectively or individually as emacsen (by analogy with oxen) or as emacs, since they both take their inspiration from the original TECO Emacs.
Особенности
XEmacs имеет команды для работы со словами и абзацами (удаление, перемещение, навигация и т. д.), подсветку синтаксиса для облегчения чтения исходного кода и "макросы клавиатуры" для выполнения произвольных последовательностей команд редактирования, определяемых пользователем. XEmacs предоставляет обширную онлайн-помощь, а также пять руководств, доступных на веб-сайте XEmacs. XEmacs поддерживает множество языков и режимы редактирования для различных языков программирования и разметки. XEmacs работает на многих операционных системах, включая Unix/Linux, BSD и Mac OS X. Для работы на Mac OS требуется X11, хотя ведется разработка нативной версии Carbon. Существуют две версии XEmacs для Microsoft Windows: стандартный установщик и пакет Cygwin. Пользователи могут перенастроить практически все функции редактора, используя язык Emacs Lisp. Изменения в коде Lisp не требуют перезапуска или перекомпиляции редактора. Программисты предоставили множество готовых расширений Lisp. Существует большое количество пакетов для расширения и дополнения возможностей XEmacs. Пользователи могут загружать их по отдельности через менеджер пакетов XEmacs или устанавливать группами, используя пакет xemacs sumo или "sumo tarballs". Менеджер пакетов XEmacs появился почти на десять лет раньше системы пакетов ELPA, используемой GNU Emacs, и несовместим с ней. Начиная с XEmacs 21.1, часть функциональности была вынесена из ядра XEmacs и стала доступна в виде отдельных пакетов. Это позволяет пользователям исключать ненужные пакеты. XEmacs имел менеджер пакетов более десяти лет до того, как GNU Emacs разработал свой, но для загрузки новых пакетов требуется перезапуск XEmacs.
Разработка
С самого начала проекта разработчики XEmacs стремились к частому циклу выпуска. Они также стремились к большей открытости для экспериментов, и XEmacs часто предлагал новые функции до других редакторов Emacs — являясь первопроходцем (например) встроенных изображений, переменных шрифтов и цветного оформления терминала. За прошедшие годы разработчики значительно переписали код, чтобы повысить его согласованность и соответствие современным стандартам программирования, делая акцент на абстракции данных. XEmacs имеет систему пакетов для независимо разрабатываемых пакетов Lisp. Последняя версия поддерживает GTK+ и имеет собственный порт Carbon для Mac OS X.
and a native Carbon port for Mac OS X.
XEmacs всегда отличался открытой средой разработки, включая анонимный доступ к CVS, позднее — к Mercurial, а также общедоступные списки рассылки для разработчиков. XEmacs поставляется с более чем 500-страничным руководством по внутреннему устройству (Wing, et al., 2004). Поддержка Unicode стала проблемой для XEmacs. По состоянию на 2005 год выпущенная версия зависела от устаревшего пакета Mule UCS для поддержки Unicode, в то время как в разрабатываемой версии XEmacs уже с мая 2002 года была реализована надежная встроенная поддержка внешних кодировок Unicode, однако внутренние наборы символов Mule оставались неполными, а разработка, похоже, застопорилась к сентябрю 2005 года. Разработка XEmacs ведется в трех ветвях: стабильной, gamma и beta. Одно из основных разногласий связано с различными подходами к передаче авторских прав. FSF считает передачу авторских прав необходимой для защиты кода от нарушений лицензии GPL, в то время как разработчики XEmacs утверждают, что отсутствие передачи авторских прав позволило крупным компаниям участвовать в проекте, поскольку компании иногда могут лицензировать свой код, но из-за осторожного отношения к своим обязательствам перед акционерами им может быть сложно получить разрешение на полную передачу прав на код. Фонд свободного программного обеспечения владеет авторскими правами на значительную часть кода XEmacs из-за предыдущей передачи авторских прав во время попыток слияния и кросс-разработки. Включение нового кода XEmacs в GNU Emacs часто зависит от готовности конкретного разработчика передать код FSF. Новые функции, реализованные в одном из редакторов, обычно рано или поздно появляются и в другом. Кроме того, многие разработчики вносят вклад в оба проекта. Проект XEmacs придерживается политики обеспечения совместимости с API GNU Emacs. Например, он предоставляет уровень совместимости, реализующий наложения с помощью встроенной функциональности extent. "Разработчики XEmacs стремятся поддерживать совместимость своего кода с GNU Emacs, особенно на уровне Lisp". По мере замедления разработки XEmacs начал включать в себя множество фрагментов кода из GNU Emacs, в то время как GNU Emacs реализовал многие функции, которые ранее были доступны только в XEmacs. Это привело к тому, что некоторые пользователи объявили о "смерти" XEmacs, призывая его разработчиков вместо этого вносить свой вклад в GNU Emacs. Многие важные пакеты, такие как Gnus и Dired, ранее разрабатывались с учетом совместимости с обоими редакторами, однако главный разработчик Gnus объявил о намерении перенести дерево Gnus в основную ветку Emacs и удалить код совместимости с XEmacs, ссылаясь на другие пакеты, которые также отказались от поддержки XEmacs. В декабре 2015 года сопровождающий проект Стивен Дж. Тернбулл опубликовал сообщение в списке рассылки разработчиков XEmacs, в котором говорилось, что проект находится "на перепутье" с точки зрения будущей совместимости с GNU Emacs из-за сокращения числа разработчиков и прогресса GNU Emacs. Были предложены различные варианты дальнейшего развития, включая полное прекращение разработки, создание новой ветки на основе текущей версии GNU Emacs или перевод проекта в режим обслуживания на случай, если в будущем кто-то захочет возобновить разработку. Был выбран последний вариант, при этом отдельные разработчики взяли на себя обязательства по обеспечению минимальной поддержки веб-сайта и ресурсов разработки. В 2020 году проект XEmacs перенес свой репозиторий исходного кода Mercurial в Heptapod после прекращения поддержки Mercurial бывшим хостингом Bitbucket. В мае 2023 года проект выпустил первую новую бета-версию XEmacs почти за десять лет — версию 21.5.35 "kohlrabi".
while the XEmacs developers have argued that the lack of copyright assignment has allowed major companies to get involved, as sometimes companies can license their code but due to a cautious attitude concerning fiduciary duties to shareholders, companies may have trouble in getting permission to assign away code completely. The Free Software Foundation holds copyright of much of the XEmacs code because of prior copyright assignment during merge attempts and cross development. Whether a piece of new XEmacs code enters GNU Emacs often depends on the willingness of that individual contributor to assign the code to the FSF. New features in either editor usually show up in the other sooner or later. Furthermore, many developers contribute to both projects. The XEmacs project has a policy of maintaining compatibility with the GNU Emacs API. For example, it provides a compatibility layer implementing overlays via the native extent functionality. "XEmacs developers strive to keep their code compatible with GNU Emacs, especially on the Lisp level." As XEmacs development has slowed, XEmacs has incorporated much code from GNU Emacs, while GNU Emacs has implemented many formerly XEmacs only features. This has led some users to proclaim XEmacs' death, advocating that its developers contribute to GNU Emacs instead. Many major packages, such as Gnus and Dired, were formerly developed to work with both, although the main developer of Gnus has announced his intention to move the Gnus tree into the main Emacs trunk and remove XEmacs compatibility code, citing other packages similarly dropping XEmacs support. In December 2015 project maintainer Stephen J. Turnbull posted a message to an XEmacs development list stating the project was "at a crossroads" in terms of future compatibility with GNU Emacs due to developer attrition and GNU Emacs' progress. Several options were laid out for future directions including ending development entirely, creating a new fork from the current version of GNU Emacs, or putting the project in maintenance mode in case someone wants to restart development in the future. This last option was the direction decided, with commitments from individual contributors to provide minimal support for the web site and development resources. In 2020 the XEmacs project moved its Mercurial source repository to Heptapod, following their former host Bitbucket's discontinuation of Mercurial support. In May 2023, the project released the first new beta version of XEmacs in nearly a decade with beta version 21.5.35 "kohlrabi".
SXEmacs
Проект SXEmacs был создан на основе XEmacs 21.4 и продолжал разрабатываться более десяти лет, выпуская новые релизы вплоть до 2020 года.