February 7th, 2014

404

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

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

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

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

Допустим, мы сталкиваемся... чтобы не разводить холивар, с сервером генератора запахов. 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 в своей пуристской форме.
404

nfs over openvpn over adsl over govno-cyprus-internet

Довольно забавное зрелище (это я пытаюсь найти альтернативу подлагивающему sshfs). Скорость мирно гуляет между 5Мб/с и 0, символизируя таким образом реальные 400кбайт/с, которые там ожидаются. В принципе, жить можно. Меня интересует даже не скорость, а поведение при уходе компьютера в sleep и возврате.

-o reconnect у sshfs помогает, но приводит к тому, что handler у krusader'а инвалидируется (то есть надо перезаходить в каталог).

А мне хочется иметь его персистентным коннектом, который бы сохранялся неограниченно долго (вне зависимости от того, сколько спал компьютер и сколько раз за это время ребутился dedicated).

Насколько я понимаю, вот уж с D+ персистентностью у NFS всё просто настолько хорошо, насколько можно себе представить.