Введение

конкретная реализация 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.

Особенности

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.

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".

SXEmacs

Проект SXEmacs был создан на основе XEmacs 21.4 и продолжал разрабатываться более десяти лет, выпуская новые релизы вплоть до 2020 года.