amarao (amarao_san) wrote,
amarao
amarao_san

Category:

О человеконенавистническом ПО

Есть два вида фич: обязательные и не обязательные.

Вторые - это фичи.
Первое - это прямая агрессия против пользователя.

Давайте я приведу простой пример.

Допустим, мы сталкиваемся... чтобы не разводить холивар, с сервером генератора запахов. fragranced, например.

Как выглядит доброе ПО?

/etc/fragranced/fragranced.conf

Умеет работать с dbus, файловыми и сетевыми сокетами. В депенденсах - 8 специфичных библиотек и fragrance-utils.

... Внутри конфига, в зависимости от инсталляции, может быть либо 1-2 строчки (лог файл, номер устройства), или гигантская простыня, которая включает в себя:
* настройки ssl
* интеграцию в SecureFrarance v2 и v3
* Kerberos-авторизация и поддержка multirealm систем
* Участие в распределённом кластере, поддержка кворума и фенсинга
* Интеграция с fragrance-recording и fragrance-streamed.
* Поддержка роаминга между устройствами
* Использование нескольких видов баз данных
* Выбор между разными серверами сообщений, и их настройками.
* Подключаемые библиотеки для реализации новых фич
* Интеграция с systemd/console-kit
* Поддержка network-manager
* Реализация DRM (посредством anti-gpl wrapper'а)
* Поддержка multitenance-установки, с несколькими устройствами
* Встроенный аккаунтинг и интерфейсы для биллинга
* Режим регионального полисинга с использованием полисера ядра, позволяющего накладывать ограничения согласно региональному законодательству
* Закрытый режим работы для реализации сертифицированных решений

И всё это не обязательно.

Как будет выглядеть человеконенавистнеческое ПО?

Для установки fragranced нам потребуется: установить java, erlang virtual machine, mono (для реализации разных подсистем).

Конфиг задаётся: частично, при старте, из json-файла /etc/Nuolave/flavor.json, плюс ~/.smell.xml у текущего пользователя.

При конфигурировании настройки подключения к серверу сообщений обязательно указывать в файле /etc/Nuolave/fralib/connectors/connectors.py. Настройки локальных сокетов указаны в /etc/Nuolave/conlib/accepting/linux.ini, если необходимо использование файловых сокетов, то поведение conlib можно поправить в /etc/Nuolave/conlib/lib/factory.asn1 и запустить обновление runtime сборок посредством monctl, потом нужно подключиться к агрегатору (agcontrol connect, в открывшемся шелле написать attach (тут внутренний ID процесса agmain внутри вирутальной машины erlang) и выполнить команду reinit.

При необходимости настройки устройства можно поменять с помощью запроса SQL в таблицу d_params.

...

Собственно, что я хочу сказать. Уровень человеколюбия в ПО определяется тем, как много (мало!) надо изучить для запуска ПО за пределами предметной области этого ПО.

Требования к пониманию предметной области - пожалуйста. А вот требовать от человека знания как в scala пишется Null, или особенностей xsl при настройке, например, прокси сервера - это гигантское свинство.

Чем больше несвязных областей знания приходится привлекать к запуску и нормальному сопровождению ПО, тем более оно халтурно сделано. И нет, у этого не может быть никаких оправданий. Задачей ПО является абстрагирование задачи от baremetall до уровня терминологии предметной области. Даже если baremetall это SGML в своей пуристской форме.
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 12 comments