[devel-distro] Очень простой конфигуратор
Leonid Krivoshein
klark.devel at gmail.com
Sat Oct 19 03:36:22 MSK 2024
On 10/18/24 23:01, Paul Wolneykien wrote:
> Всем привет.
>
> В соседних обсуждениях по конфигуратору и инсталлятору был высказан
> ряд тезисов:
>
> 1. первоначально предполагалось появление консольного установщика
> (его порой [не хватает?]);
Возможно это было лет 15-20 назад. Сейчас же речь шла о безмолвной
развёртывалке, которая выполняет работу установщика по готовому файлу
ответов. Будет ли при этом маячить на переднем плане GUI ползунок с
меняющимися слайдами или же будут бежать сообщения в текстовую консоль
-- вопрос десятый, он зависит только от того, кто и как запустит эту
развёртывалку. Чего точно не требуется -- конфигурировать установку в
текстовом режиме.
> 2. в том числе и для безголовых (админов, хи-хи) серверов в
> датацентрах с COM-портом;
У такого установщика вообще нет фронэнда никакого, т.к. нет видеокарты.
Фронтэнд на другом конце провода. Это всё та же безмолвная развёртывалка
(silent autoinstaller).
> 3. нужна дружественность к людям с ограниченными возможностями;
Желательно. Для установщика в GUI.
> 4. важен адаптивный интерфейс для устройств с маленьким экраном;
Вопрос дискуссионный. Речь была о конфигураторе. Конечно, желательно
иметь возможность поменять доменные политики или помониторить свои
сервера, находясь в срочной командировке на Мальте. Но на такой случай и
ноутбук можно взять, чем мыкаться с телефоном. К сожалению, именно
адаптивный интерфейс обычно сужает выбор инструмента и ограничивает
подход к проектированию интерфейса.
> 5. если хочется, чтобы установщик или конфигуратор был не только
> в браузере, достаточно единой кодовой базы для интерфейсов
> фронтендов;
> 6. эта база должна крайне медленно устаревать (вместо "не работает
> на вчерашнем браузере");
> 7. и по-возможности быть декларативным (!) описанием фронтенда;
Да.
> 8. юниксы вырвались вперёд на простоте, человекопостижимости;
Не думаю, что они особо куда-то вырвались, но они надёжны.
> 9. не должно быть экспоненциального роста сложности для развития
> и поддержки системы конфигурации;
Да.
> 10. потребительские качества программы должны оцениваться с позиций
> потребностей высококультурного, воспитанного человека;
> 11. ибо заботиться о людях --- не значит потакать их немощам, но
> помогать им преодолеть их.
>
>
> Хочу сказать, что по первому пункту имею некоторые наработки. Однажды
> (судя по git это было 12 лет назад) на архитектурной базе нашего
> альтератора был разработан ряд модулей для настройки сторонних
> (и проприетарных) программ и, частично, для настройки базовой системы
> Альт-СП в плане сети. Для последнего были заменены или дополнены
> стандартные модули типа alterator-net-eth. Почему же это потребовалось?
> Дело в том, что первым условием того заказа было... чтобы конфигуратор
> работал в консоли.
>
> К сожалению, весь код целиком не сохранился. Но сохранилась
> shell-обвязка вокруг woo, имитирующая alterator/woo на scheme [1],
> а также вторая библиотека, непосредственно предназначенная для
> построения текстовых диалоговых интерфейсов [2] на базе dialog(1).
>
> Сразу добавлю, что похвастаться в этом коде особенно не чем: я сейчас
> поглядел, там eval на eval и eval погоняет; часть из них явно не нужна,
> а остальные --- не санитизируются. Но речь на самом деле не об этом
> конкретном коде. А о том, что когда-то существовал вполне рабочий
> прототип из 5--7 модулей альтератора, построенных по диалоговому
> принципу. Что показал данный эксперимент? Он показал и доказал
> практически, что бэкенды на базе alterator/woo, написанные с оглядкой
> на index.scm и index.html, могут быть использованы также с принципиально
> иной структурой фронтенда, зажатого в узкие рамки таких категорий UI
> как "двойственный выбор", "множественный выбор", "подтверждение или
> отказ", "ввод данных" и --- главная особенность --- "уровень,
> подуровень, под-подуровень, и т. д." (вместо одного сложного окна
> дерево простых).
>
> Что тогда послужило отправной точкой? Кажется, для соседнего проекта
> нужно было собирать кастомизированные ядра, а значит перед глазами
> был диалоговый конфигуратор ядра. Было вполне логично реализовать
> подобное на имеющейся базе alterator/woo + backend3. И это что-то
> получилось: уж не знаю, благодаря данной архитектуре или же вопреки
> ей.
>
> Что можно сказать о диалоговой структуре UI сегодня, в том контексте,
> который определили соседние обсуждения по конфигуратору и инсталлятору?
> Номера пунктов соответствуют тезисам в начале данного письма.
>
> Во-первых, она с лёгкостью покрывает пп. 1, 2, 3 и 4. В частности,
> для п. 3, посредством замены dialog(1) альтернативной программой,
> реализующей потоковое текстовое меню и добавлением TTS, получаем
> настоящее голосовое меню, которое не нужно "табать" в поисках этих
> странных кнопок из мира зрячих. Для реализации п. 4, опять же,
> достаточно заменить саму dialog(1) на подходящую графическую реализацию
> меню.
>
> Во-вторых, пп. 5--7. С ними тоже тут нет никаких проблем. Более того,
> на действительно декларативном уровне я не могу представить ничего,
> кроме описания кейсов вопрос-ответ. Любое другое "декларативное"
> описание UI на проверку оказывается пустой рекламной декларацией
> разработчика (продажника), поскольку обязательно оперирует такими
> плоскими (двухмерными, то есть) понятиями, как "панель", "кнопка",
> "маркировка" (label), "100% по ширине", "по левому полю" и т. д.
> Пустой декларацией оказывается в таком случае "переносимость",
> "независимость от платформы" и пр.
>
> По сравнению с такими обещаниями переносимости и независимости
> конфигуратор ядра Linux ведёт себя очень и очень зерьёзно. Из
> текстового он без труда превращается в графический ("на той же
> кодовой базе", п. 5), его не трудно вообразить и в 3D/VR. Но конечно,
> при всех возможных тут красивостях и даже украшательствах,
> пользователь, в итоге, всё равно оказывается перед выбором из тех же
> самых вопросов и альтернатив, которые заложены в диалоговое дерево и
> ради получения ответов на которые и запускается конфигуратор. И это ---
> очевидный минус, скажет кто-то.
>
> Но минус ли это на самом деле? Если мы, в-третьих, посмотрим на
> оставшиеся тезисные пункты 8--11, то можем рассчитывать на вполне
> положительный отзыв насчёт простоты (разработки) и "олдскульности"
> (в хорошем смысле) использования диалоговой структуры.
Всё немножечко зависит от того, какими данными и как будет оперировать
конфигуратор. Потому что одно дело -- включить/отключить сборочную
опцию, и в самом сложном случае дописать текстовое значение в поле, и
другое дело -- современный диалог с выбором точки на карте для указания
временной зоны. Вся олдскульность уходит на пенсию.
> Важный момент. Каким неоспоримым преимуществом обладает диалоговый
> интерфейс для настройки чего-либо? В соседних обсуждениях об этом,
> кажется, никто не говорил (или я пропустил). А вот каким. На мой
> взгляд, древовидная структура --- единственная до конца и полностью
> документируемая структура. Причём, однозначно документируемая.
Да, дерево -- интуитивно понятный и наиболее часто используемый элемент
в классических конфигураторах. Я приводил примеры: RSAT & Ко, РедАДМ.
Когда речь о тысячах модулей, кнопочками туда/сюда не полистаешь, дерево
напрашивается и в том случае, когда мы классифицируем большое число
настроек, когда мы ставим одно в зависимость от другого, когда мы хотим
делегировать полномочия на целый куст настроек или когда наше дерево,
подобно структуре LDAP, собирается из разных частей и хранится в некоей
распределённой системе.
> Все остальные варианты конфигуратора требуют написания
> иллюстрированной документации со снимками экрана, которая из-за этого
> страдает неоднозначностью и рискует потерять свою актуальность с
> каждой сменой брэндинга и графического тулкита. Хотя я при этом совсем
> не против иллюстраций, нет. Но согласитесь, что мануал по настройке
> ядра с иллюстрациями текстовых боксов на 100% годится и в том случае,
> если я использую "make xconfig". Это потому, что пользователь работает
> здесь с логической структурой, которая не меняется.
>
> Теперь предложение.
>
> Как вы уже поняли, лично мне идея диалогового конфигуратора
> (инсталлятора) кажется интересной и перспективной. И я бы даже взялся
> за её реализацию. Однако в одиночку что-то тащить очень тяжело.
> Особенно, если это что-то потом или сразу окажется не нужным.
> Поэтому предложение к единомышленникам, если таковые, конечно, имеются:
> а) отозваться; б) поделиться наработками (хотя бы и теоретическими);
Первоочередной вопрос, который надо решить:
https://lists.altlinux.org/pipermail/devel-distro/2024-October/003066.html
Из него вытекает многое. Если готовы идти по пути 1, стоит определиться
с БД конфигурации, её API для фронтенда и бэкенда, механизмом её
взаимодействия с rpm и другими глубоко альтовыми вещами. Мне кажется,
что проще и намного лучше иметь API для работы с этой БД, нежели
выстраивать иные виды взаимодействия. Тогда и конфигурация будет
доступна не только в пределах конфигуратора, и подходы к конфигурации
будут едиными.
К примеру, механизм debconf по API очень похож на наш woo, только там
база, у нас же её нет, всё в пределах модуля: man 7 debconf-devel. И
через этот механизм организован интерактивный диалог, что лично мне не
нравится, т.к. я убеждён, что это фронтенд должен дёргать и управлять
бэкендом, а не наоборот. Просто у них бэкендов уйма, фронтенд один.
> в) организоваться в рабочую группу по данному вопросу.
>
>
> ---
> [1]:
> git://git.altlinux.org/people/manowar/packages/alterator-dialog-functions.git
> [2]: git://git.altlinux.org/people/manowar/packages/dialog-framework.git
--
WBR, Leonid Krivoshein.
More information about the devel-distro
mailing list