Столлман, как всегда, велик
Sep. 12th, 2007 02:15 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В недавнем интервью Столлман сказал It doesn't matter how popular GNU/Linux gets, if it fails to give you freedom.
Собственно, в этой одной фразе сконцентрировано всё содержание моих двух предыдущих постов про интерфейсы (1, 2
Современные DE (и не только DE, Office suites и даже браузеры туда же) именно что fail to give me freedom.
Свобод, согласно тому же Столлману - 4:
0. To run the program as you wish.
1. To study the source code and change it so the program does what you wish.
2. To redistribute exact copies when you wish, either giving them away or selling them.
3. To distribute copies of your modified versions when you wish.
Речь идет, естественно, о свободе N 1 - изучать и модифицировать код. В реальной жизни у меня есть не более чем сколько-то времени, которое я могу потратить на устранение мелких неудобств или повышение своей квалификации.
В традиционном Unix этого времени более чем хватает, чтобы понимать что оно делает и как его исправить (или обернуть в обертку). Потому что система аккуратно разбита на компоненты, которые можно изучать по отдельности. Способы взаимодействия этих компонентов (пайпы, environment, коды завершения) просты и понятны, а также неплохо документированы.
А сколько времени надо потратить на изучение, скажем XUL, чтобы исправлять поведение браузера? Куда больше, чем на изучение shell.
Собственно, в этой одной фразе сконцентрировано всё содержание моих двух предыдущих постов про интерфейсы (1, 2
Современные DE (и не только DE, Office suites и даже браузеры туда же) именно что fail to give me freedom.
Свобод, согласно тому же Столлману - 4:
0. To run the program as you wish.
1. To study the source code and change it so the program does what you wish.
2. To redistribute exact copies when you wish, either giving them away or selling them.
3. To distribute copies of your modified versions when you wish.
Речь идет, естественно, о свободе N 1 - изучать и модифицировать код. В реальной жизни у меня есть не более чем сколько-то времени, которое я могу потратить на устранение мелких неудобств или повышение своей квалификации.
В традиционном Unix этого времени более чем хватает, чтобы понимать что оно делает и как его исправить (или обернуть в обертку). Потому что система аккуратно разбита на компоненты, которые можно изучать по отдельности. Способы взаимодействия этих компонентов (пайпы, environment, коды завершения) просты и понятны, а также неплохо документированы.
А сколько времени надо потратить на изучение, скажем XUL, чтобы исправлять поведение браузера? Куда больше, чем на изучение shell.
no subject
Date: 2007-09-12 02:08 pm (UTC)протокол, как правило, предполагает обмен сообщениями в обе стороны. Зачем это нужно в 90% - не понимаю.
ну так когда не нужно, тогда будет в одну сторону. главное, чтобы когда нужно это было просто организовать. и никакой тут большой проблемы нету - socket вон работает в обе стороны, но сетевым программам это никак не помешало.
вообще же главным словом было "структурированными". ну и идея, что пайпы должны всегда равноправны с файлами.
no subject
Date: 2007-09-12 02:18 pm (UTC)Процесс в достаточной степени изолирует компоненту от взаимодействующих с ней компонент. С учетом существования ulimit-ов он дает шансы взаимодействующим с ним обработать ЛЮБЫЕ его ошибки, вплоть до SIGSEGV.
Реализация компоненты в виде динамической библиотеки такой возможности не даёт. Более того, дает компоненте возможность напакостить в памяти приложения, которое её использует, таким образом, что это станет заметно далеко не сразу.
Ну и, как я уже писал выше использование протоколов, даже самых примитивных, типа вопросов, требующих ответа yes/no в корне противоречит равноправию папйпов/сокетов с файлами.
no subject
Date: 2007-09-12 02:28 pm (UTC)протокол, требующий подтверждения, это отнюдь не примитивный протокол. примитивный протокол - это http 1.0 - послал запрос, получил ответ.
no subject
Date: 2007-09-12 02:45 pm (UTC)компонент в виде lightweight процессов Erlang, отдельных интерпретаторов SafeTcl и тому подобных конструкций. Если у нас интерпретатор, даже байткода, навроде JVM, то мы можем себе многое позволить - он проконтролирует (хотя в том же SafeTcl лимитов на память и CPU Cycles нету. А надо). Но если речь идет о бинарном коде - не важно, C это, Fortran или даже Oberon-2, то процесс - единственный осмысленный способ изоляции.
Заметим что в OTP (Erlang-системе) те вещи, которые требуют использования чужих бинарных библиотек, зачастую реализуются через механизм "портов". Т.е. выносятся в отдельный процесс нижележащей ОС.
Система должна быть построена исходя из предположения что любой кусок кода в ней - untrusted.
no subject
Date: 2007-09-12 02:48 pm (UTC)и ничего хорошего в этом нет. ну ничего, думаю мультикоровость и вообще рост параллельности С таки добьет.
no subject
Date: 2007-09-13 12:26 pm (UTC)Один вопрос. Почему ты считаешь, что массовое переписывание существующей codebase - проще, чем создание нового процессора (пусть даже с учетом усилий на распространение и портирование).
no subject
Date: 2007-09-13 12:29 pm (UTC)И я как раз за сохранение существующей codebase в максимально возможном виде. Выкидывать только то, что последние 20 лет сделано, и то с разбором.
no subject
Date: 2007-09-13 12:46 pm (UTC)Такие задачи, как несогласованность интерфейса, аппаратно не решаются. Но это другие задачи. Здесь сдерживает отсутствие идей ИМХО.
no subject
Date: 2007-09-13 01:00 pm (UTC)no subject
Date: 2007-09-13 12:28 pm (UTC)Один вопрос. Почему ты считаешь, что смена парадигмы программирования (вместе с переписыванием всего, что придется переписывать) проще, чем сменить процессор.
no subject
Date: 2007-09-13 12:33 pm (UTC)Я предлагаю отказаться только от некоторых, не слишком распространенных технологий (плагинов в форме shared library). Которые легко заменяются на плагины в виде отдельных процессов с обменом данными с основным приложением через D-BUS, RPC, да хоть SOAP с сохранением всей функциональности и 95% codebase.
А процессоры менять совсем не предлагаю. По мне они и так неплохи. И мощности у них более чем достаточно, чтобы выдержать overhead от планируемого усложнения взаимодействия приложения с плагинами.
Бенефит - очевиден. Приложение будет способно обработать ЛЮБУЮ ошибку плагина, включая Segmentation Fault.
no subject
Date: 2007-09-13 01:00 pm (UTC)Я эту фразу воспринял как предложение вообще отказаться от shared library в существующем виде. А в этом случае overhead будет больше.
А вот твоего оппонента я читал не очень внимательно.
no subject
Date: 2007-09-13 01:10 pm (UTC)В принципе, должна быть выстроена иерархия доверия. Ядру и libc мы верим всегда. Драйверам устройств - уже не всегда, поэтому драйвера устройств, которые не настолько критичны для жизни системы, чтобы при отказе этого устройства она не могла функционировать, имеет смысл выносить из ядра в userspace процессы. Что уже активно делается всякими libusb, sane, ghostscript и т.д.
Прикладной программе мы верим меньше чем wm или login shell. Плагинам - ещё меньше. Например, имеет смысл устраивать основную программу так, чтобы в случае падения какого-нибудь фильтра или экспортилки в конкретный формат, несохраненное изображение в графическом редакторе не гибло.
no subject
Date: 2007-09-13 01:21 pm (UTC)Это не процесс, это фича. :)
... И слава Богу ...
no subject
Date: 2007-09-16 11:19 am (UTC)А так как сейчас - фигушки.
Вот когда появится разумное API вида "передать сообщение" в котором можно будет аттачить куски данных (хотя бы размером кратным странице) и чтобы они шарились между процессами - может, что-то и получится. Только не надо предлагать mmap.