Выход из тени

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

В юности нас, троих друзей программистов (Александр, Александр и Алексей) объединяла общая тяга к компьютерам. Мы были "всеядны" и с удовольствием проглатывали любую информацию, касающуюся программирования и компьютерного железа. Всеми правдами и неправдами обеспечивали себе доступ компьютерам. Кроме этого, в нашем стремлении узнать больше нас подгоняло соперничество, и сразу, узнав новое, мы спешили поделиться этим знанием друг с другом. С тех пор прошло много лет и каждый пошёл своим путём, но этот путь у каждого из нас связан с программированием.

Я расскажу тебе свой путь. Всё началось с юношеского максимализма. Мне повезло, я застал время, когда компьютеры были уже маленькими, а программы ещё маленькими. В умных книжках, в которых мне не отказывали родители, в то время писалось как работать в командной строке MS-DOS и что MS-Windows 1.0 - бесполезная надстройка, впустую пожирающая ресурсы компьютера. Ты помнишь это время? В это же время широким массам уже пошатнувшегося СССР стали доступны, так называемые, домашние компьютеры. Что из себя представлял домашний компьютер? Обычно это был маломощный персональный компьютер, использующий телевизор в качестве монитора, кассетный магнитофон в качестве внешнего накопителя и, что характерно, собранный из отечественных элементов. Да ты точно должен помнить это время.

Стоит ли говорить, что использование магнитофона в качестве внешнего накопителя, мягко говоря, неудобно? Конечно, загрузить игрушку с кассеты - это полбеды. Но использование магнитофона для хранения разрабатываемых программ, это есть мука невыносимая. Когда я вспоминаю об этом, то который раз преклоняюсь перед поколением, хранившем свои программы на перфокартах.
Время шло, и хоть доступ MS-DOS совместимым компьютерам оставался нашей заветной мечтой, появилась возможность использовать пятидюймовый дисковод вместе с домашним компьютером. Это был прорыв. Представляешь, ОПЕРАЦИОННАЯ СИСТЕМА! На домашнем компьютере! И не беда, что пятидюймовые диски читались через раз, не беда что CP/M не поддерживал и десятой части того, что имели пользователи MS-DOS. У нас была операционная система на домашнем компьютере!

Ты просто обязан помнить это время. А что же Юникс? О..., Юникс! Юникс в то время считался уделом гуру. Юникс использовался на серверах Релкома. Ты помнишь Релком? Ну да ладно...

Всё началось с Бейсика и Ассемблера. Ещё во времена домашних компьютеров, мы поняли, что некоторые вещи нарисовать на Бейсике невозможно. Некоторые задачи могут быть решены только на Ассемблере или с использованием компилятора. Компиляторов под рукой не было, зато ассемблера было предостаточно. :) Затем был Pascal на учительском ДВК. Затем было стояние в лаборатории кафедры за спиной старшекурсника, в ожидании когда он сможет и захочет поделиться машинным временем. Затем лабораторная на ассемблере и дипломная работа с многозначительным названием "Многозадачный монитор САПР". Именно в то время мне попалась книжка с описанием защищённого режима процессора I386. Это была эра ассемблера, имея поверхностные знания о дизайне операционных систем, были потрачены сотни часов на разработку программы, которая умела переходить в защищенный режим и переключать задачи. Туда же были портированы несколько ни с чем несовместимых драйверов и оконная система, рисующая окна в псевдографическом режиме. Всё это работало параллельно от переключаемого таймером диспетчера задач. Возможно, немаловажной деталью будет то, что в это время повсеместно использовался MS-DOS, который и был загрузчиком многозадачного монитора. В настоящее время такие трюки невозможны, поскольку MS Windows держит все ресурсы "в своих руках". Поэтому чаша написания начального загрузчика меня обошла. Точнее не обошла, я как и все забросил проект, написав начальный загрузчик. Но этому времени у меня уже был работающий код, крутящий несколько потоков в расширенном режиме процессора I386 и стойкая неприязнь к ассемблеру. Признаюсь честно, в то время я не был знаком с такими вещами как многопоточность, критические секции, событийно ориентированное программирование и т.д.

Немного позже один из Александров, о которых я рассказал тебе выше, дал мне несколько классических книг по операционной системе Unix и диск с операционными системами, на котором был какой-то юникс и Slackware Linux древней, даже по тем временам, версии. Так начались мою знакомство с Юниксом и моё следующее увлечение. Как ты догадался, это увлечение звали Linux. По сравнению с MS-DOS - Linux был чем-то революционным. Это была реальная вещь! А то, что в комплекте шёл бесплатный 32-х разрядный компилятор, так это вообще было немыслимо. Возможно именно тогда, читая manpages, понял что "я знаю, что ничего не знаю". После знакомства с Линуксом, проект "многозадачный монитор САПР" успешно почил в бозе.

В этот период я начал увлекаться программированием с использованием XLib. Возможно на старой квартире ещё где-то валяются дискеты, с попыткой написать нечто объектно-ориентированное поверх xlib. Эта работа продолжалась некоторое время, пока я не увидел GNOME и QT, причём, я понял что я хотел написать QT, имея поверхностные знания о событиях и объектно ориентированному программированию. К счастью, именно чтение спецификации X протокола и дало мне понятие о событийно ориентированном программировании. Моя библиотека нещадно тормозила при перетаскивании окон, узнать о синхронизации потоков мне ещё предстояло впереди.

Затем меня судьба столкнула с ещё одним другом из нашей троицы. Александр улетел работать в Корею и через некоторое время вытянул туда и меня, убедив своего шефа в моей полезности. Мы программировали протоколы для Bluetooth устройств, используя соответствующие спецификации. В это время мне удалось пощупать и понять как работают программные потоки и как их синхронизировать. В общем, об этом можно говорить долго, но у меня нет желания пересказывать всю биографию. В это время совершенно случайно мне попадается ссылка на микроядро L4. Ознакомившись со спецификацией, а благо опыт работы с такими документами уже имелся, я поразился красоте и стройности концепции L4.

О том, что было дальше, ты можешь прочитать в разделе "Вопросы и ответы", а я расскажу что предстоит сделать...

Мне предстоит заработать на этом деньги и я не собираюсь останавливаться. Как? Не думаю, что это просто. Нееет, это не быстро и не просто. Но:

* Я вложил немало времени и труда в изучение микроядра, технологий и приёмов работы с ним.
* На написание кода, на сегодняшний день, было потрачено более четырех лет.
* Много времени и сил ушло на наполнение сайта информацией.
* Поддержание сайта - процесс требующий некоторых финансовых затрат.
* На этом фоне неспешно ведется раскрутка проекта.

Почему неспешно и почему о нём не кричат на каждом углу? На это есть две причины:

1. Основная причина в том, что разработка сложной системы в одиночку - трудоёмкий и длительный процесс. На ранних стадиях, а проект едва дошёл до середины, юные "осеписатели" и дилетанты своими комментариями могут загубить всё дело. Чтобы понять, что из себя представляет система Хамелеон, необходимо пройти приблизительно такой же путь как и я, или активно участвовать в разработке какого-либо ядра, например Linux. И даже в этом случае, взглянув на неработающую или падающую систему, когда не оправдываются ожидания, специалист поставит своё клеймо на проект и не станет следить за новыми версиями. Это один из ответов на вопрос, как заработать на системе деньги - заинтересовать специалиста, чтобы он ждал новой версии.
2. Вторая причина - любой успешный проект должен приносить деньги. Ты можешь согласиться или оспорить это утверждение, но жизнь показывает, что это так и есть. Например, если поручить написание системы какой-либо административной и неповоротливой структуре, то в результате мы получим неэффективно израсходованные средства и, скорее всего, какой-либо плагиат. Ой, а не сболтнул ли я лишнее?!! Впрочем, вернусь к ответу на вопрос, почему неспешно. Ты дочитал досюда? Этот пост и есть раскрутка на целевую аудиторию, а на каждом углу пусть кричат те, кто семечками торгует. :)

Алексей Мандрыкин
28 августа 2007 года