Операционная система Plan9 создана в недрах компании Bell Labs в начале 80-х г.г. прошлого века. Разработчиками системы была группа сотрудников компании под руководством Кена Томпсона и Роба Пайка. Также в нее входили Дейв Пресотто, Дэннис Ричи и многие другие известные исследователи и разработчики. Причиной разработки новой операционной системы явилось понимание того, что концепции и идеи, заложенные в Unix в конце 60-х - начале 70-х г.г. отчасти оказались недостаточно продуманными и порой даже ошибочными. Технический прогресс развивался стремительными темпами, постоянно задавая планку разработчикам операционных систем - новые технологии, протоколы, сервисы, оборудование, задачи, требования безопасности и разделения прав пользователей, методы организации рабочего процесса. Все эти постоянно появляющиеся новшества должны отражаться в поддержке операционной системой. А для этого ее концепция и архитектура изначально должны быть гибкими, изменяемыми и расширяемыми.
Постепенно у группы разработчиков укрепилось мнение в необходимости разработки операционной системы, основанной на принципиально новой концепции, лучше отражающей тенденции развития компьютерных технологий. Основной акцент решили сделать на распределенности рабочей среды - рабочая среда должна быть абстрагирована от уровня железа и сетевой организации. Пользователь должен получать свое рабочее окружение - дерево каталогов, личные файлы, настройки, настройки учетных данных - вне зависимости от его местонахождения и особенностей взаиморасположения серверов. Разделение прав и доступа было решено организовать концепцией пространств имен - по аналогии с принципами, используемыми в современных языках программирования. Каждый пользователь, процесс, сервис, начиная работу с системой получал персональную конфигурацию рабочего пространства - индивидуально собранное дерево каталогов, набор доступных утилит и сервисов, переменных окружения, атрибутов доступа итд. Эти рабочие пространства существуют изолированно, не пересекаясь друг с другом. Сама операционная система также работает в своем собственном окружении, в которое никто кроме нее доступа не имеет. Таким образом решаются те же задачи, что реализовывались ранее системой прав и доступов для пользователей и групп, но более гибко и элегантно. Взаимодействие системы с железом, сервисами, процессами также было подвергнуто максимальной унификации и абстрагированию. Введена концепция "все есть файл" - интерфейсы процессов, сервисов представлены в виде файлов и виртуальных файловых систем. Взаимодействие реализуется посредством чтения и записи этих файлов.
Структура рабочего пространства формируется посредством сборки отдельных элементов (порой удаленных физически) в единое дерево. Для этого применяется операция монтирования, результат которого имеет значение лишь в рамках запустившего процесса и его потомков. При этом необходимость в ссылках (мягких и жестких) отпадает за ненадобностью и тоже упрощает общую архитектуру. В силу концепции "все есть файл" принцип монтирования ресурсов применяется в более широком смысле - монтированием можно подключать ресурсы физически внешней системы. К примеру, монтируя в свое рабочее пространство экран, клавиатуру и мышь удаленного сервера, можно получить аналог графического терминала удаленного доступа. Монтирование каталогов приводит к наложению их содержимого, таким образом подключающийся пользователь экспортирует свои настройки, утилиты, документы, а локальные версии таковых удаленного сервера оказываются для него скрытыми и замещенными своими версиями.
Унификации подверглось и ядро системы. В новой системе ядро не обязано знать все виды оборудования, сервисов, протоколов взаимодействия. Был разработан универсальный многофункциональный протокол взаимодействия - 9P, который брал на себя всю работу по взаимодействию с сервисами, системами. Они в свою очередь проектировались так, чтобы уметь взаимодействовать между собой в соответствии с организацией этого протокола. Ядро системы знает лишь об одном протоколе - 9P, посредством которого и осуществляет взаимодействие. Данная концепция отчасти похожа на работу FUSE-модуля в ядре Linux. Все процессы остаются на уровне взаимодействия с протоколом и не имеют доступа к адресному пространству ядра системы. Таким не менее элегантным образом достигаются требования безопасности системы и изоляции ядра от процессов. Применение концепции все есть файл позволяет протоколу в свою очередь абстрагироваться от деталей реализации оборудования и иметь вследствие этого достаточно простое устройство - своего рода взаимная унификация.
Подобная организация работы ядра позволила существенно упростить его структуру и сократить код. Так код ядра Plan9 (4th edition) составил 25000 строк C-кода (половина из которого приходится на сетевую реализацию), а в урезанном минимальном виде может быть скомпилировано из 6000 строк. Для сравнения, объем кода ядра Linux версии 0.97 порядка 42000 строк, а у релиза 1.0.0 был уже около 176000 строк.
Также разработчики признали ошибочность концепции скрытых файлов и спецатрибутов (suid, sticky bit). Концепция разделения пространства имен сделала ненужным понятие суперпользователя root и соответственно необходимость в командах su, sudo, chroot.
Развитие интерфейсов взаимодействия с пользователем подсказало перспективность ориентации на графический интерфейс и использования мыши. Графическая среда стала неотъемлемой частью системы. Графическая подсистема у Plan9 устроена достаточно просто. Отрисовка экрана представляет собой растровое изображение, с которым удобно работать как с графическим форматом. Содержимое экрана и окон приложений доступно в виде файлов устройств, доступных для записи и чтения. Эти идеи весьма похожи на устройство графической подсистемы ОС NeXT и возможно стали прообразом для языка Display PostScript использовавшегося в ней для отрисовки экрана.
В течении 10 лет по мере разработки Plan9 активно использовался во внутренней инфраструктуре компании Bell Labs - в качестве распределенных многопроцессорных систем, высоконагруженных решений, а также как пользовательская система и терминальный клиент. В процессе эксплуатации системы возникли многочисленные наработки, отразившиеся потом в архитектурных особенностях других операционных систем, в новых технологиях (распределенные вычисления, облачные хранилища). Наработки концепции "все есть файл" и файлового интерфейса (псевдофайловая система proc) были внедрены в Unix, оказавшей затем влияние на многие другие ОС.
Специально для Plan9 была разработана универсальная кодировка Unicode, ставшая впоследствии стандартом. Протокол 9P также широко используется в сферах, не относящихся к Plan9, к примеру для обмена сообщениями между хостовой и гостевой частью системы WSL.