Капсула Никиты Попова


О Plan 9

[UPD: ]
Замолвите слово

Введение

Без сомнения, Plan 9 одна из самых интересных ОС, которую я встречал на своём пути. Подходы, которые были использованы при её проектировании, просты и универсальны. Такой же получилась и сама ОС. UNIX‘овое “всё есть файл” в ней возведено в абсолют.

Не удивительно, ведь её проектировали те же инженеры, что и оригинальную UNIX - Кен Томпсон, Деннис Ритчи, Роб Пайк, и др. Также в ней получили развитие такие подходы, как “текст как интерфейс” и “гомогенная операционная среда” - идеи Никлауса Вирта и его среды Oberon1. [просто сравните скриншоты, для остального нужно лезть в код]

ВСЯ архитектура ОС построена на взаимодействии с файлами:

  • Хотите создать файл? Создаёте файл.
  • Хотите создать TCP сокет? … Cоздаёте файл! [привет прикрученным сбоку поперёк сокетам Беркли2 с их специальными системными вызовами]
  • Хотите поднять VPN? Ну пока не будем об этом…

Любое устройство в машине представляется нам как иерархическая файловая система. Да, это накладывает некоторые ограничения на разработчиков драйверов. Ведь им приходится эту самую файловую систему проектировать. Но достигаемая при этом унифицированность всей системы экономит нам целую уйму времени при эксплуатации.

Сетевая прозрачность, которая была заложена в протокол 9P3 с самых первых этапов проектирования, стирает границы между машинами. Стало быть, не имеет значения где файл/устройство находится - локально или удалённо - взаимодействие будет идти по одному и тому же протоколу. Доступ к почте? К файловому хранилищу? Чату? Данным GPS? Всё возможно реализовать по одному протоколу.

Ну просто какая-то инженерная утопия.

Проблемы

Но если Plan 9 так прекрасен, то почему все до сих пор не него не перешли? Как я считаю, на это повлияло несколько факторов.

Статус

Plan 9 задумывалась экспериментальной ОС с закрытым исходным кодом и не избавилась от этого ореола до сих пор. На ней обкатывали новейшие концепций, которые получили своё развитие в ОС Inferno4. Изначально в ней не было почти никаких пользовательских программ. Только самое необходимое для работы. И, как следствие, …

Упущенное время

Исходный код Plan 9 был открыт под лицензией GPL-2.0-only (а затем и под MIT) лишь в 2014 году. Внимание сообщества было упущено. Уже во всю рос и ширился GNU/Linux, который “достаточно хорош”5. Подумайте о всех тех усилиях сообщества, которые были потрачены на развитие GNU/Linux. Быть может, с таким же вниманием к Plan 9 мы бы жили в совершенно другом мире. Но …

Архитектура

Особенности Plan 9 блокируют простую миграцию на неё ПО, написанного под UNIX. Получается, что огромный пласт программ, к которым все привыкли, гвоздями прибит к системным вызовам GNU/Linux и BSD. Сидеть и писать весь инструментарий с нуля с таким же рвением согласен очень ограниченный круг людей6.

Кроме того, что это трудоёмкий процесс, он также замедляется сохранением идейной чистоты ОС. “Лучшая строчка кода та, которая не была написана”. Мне эта идея близка, но не настолько же буквально. Возможность создания практически любого софта в виде скриптов оболочки интересная, но не всё ПО можно так реализовать.

Графика

(это уже лично от меня)

Из Plan 9 убрали именно то, почему я ушёл с Windows на семейство UNIX - удобную печатную машинку. Стандартная оболочка Rio и редактор/интерфейс Acme требуют от вас 3-х кнопочную мышь. Работать используя только клавиатуру если и получится, то будет очень дискомфортно и потребует от вас вносить изменения в код базовых утилит.

И знаете, я попробовал работать в этой парадигме. Но чем дольше я так работал, тем больше понимал, что это хоть и интересный подход [добавить свою команду в Acme можно просто написав её в панели!], но он отнюдь не позволяет мне работать также быстро, как с ориентированным на клавиатуру интерфейсом.

Стандартные CUA7? Забудьте.

Подсветка синтаксиса? Забудьте. [“Не пишите настолько сложный код, которому нужна подсветка синтаксиса”. Ну просто супер идея. Как же я сам не догадался то.]

Что делать?

Я уже некоторое время вынашиваю план по возврату в Plan 9 печатной машинки в виде небольшого набора программ:

  • тайлинговый оконник (на стадии экспериментов с вводом/выводом);
  • простой эмулятор терминала (ещё не приступал);
  • emacs-подобный текстовый редактор (на стадии первых набросков).

Но вот дилемма.

Оставить Plan 9 идеологически чистым произведением искусства и не дать ей раскрыться в полной мере?

ИЛИ

Залезть своими грязными ручонками с ПО, рушащим [возможно] философию всей ОС?

Как вы могли заметить, я склоняюсь ко второму варианту. Возможно многим не понравится то, что я собираюсь сделать. Даже при должном планировании и аккуратной работе я боюсь в своих решениях усложнить то, что не следовало бы. С другой стороны силой их использовать этот софт никто не заставляет. А вот от советов и коммитов я не откажусь.

Но, быть может, я не так одинок, как полагаю? Может людей, которые не смогли “пересесть” с UNIX на Plan 9 по схожим со мной причинам больше? И что будет, если все они получат хоть и не идентичный, но похожий на привычный инструмент поверх прекрасной архитектуры, с которым можно работать, забыв о границах машины? Я не буду бросаться такими формулировками, как “революция” или “небывалый прогресс”, но это однозначно будет интересное развитие событий.

Планы

Этой статьёй я хочу дать старт циклу публикаций, лирических и технических, посвящённых 9front8 [форк Plan 9].

Часть статей будут набросками к моей учебной работе по ОС [“будут” не значит часто!]. Технические же статьи (установка, настройка) будут полезны людям, которые только начинают своё знакомство с Plan 9. Как оказалось, их не так уж много даже на английском, не говоря уже про русский. Так новички и интересующиеся получат более быстрый старт, чем был у меня.

PS

Даже если вы прочитали эту статью через год, два, пять, десять лет и думали в своё время о том же - напишите мне в одном из моих ресурсов [лучше на почту или в nostr]. Очень интересно будет узнать ваше мнение на этот счёт.


  1. https://en.wikipedia.org/wiki/Oberon_(operating_system) Оберон ↩︎

  2. https://en.wikipedia.org/wiki/Berkeley_sockets Сокеты Беркли ↩︎

  3. http://9p.cat-v.org/ 9P ↩︎

  4. http://doc.cat-v.org/inferno/4th_edition/ Inferno ↩︎

  5. https://news.ycombinator.com/item?id=1732404 “Plan 9 failed simply because it fell short of being a compelling enough improvement on Unix to displace its ancestor. Compared to Plan 9, Unix creaks and clanks and has obvious rust spots, but it gets the job done well enough to hold its position. There is a lesson here for ambitious system architects: the most dangerous enemy of a better solution is an existing codebase that is just good enough.” Eric S. Raymond ↩︎

  6. http://9p.io/plan9/ Plan 9 Foundation ↩︎

  7. https://ru.wikipedia.org/wiki/IBM_Common_User_Access CUA ↩︎

  8. http://9front.org/ 9front ↩︎