Bug 52268 ((форк, Emacspeak, Порецкого))

Summary: Добавить пакет Emacspeak (форк Порецкого)
Product: New/proposed packages Reporter: Nikita <tseikovets>
Component: Обычный репозиторийAssignee: Artem Semenov <savoptik>
Status: NEW --- QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P5 CC: manowar, viy
Version: не указана   
Hardware: all   
OS: Linux   
URL: https://poretsky.github.io/packages/index-ru.html

Description Nikita 2024-11-29 01:30:59 MSK
Предлагается добавить в Sisyphus пакет Emacspeak в варианте форка Игоря Порецкого. Это многофункциональная самоозвучивающаяся рабочая среда на базе Emacs, обеспечивающая аудиоречевой доступ к локальным документам и программам, а также сетевым сервисам, которая является инструментом специальных возможностей Linux.

Emacspeak представляет собой подсистему для среды Emacs, содержащую полностью автономную реализацию системы невизуальной доступности, которая включает речевой вывод информации и звуковую сигнализацию. Он имеет тесную интеграцию с Emacs, являясь буквально обёрткой вокруг большинства функций, которые изменяют или иным образом модифицируют отображение содержимого интерфейса Emacs.

Оригинальный проект Emacspeak развивается с 1995 года Т. В. Раманом из Индии. В начале двухтысячных годов Emacspeak стал использоваться несколькими русскоязычными пользователями Linux, в процессе чего выявился ряд проблем оригинального проекта в отношении поддержки работы с русским языком. Был разработан ряд патчей для решения проблем с русским языком, а также для ряда других усовершенствований, но по различным причинам они не были в полном объёме приняты в upstream Рамана. Это привело к созданию параллельно существующего и периодически синхронизируемого форка Emacspeak с поддержкой русского языка и дополнительной функциональностью, который с тех пор разрабатывается и сопровождается И. Б. Порецким.

В Sisyphus уже присутствует и стабильно обновляется пакет оригинального Emacspeak т Рамана. Однако он содержит упомянутые проблемы с поддержкой русского языка. Фактически русскоязычные пользователи Emacspeak последние 20 лет используют не оригинальную версию Emacspeak, а его форк от Игоря Порецкого с рядом дополнительных компонентов и настроек. В связи с этим предлагается добавить в репозиторий форк Порецкого отдельным пакетом, но сохранить и пакет оригинального Emacspeak, так как между ними существует функциональная разница, и оригинальный Emacspeak может быть востребован в некоторых ситуациях.

Форк Emacspeak от Порецкого разрабатывается и сопровождается с оглядкой на сохранение возможности синхронизации с upstream, поэтому имеет некоторую специфику хранения в репозитории, а также полного конфигурирования для начала работы.

Во-первых, ветка master в репозитории форка Порецкого является автоматически импортируемой копией master оригинального проекта. Она не содержит никаких патчей. Функционально различающиеся состояния форка надо смотреть в других ветках репозитория. Сам Игорь Порецкий сопровождает сборки своего форка для LTS-версий Ubuntu и Debian. В репозиториях они хранятся в соответствующих ветках, откуда и надо собирать пакет.

Во-вторых, форк Порецкого в полном варианте поставки доконфигурируется двумя файлами дополнительных клавиатурных команд и общих настроек. Обычно их предлагается добавлять самостоятельно вручную после установки пакета форка, но, возможно, есть смысл включить их в пакет для Sisyphus сразу.

Таким образом, собирать форк Emacspeak от Порецкого надо так:

1. В репозитории выбрать ветку, соответствующую наиболее новой версии Ubuntu или Debian на момент сборки. Сейчас (29.11.2024) это ветка jammy (для Ubuntu 22.04 Jammy Jellyfish).
2. Последовательно применить все патчи из директории /debian/patches
3. Если автоматизировать добавление дополнительных конфигурационных файлов, то  с сайта Порецкого скачать файлы под заголовком "Дополнительные конфигурационные файлы". Сейчас (29.11.2024) это:
А) Клавиатурные комбинации для ряда полезных функций Emacs: https://poretsky.github.io/packages/files/80keybindings.el
Б) Общие настройки Emacs: https://poretsky.github.io/packages/files/80site-defaults.el
и обеспечить добавление этих конфигурационных файлов при установке пакета в каталог
/etc/emacs/site-start.d
4. Выполнить прочие мероприятия по подготовке пакета.

В spec-файле данному пакету наиболее логичным представляется указать категорию Accessibility.

Функциональные зависимости пакета:
* Emacs - базовая среда для работы самого Emacspeak.
* Multispeech - пакет речевого сервера Emacspeak с дополнительной функциональностью и синтезаторами речи, учитывающими специфику работы русскоязычных пользователей. Multispeech разработан также Порецким, и им традиционно доукомплектовывается форк Emacspeak от Порецкого.

Примечание 1: Emacspeak и speechd-el - это два отдельных независимых проекта, обеспечивающих невизуальную доступность среды Emacs. Они не связаны друг с другом, и каждый из них предлагает собственное решение по обеспечению доступности Emacs.

Примечание 2: Оригинальный Emacspeak от Рамана и его форк от Порецкого имеют существенные различия, описываемые более чем сотней патчей, и разные наборы дополнительных компонентов Emacs. Уместить их в одном пакете вряд ли возможно, поэтому предлагается прорабатывать именно схему упаковки их как двух отдельных пакетов.

Ссылки по теме:
* Репозиторий Emacspeak (форк Порецкого) на GitHub: https://github.com/poretsky/emacspeak
* Информационная страница проекта средств невизуального доступа на базе Emacspeak Игоря Порецкого: https://poretsky.github.io/packages/index-ru.html
* Страница пакета оригинального Emacspeak в Sisyphus: https://packages.altlinux.org/ru/sisyphus/srpms/emacspeak/