История MenuetOS |
|||
Часть вторая: Цели проекта. Название. Первые шаги MenuetOS. |
|||
"Операционная система — это основа всего, что происходит в машине. Ее создание — самая сложная задача. Создавая операционную систему, ты строишь мир, в котором будут жить все остальные программы, работающие на компьютере. По сути ты задаешь правила: что допустимо и может быть сделано, а что — нет. Так можно сказать про любую программу, но к операционке это относится в первую очередь. Она подобна конституции созданной тобой страны, а все остальные программы — лишь обычные законы." Линус Торвальдс Цели MenuetOSВилле начинал программировать в 1980-х и к тому же он ровесник Линуса Торвальдса. Они жили в одном городе, учились в одном университете, перешли с "других компьютеров" на PC в начале 1990-х. Видимо, рассматривая их судьбы вместе, можно понять их отношение к своим детищам - операционным системам Linux и MenuetOS. Их можно назвать носителями свободного духа компьютерного творчества - духа хакеров 60-80х. Из легендарной лаборатории искуственного интеллекта Массачусетского Техногологичекого Института пришло понимание того, что программирование - это прежде всего акт творчества, а не просто способ зарабатывания денег. Творчество неразрывно связано с попыткой преодолевать барьеры обыденного, развиваться и достигать новых барьеров, преодоление которых потребует новых усилий - сладких мук творчества. На машинное железо и языки программирования они смотрели как материалы, обладающие потенциалом. Также смотрит художник на краски или гончар на глину. Одухотворить железо, раскрыть его потенциал можно было написанием программ, использующих зачастую нестандартные режимы микросхем. Сколько стоит настоящее произведение искусства? Хотя это вещь неутилитарная, но зачастую её цена очень высока для большинства людей. Уникальные произведения искусства выставляются в галереях, чтобы люди могли их видеть и приобщаться к искусству, наглядно постигать методы преодоления творческих барьеров. Этим же руководствовались и хакеры из MIT - они считали, что программы и технологии программирования должны быть доступны для каждого. "Для многих людей — и для меня в том числе —
интеллектуальная собственность связана с человеческой изобретательностью,
самым главным, что отличает людей от животных (конечно, не считая больших
пальцев). С этой точки зрения само название «интеллектуальная собственность»
является оскорбительным: это не та собственность, которая может быть
продана, как обычное имущество, это продукт творчества — величайшее
достижение рода человеческого. Искусство с большой буквы. Она может
быть Моной Лизой, а может быть результатом долгой ночи программирования,
причем результатом, которым ты как программист страшно гордишься. Драгоценность,
которую невозможно продать, — неотъемлемая часть тебя самого. "В основе этого проекта лежит крайне простая идея (так называемый «принцип открытых, исходников»): информация — в данном случае исходный код, или базовые команды операционной системы — должна свободно и бесплатно предоставляться всем желающим ее усовершенствовать. И полученные усовершенствования тоже должны быть доступны всем свободно. Именно эта концепция в течение столетий лежала в основе развития науки". Линус Торвальдс Программа - настоящее произведение искусства - должна быть интересной для создателя, а полезна она или нет - вопрос второстепенный. Решение трудных задач - это такой же творческий процесс, как и придумывание этих задач. Итак, решение неординарных задач с помощью компьютера, управление им в свое удовольствие, неформальный подход к задаче - неотъемлимые слагаемые "технологического процесса" хакеров - людей, увлеченных "интересным" программированием. Результат труда хакеров называется "Правильная вещь" (Right Thing - "неправильное", нестандартное решение задачи или сама задача является нетрадиционной). Можно сказать, что для хакеров СПОСОБ ("технология" программирования, приемы оптимизации и т.п.) имеет не меньшее значение, чем ЦЕЛЬ. Как известно, Линус Торвальдс создавал Linux в основном для своих собственных нужд. Поэтому целью было написание работающего кода (еще одной хорошей ОС на Си), а не произведения искусства. С MenuetOS всё было не так - Вилле задумал создать концептуальную "Правильную вещь" - уникальную однодискетную операционную систему с графическим интерфейсом, написанную полностью на ассемблере. Написание операционной системы целиком на одном языке уже давно не новость - сразу вспоминается машина Лилит, в разработке которой принимал участие Никлаус Вирт(автор Паскаля , Модулы, Оберона, идеи "П-кода" (предка технологий Java, .Net)) - несомненно классный "университетский" хакер: "Чтобы удержать проект в разумных рамках, я придерживался трех догм: целью был компьютер с одним процессором, на котором работает один пользователь и который запрограммирован на одном языке. Заслуживает внимания тот факт, что эти краеугольные камни были диаметрально противоположны духу времени, который благоволил к исследованиям многопроцессорных конфигураций, многопользовательских операционных систем с разделением времени и к стольким языкам, сколько можно собрать". В общем-то, даже идея написания ОС на ассемблере не нова - это было реализовано в конце 1980-х в операционной системе GEOS, которая была изначально написана для компьютеров C64, а потом портирована на PC(видимо Вилле об этом не знал). Кроме того, к тому времени уже был выпущен однодискетный QNХ Demodisk, а также существовали, например, µnOS и пресловутые MS Windows 1, 2. Казалось бы нет ничего того, что не было бы придумано раньше. Тем не менее, объединение трех идей (ассемблер, графический интерфейс, одна дискета) в некотором роде уникально. Вилле просто захотел узнать, "возможно ли это" и получил положительный ответ. Это можно рассматривать как подтверждение концепции, что является не только персональным достижением, но и возродило интерес к программированию на ассемблере, повлекло создание ряда новых ассемблерных операционных систем в СНГ (AtomOS, GreyOS, MiraculixOS). Итак, Вилле решил написать всё на ассемблере. Причина? Он объяснил это (на канале IRC) примерно так - современные языки (он говорил о своем опыте с Javascript, а также упоминал Java и XML-подобные языки) слишком медлительны в смысле времени выполнения, они хороши для маленьких пользовательских проектов, но на них сложно написать ОС. Кому нужна ОС, которая будет грузиться 10 минут из-за неоптимизированного кода ядра? Написание частей ОС на разных языках вызывает проблемы с взаимодействием этих частей. А поскольку без асемблера сложно обойтись, то и само ядро ОС видимо стоит написать полностью на ассемблере. "Всё здание (*весь курс) обучения программиста построено на песке без прочной базы программирования на ассемблере" Дональд Кнут Сразу возникает вопрос о невозможности портирования на другую платформу. Вилле ответил на это тем, что сейчас около 90% всех компьютеров используют наборы инструкций x86-32 и x86-64. Бороться за 10% пользователей - значит отказаться от ассемблера, что противоречило первоначальному плану создания быстрой ОС. Аналогично Вилле при создании ОС руководствовался тем, что надо поддерживать утвердившиеся стандарты типа файловой системы FAT, а не десяток других малораспространенных файловых систем. С другой стороны, так ли важен для посетителей музея материал, из которого сделано красивое блюдо? Это может быть серебро или фарфор - не в этом суть. Главное - количество "попугаев" (доля интереса, восхищения и т.п.), которым оценивают посетители это произведение искусства. "Как я уже говорил, моя операционка была не очень полезной. Она тогда и не предназначалась для работы. На нее можно было только любоваться. И восхищаться ею. То есть просто экспонат для группы людей, которые интересуются разработкой операционных систем. Для горстки технарей с узкой специализацией. Реакция была неизменно положительная, но при этом так же неизменно звучало: «А вот хорошо бы она еще это делала» или «Смотрится классно, но на моем компьютере не работает»". Линус Торвальдс Произведения искусства в основном неутилитарны (за исключением одежды, оружия, утвари и т.п.), они привлекательны заложенной концепцией. В этом смысле MenuetOS заслуживает свою долю интереса у каждого проходящего мимо. "Сама по себе большая скорость или крутая графика еще не делают игру классной. Тут важнее всего какая-то зацепка — то, что заставляет в нее играть. Это как с кино. Спецэффекты — это вещь, но нужен еще и сюжет." Линус Торвальдс Что заставляет "играть" в MenuetOS? Почему она вызывает интерес у пользователей и программистов? Про пользователей сложно сказать однозначно, но видимо относительная простота использования (графический интерфейс, дискетный статус и т.п.), открытость проекта и наличие некоторых программ действительно способны возбудить интерес у многих людей, далеких от осестройтельства. Программистов интересует MenuetOS как полигон для программирования, возможность узнать много нового, пообщаться коллегами на "интересные" темы. Открытые проекты также являются неплохим способом завоевать авторитет во всем мире, не прекращая получать "удовольствие" от программирования. Ведь только в ассемблерной ОС есть возможность компилировать ядро ОС и большинство программ меньше, чем за секунду. Посмотрите сами: бесплатная ОС с открытыми исходниками, бесплатным развивающимся компилятором и неплохим API - вот и всё, что нужно для написания программ, лучших по соотношению "польза/размер". "Вы скорбите о тех временах, когда мужчины были
настоящими мужчинами и сами писали драйверы устройств?" Стремление сделать самую быструю операционную систему привело к выбору монолитной архитектуры ядра с заявкой на работу в реальном масштабе времени. "Одним из аргументов против микроядер всегда была их низкая производительность." Линус Торвальдс Простота работы с "железом" была вторым критерием - высокоуровневые надстройки не позволяют использовать все особенности конкретного устройства. Вилле написал страничку в 2001 году страничку, в которой описывал техническое
состояние системы. В декабре 2001 года Вилле опубликовал статью в журнале DDJ (начало - идеологическая часть статьи; затем идет описание работы программ в MenuetOS). Русский перевод всей статьи http://coolthemes.narod.ru/statia7.htm
В дальнейшем попытки Я. Пельчара развивать C library были интерпретированы на OSNews как инструмент для будущих версий MenuetOS. Вилле разозлился и написал:
И хотя Ярослав написал , все неассемблерные программы были убраны с официального сайта, что вызвало некоторое охлаждение интереса к C library на целый год. Что в имени тебе моем...Новая операционная система получила свое имя от названия танца "менует" и слова "меню" (компонент GUI). По словам создателя, это означает, что использование компьютера должно быть простым, как использование меню, и забавным, как танец (в молодости Вилле увлекался игрой на скрипке и фортепиано). Ответ Вилле на вопрос о названии системы. Первые шаги МенуетОСПервая рабочая версия МенуетОС была создана 16 мая 2000 года Вилле Турьянмаа из Финляндии, который оставался ее главным разработчиком и популяризатором в течении многих лет. Вот скриншот сайта Вилле от 10 мая 2000 года (верхняя часть страницы) Кстати, Вилле скромностью не страдал и ядро изначально называлось KERNEL.VMT (его инициалы). Затем он получило расширение MT, а впоследствие и привычный MNT.
Начало списка файлов в директории с исходниками Menuet К середине октября сайт выглядел так (верхняя часть) Время шло и уже можно было увидеть скриншоты (MenuetOS 0.22) Итак, принципами, заложенными при создании новой операционной системы, являются небольшой размер (вмещается на дискету), большая скорость за счет использования ассемблера (также работы с рам-диска и потенциальной возможности того, что ядро может постоянно находиться в кэше процессора ->появление процессоров с Мегабайтными кэшами является большим плюсом для MenuetOS) и простота создания оконных программ на ассемблере. Тем не менее желания обеспечить максимальную совместимость (ориентация на старые железные стандарты, которые должны поддерживаться на любом компьютере) и как можно быстрее получить рабочую версию привели к наличию ряда ограничений и тупиковых решений. Также оптимизация кода не была первоочередной целью Вилле, он стремился создать понятный даже для начинающих код - ведь он расчитывал на помощь людей со всего мира. Сейчас "советская" команда МенуетОС старается исправить существующее ядро и добавить инструментарий, который был обойден вниманием (буфер обмена, драйверная модель через подключаемые библиотеки, поддержка других носителей информации (кроме рам-диска и ЖД), менеджер памяти, инсталляция на винчестер и т.п.). В качестве основного компилятора для МенуетОС был выбран FASM (хотя и не сразу, версии до 0.64 были написаны на NASM'e) - свободно распространяемый и многофункциональный ассемблер для платформы x86. Также FASM является хорошо переносимым (есть версии для DOS, Linux, Windows, BeOS...), что позволило впоследствии портировать его и под MeнуетОС. Но вернемся к первым месяцам MenuetOS: - в версии 0.06 добавилась поддержка мыши PS/2; - в версиях 0.07 - 0.09 было реализовано перемещение окон, в том числе их перекрытие; - версия 0.08 распространялась уже с исходниками ядра ОС; - в версии 0.11 появился текстовый редактор; - в версии 0.14 была реализована смена фонового рисунка; - версия 0.20 - совместимость с Vesa 2.0 - в версии 0.22 появилась панель быстрого запуска; - в версии 0.26 - CD-плеер и установка системного языка; - версия 0.31 - новый тип окна; - версия 0.33 - переход на лицензию GPL; - в версиях 0.35-0.36 - работа над чтением FAT32 - версия 0.38 - новый заголовок для программ (смотрите дистрибутив 0.46 - самый ранний из доступных в Интернете). 01 апреля 2001 (для версии 0.38) появляется программа от Paolo Minazzi - Тетрис. С этого момента успех Menuet'у был обеспечен ;-) Впоследствии Paolo сделал поддержку звуковых SB-карт и запись на разделы FAT32 (версия 0.44). В версии 0.39 появился порт ассемблера FASM(версия 1.10). В 2001 году его веб-страничка была здесь - http://omega.im.uj.edu.pl/~grysztar/ 17 апреля 2001 года был открыт сайт http://menuetos.org. Его IP-адрес 213.188.129.77 Первая программа, написанная и скомпилированная в MenuetOS - BIGTIME (версия 0.40d). В версии 0.40 были документированы все системные функции. В версии 0.46 добавлена возможность запускать программы с параметрами.В версии 0.52 были заложены основы пользовательских (не встроенных в ядро) драйверов. Операционная система росла и хорошела. И наконец, наступил великий день - 5 сентября 2001 года о MenuetOS 0.54 узнал весь мир. "Думал ли я, что маленькая операционная система, которую я писал для себя, когда-нибудь разлетится по всему миру? Ни в коем разе. Я был поражен, правда." Линус Торвальдс - При написании этой части я руководствовался: 1) статьей Geek OS (Максим Сохацкий); 2) книгой Just for Fun (Линус Торвальдс); 3) выступлением при получении премии Тьюринга "От разработки языков программирования к конструированию компьютеров" (Николаус Вирт). |