Встреча состоялась 21 января 1998 года.
LF: Как Вы познакомились с Linux?
Мигель: Как это обычно и бывает: я просто скачал ОС Linux
из сети и установил ее у себя, как и любой другой.
LF: Как давно это произошло?
Мигель: Не помню… Это был, кажется, 93-й или
94-й год… Первое откомпилированное мною ядро имело версию
0.985. Когда ж это было? Должно быть, прошло уже
3-4 года. Значит, это было в 93-м.
LF: Чем Вы официально занимаетесь, какова ваша профессия?
Мигель: Я работаю системным и сетевым администратором
в Институте ядерной физики (Institute of Nuclear Sciences) при
Мексиканском государственном университете (UNAM Universidad
Nacional Autónoma de México). В свободное время
разрабатываю программное обеспечение, общаюсь в новостных конференциях
или читаю электронную почту. Чувствую, за чтением электронной почты
я и умру ;)
LF: Midnight Commander это первая
программа, которую Вы написали для Linux?
Мигель: Нет, сначала было несколько патчей в виде библиотек для
Wine. В то время у меня не было IBM-совместимого
персонального компьютера, поэтому я был вынужден компилировать Wine
на рабочей станции Sun. Проект этот заканчивал уже не я,
он был завершен спустя два года, когда за него взялся
кто-то другой.
LF: Вы учились в школе естественных наук
(School of Sciences) при университете?
Мигель: Да, сначала я учился на кафедре физики,
а затем математики.
LF: Что-нибудь закончили?
Мигель: Нет. Скажем так, я пока отложил это до лучших
времен…
LF: Сколько Вам лет?
Мигель: 27. Ой, нет, 25. Я родился в 72-м
году. Я припоминаю, что написал Midnight Commander, когда мне было
20 лет. Это был 93-й или 94-й год. Помню, что
написал Midnight Commander под Linux. Я разработал его на Sun, Sun
работал быстрее, нежели эти чертовски медленные PC.
LF: Вы до сих пор работаете над
Midnight Commander?
Мигель: Да.
LF: Вы будете поддерживать его
и в Gnome, верно?
Мигель: Поддерживаю этот проект я, потому что кто-то
должен его поддерживать. То есть, я до сих пор тружусь над его
разработкой, но уже не уделяю этому занятию так много времени, как
раньше. Большинство изменений вносятся другими людьми в виде патчей.
Каждые два-три дня появляется свежая версия! Ну,
хорошо-хорошо: не каждые два дня, но примерно раз
в неделю. Главным образом, я до сих пор работаю над Midnight
Commander потому, что он будет файловым менеджером в проекте Gnome.
LF: Когда Вы начали работу по переносу
Linux на платформу Sparc?
Мигель: Точно не помню. Думаю, это было примерно в середине
95-го года.
LF: И что делали Вы?
Мигель: Сначала я списался с Дэвидом Миллером (David Miller),
он как раз начал переносить Linux на Sparc. Мы вместе взялись
за эту работу. Затем к нам присоединился Петр Зайцев (Peter Zaitcev),
затем Эдди Дост (Eddie Dost), а после него Пол Маккеррас
(Paul Mackerras). Сначала я написал ethernet-драйвер,
затем драйвер для графической системы X Window, еще несколько мелких
вещей. На это ушло недели две. По большей части я занимался
переносом системы X Window. Но больше всего времени отняла
стандартная библиотека C. На сегодняшний день я все еще
продолжаю довольно много работать над ней. Сначала мы перенесли
на Sparc стандартную библиотеку libc4. После этого мы взялись
за перенос libc5, а затем и libc6. А ведь это три разные
библиотеки и, значит, три разных порта. Нет ничего более ужасного, чем
переносить этих «монстров»! Даже хуже: переносить их трижды!
LF: Как начался перенос Linux на платформу SGI?
Мигель: Я продолжал работать на платформе Sparc, когда
ребята из мексиканского отделения Silicon Graphics заикнулись
о том, что есть шанс поработать на платформе SGI. Начались
переговоры, которые, однако, надолго затянулись. Дэвид Миллер также был
готов приступить к переносу Linux на SGI, но прошло больше года,
прежде чем нам был предоставлен Silicon.
Мне нравится идея свободного ПО, ведь к его разработке может
присоединиться любой здравомыслящий человек. Дэвид Миллер был во главе
проекта Linux/Sparc, Эдди Дост долгое время поддерживал этот проект,
Ричард Хендерсон (Richard Henderson) много сил отдал
библиотеке C… С завтрашнего дня поддерживать эту платформу
останется один разработчик Джекоб Джелинек (Jacob Jelinek).
LF: Над чем Вы работали в ядре Linux?
Инго Молнэр (Ingo Molnar), Гэди Оксмэн (Gadi Oxman)
и я разрабатывали поддержку в ядре дисковых массивов RAID.
Инго написал оригинальный алгоритм контрольной суммы (the faster checksum
in the world), который применяется для расслоения данных в RAID.
А Гэди отлично разбирается в промышленных RAID, он настоящий
гуру в своем деле, на этого человека можно полностью положиться.
Этот список завершает мое скромное имя, но вся основная работа была
проделана двумя этими «монстрами».
LF: Какое отношение Вы имеете к проекту Gimp?
Мигель: Никакого.
LF: Но Ваше имя упоминается на странице Gimpа…
Мигель: Должно быть, это связано с Gnome. Так, парочка мелких
патчей (a pair of micro-patches). Внимания заслуживает
другое, а именно совершенно неожиданное появление проекта KDE,
призванного облегчить работу пользователя с ОС Linux. Вначале эта
затея выглядела не очень привлекательно, но, согласитесь, по мере
развития KDE становился все красивее, наряднее, стабильнее. Когда мне стало
казаться, что KDE это действительно замечательная вещь,
я разослал своим друзьям письма, в которых обращал их внимание
на этот продукт и предлагал включать его
в Linux-дистрибутивы. Но они указали мне на проблему,
которую я как-то упустил из виду. KDE зависит
от библиотеки, свободной только для некоммерческого использования.
Но такая «свобода» ненастоящая: истинно свободное ПО дает
вам право просматривать, изучать, использовать, модифицировать его исходные
коды. Одно из главных преимуществ такого подхода заключается в том,
что вы можете совершенствовать ПО, модифицируя его и устраняя
в нем ошибки. Однако к библиотеке Qt (автор
компания Troll Tech прим.
перев.), которую использует KDE, прилагается лицензия, запрещающая
производить любые изменения и модификацию ее исходных кодов. Обычно
так поступают компании, которые продают свой программный продукт. Не спорю,
KDE внешне очень привлекателен, но его использование противоречит
идеологии свободного ПО. К примеру, вы установили KDE
на своей свободной ОС Linux. Теперь такая система
не является полностью свободной, так как она содержит коммерческий
компонент. И это шаг назад. Мы далеко продвинулись с того
момента, когда в 1985 году Ричард Столлмен (Richard Stallman) провозгласил
свою идею свободного ПО, и вдруг сегодня снова собираемся отступать
назад, в прошлое. Неужели вы хотите вернуться обратно? Соглашаясь
со странными лицензиями.
LF: Не это ли подтолкнуло Вас
к созданию среды Gnome? Какими преимуществами обладает данная среда?
Мигель: Об этом говорилось уже много раз. В настоящее время Gnome
содержит в себе множество интересных решений.
Первоначально меня привлекала технология Active X, интересная заложенными
в нее идеями. Вместе с Федерико Мена (Federico Mena) мы попытались
создать набор компонентов «а-ля Active X» для
Linux. Нам хотелось объединить несколько приложений, написанных на tk,
gtk, в единую систему взаимодействующих друг с другом компонентов.
Однако с самого начала мы двинулись не в том направлении,
столкнулись со множеством трудностей, и в результате у нас
ничего не получилось. После этой неудачной попытки мне захотелось
попробовать привести различные Unix API к единому стандарту. Но этот
замысел был подобен тому, как если бы вы сказали: «Все,
со следующего понедельника…» Ну, и так далее…
Когда мы увидели KDE и столкнулись с сопутствующими ему
лицензионными ограничениями, мы сказали: «Мы должны сделать
то же самое, но только лучше». Нашему проекту мы дали
благозвучное, на наш взгляд, имя «Gnome». (Также GNOME
расшифровывается как GNU Network Object Model Environment (Сетевая Объектная
Среда GNU) прим. перев.) Вначале Gnome был неудобен, содержал
невообразимое число ошибок, отъедал много памяти… Казалось, этому
не будет конца. Но, наконец, в один прекрасный день мы составили
план (a proposal) дальнейшего развития Gnome и направили его Ричарду
Столлмену, в компанию Red Hat, а также в группу gtk
и участникам проекта Gimp. Немаловажно, что к тому времени я уже
успел создать для Gnome инструментарий разработчика. Мы использовали
любую возможность для привлечения к проекту как можно большего числа
людей. Официально мы хотели назвать нашу среду GDE
GNU Desktop Environment Рабочая Среда GNU. Однако после обсуждения
этого вопроса в каналах IRC мы поняли, что изначальное название
проекта «Gnome» уже стало достаточно
популярным, и поэтому его нужно сохранить, к тому же первые
две буквы в названии «G»
и «n» намекают на GNU…
LF: Что отличает Gnome от других оконных
менеджеров (window managers) навроде Enlightenment?
Мигель: Enlightenment это именно оконный менеджер,
то есть он отвечает за настройку фона, оформление окон
и за то, как эти окна будут себя вести. И это все. И здесь
ни слова не говорится о приложениях (и о той
среде, о «бульоне», в котором это все
варится прим. перев.), о том, что это такое. Зачастую
в приложении собрано невообразимое число компонентов, и поэтому
оно может выполнять самую разную работу. Главная идея и Gnome,
и KDE заключается в том, что это не оконные менеджеры,
это интерфейсы для приложений (interfaces for applications).
KDE, фактически, зависит от своего оконного менеджера; нам кажется,
что этого недостаточно, поэтому Gnome может работать в паре с любым
оконным менеджером. То есть, если вам нравится Enlightenment
используйте Enlightenment, если предпочитаете fv, то используйте
fv или, если вам нравится KDE, нет проблем!
можете использовать и его оконный менеджер! Кстати сказать: Rasterman,
который разработал дизайн Enlightement, сейчас является членом команды Gnome.
Фактически, он был нанят для работы над Gnome, и компания Red Hat,
которая будет официально поддерживать Gnome, оплачивает его работу.
В самом ближайшем будущем для Linux будет написано огромное количество
самых разнообразных приложений, и поэтому создание дружественной рабочей
среды для этих приложений одна из важнейших задач проекта
Gnome. Я уверен, что удобная среда это самая сильная сторона
KDE. Команда разработчиков KDE доказала, что маленькая группа людей всего лишь
за год может создать потрясающую систему, ничем не уступающую
Windows 95. Когда я впервые увидел Windows 95, я подумал:
«Мы потеряли преимущество, мы проиграли, потому что полностью
пренебрегали интерфейсом!» Я стал сомневаться в том, что
мы сможем создать нечто подобное. Но проект KDE показал, что это
под силу даже небольшой команде программистов, а значит, и мне
с единомышленниками. Итак, на данный момент Gnome реализует удобную
рабочую среду. Каждое приложение Gnome использует единый инструментарий
и одни и те же библиотеки; приложения единообразно выглядят
и единообразно реагируют на действия пользователя; легки
в использовании, имеют привлекательный интуитивно-понятный
графический интерфейс. То же самое обеспечивает и KDE,
но мы хотим пойти дальше: мы хотим использовать CORBA.
По своему внутреннему устройству CORBA (CORBA Common
Object Request Broker Architecture Общая архитектура брокеров
объектных запросов прим. перев.) чем-то напоминает
каналы (pipelines), которые идеально подходят для связи одних программ
с другими. Компоненты (программы), поддерживающие технологию CORBA,
должны иметь специальный интерфейс и удовлетворять особым спецификациям.
Приведу пример. Пусть вы хотите сохранить имеющийся у вас список
телефонов и список адресов электронной почты. Какими программами
вы воспользуетесь? Скорее всего, телефонные номера будут отправлены
в специальную электронную телефонную книгу, а электронные адреса
будут сохранены в адресной книге вашей почтовой программы. После этого
вы хотите отредактировать html-файл, поэтому вам понадобится
третья программа html-редактор. И так
до бесконечности!.. Для каждой задачи используется своя программа, число
этих программ растет, как на дрожжах… Другой подход заключается
в том, чтобы всю работу организовывать с помощью небольших
компонентов-«кирпичиков», связывая их меж собой.
К примеру, при таком подходе компонент «Почтовая программа»
будет работать со списком электронных адресов, обращаясь к другому
компоненту, который способен обслуживать этот список. Причем, такие компоненты
имеют (могут иметь) полноценный графический интерфейс, а не просто
интерфейс командной строки. Другие люди смогут пользоваться этими компонентами
(даже не зная, как они устроены изнутри прим. перев.),
ведь, как уже было сказано выше, их спецификации и интерфейс будут
четко описаны. Самое интересное, что можно будет, при необходимости, менять
одни компоненты на другие! То есть, например, если для работы
с моей крохотной базой данных меня вполне устраивает некий простенький
компонент, то вы можете заменить его на другой, более
продвинутый, компонент, который сможет взаимодействовать, к примеру,
со специфичной базой данных вашей компании, или с БД Oracle,
или с чем-нибудь еще. Краеугольный камень этой
технологии наличие интерфейса, четко определенного API. Это одно
из применений технологии CORBA в проекте Gnome.
То же и с другими программами, с файловыми менеджерами,
с редакторами… Например, для отладчика можно будет выбрать любой
редактор текста, который имеет объявленный интерфейс; отпадает необходимость
писать для этого отдельную заплатку. Эти компоненты-приложения
будут общаться меж собой через интерфейс.
Одна и та же работа может быть выполнена
по-разному: для создания списка телефонов один захочет
использовать среду Emacs, другому для этого понадобится графический интерфейс
с иконками, у третьего может возникнуть желание управлять голосом
(«Выдай-ка мне телефон Иванова и запомни номер
Сидорова!..»), и поэтому все должно быть взаимозаменямым,
подстраиваемым, настраиваемым мы поняли эту ключевую идею еще
на раннем этапе, когда работали над предыдущими проектами.
Федерико: Следующий шаг это объединение разнородных данных
в документы благодаря компонентной технологии. Это напоминает технологию
OLE (OLE Object Linking and Embedding связывание
и внедрение объектов прим. перев.) в Windows.
Например, в документ, создаваемый в текстовом редакторе, можно будет
вставлять электронные таблицы или, допустим, картинки, нарисованные
в Gimpe. И эти данные можно будет редактировать прямо
из текстового редактора.
LF: Как соотносится ваша деятельность с деятельностью компании Red Hat?
Мигель: Программное обеспечение, которое пишет Red Hat, будет
распространяться с копирайтом этой фирмы; в моем программном коде
будет стоять мой копирайт. Но в конечном итоге эти тонкости
становятся несущественными, так как все ПО распространяется под лицензией
GPL.
Вообще, вы затронули интересную тему. Мы считаем, что программное
обеспечение должно быть свободным, и компания Red Hat работает с нами
по этому принципу. Я думаю, что при таком раскладе у Red Hat
нет серьезных причин поступать как-то иначе: когда код программы
находится в свободном доступе, от этого выигрывают все. Когда
программное обеспечение становится свободным, любой разработчик получает право
голоса и право выбора, и поэтому, если на данный момент его
что-то не устраивает, он может создать свое собственное
ПО, взяв за основу наше.
LF: Расскажите о людях из вашей команды.
Мигель: Ну, например, Брюс Перрис (Bruce Perris) из Debian, один
из разработчиков интерфейса COA для Gnome. Майкл Джонсон (Michael
Johnson) из Red Hat, работающий над конфигуратором linuxconf. Rasterman,
настоящий гуру и фанатик, который занимается оформлением Gnome
и созданием тем для него и для приложений.
Федерико: Познакомиться с темами можно на примере программы
Kaleidoscope (для MacOS), которая предназначена для изменения множества
элементов интерфейса (образцы тем смотрите на http://kaleidoscope.net/schemes/new.shtml прим. перев.).
Мигель: Rasterman работает над Gnome и параллельно занимается
разработкой оконного менеджера Enlightenment. Rasterman особо выделяет Gnome
как среду, в которой Enlightenment должен работать без сучка без задоринки,
хотя, конечно, он будет нормально работать и в других средах.
Другой наш хакер в настоящее время разрабатывает еще один оконный
менеджер, XEWM, который должен сделать Gnome много мощнее (похоже, этот
проект так и не был доведен до конца и тихо и незаметно
умер; во всяком случае, поисковые машины по слову «XEWM»
ничего стоящего и полезного не выдают… прим. перев.).
Между Gnome и KDE на данный момент есть еще одно существенное
различие. Библиотека Qt вынуждает вас использовать язык C++, однако
мы не думаем, что C++ это самый лучший язык в мире.
В KDE есть связи и с другими языками, но, насколько
я понимаю, если вы хотите использовать библиотеку Qt,
вы все равно должны писать на C++. Многие из нас
по-прежнему убеждены, что использование C++ есть признак дурного
вкуса; более того, нам кажется, что этот язык, слишком широко
разрекламированный, является самой крупной ошибкой за всю историю языков
программирования. Мы по большей части используем C,
objective C и Scheme (похожий на Lisp язык
программирования прим. перев.). Среди нас есть разработчики,
которым нравится программировать на C++, поэтому у нас есть немного
кода C++. Последний выпуск Gnome написан на Scheme, C, C++
и Objective C. Если кто-то пожелает программировать
на Ada, что ж, пожалуйста! Что мне больше всего
не нравится в KDE это то, что вы вынуждены
программировать на языке, «полном ненужного мусора»
(garbage of language) (по-видимому, имеется в виду все тот
же C++; если речь об этом, то не будет большой ошибкой
и такой грубоватый перевод: «на отстойном
языке» прим. перев.).
Мы также уверены в том, что в программах нужно использовать
сценарии (scripts), так как, за счет расширения функциональности,
программами можно гибко управлять. В настоящее время мы используем
Scheme, возможно, впоследствии будем использовать Perl или Python.
Мы применяем Scheme в некоторых программах, благодаря чему они
работают быстрее и обладают большими возможностями. Эта идея
проста и эффективна. Недалек тот день, когда ее использование станет
привычным делом.
GNU-проект Gnome поддерживается Debian и компанией Red Hat.
LF: Когда следует ожидать выхода стабильной версии?
Мигель: Вообще-то, это зависит от того, как много
людей будет помогать нам…
LF: Кто еще участвует в проекте Gnome?
Мигель: Это: George Lebl, Radek Doulik, Alan Cox*, Tom
Tromey, Elliot Lee, Raja Harinath, Eckehard Berns, Changwoo Ryu,
Michael K. Johnson, Federico Mena, Nathan, Bryant, Horacio Peqa
и другие.
Debian предоставляет нам дисковое пространство
и CVS-депозитарий (CVS-depository), благодаря
которому мы согласовываем работу программистов со всего света; каждый
программист имеет доступ к этой машине, оснащенной высокоскоростным
сетевым каналом. Человек, показавший, что он в состоянии написать
хороший код, получает эккаунт на этой машине с возможностью хранения
на ней своих кодов. Как правило, мы обсуждаем эти коды, и если
код написан добротно, то он принимается.
*Alan Cox написал реализацию стека протоколов TCP/IP для Linux.
Совсем недавно он портировал на Linux игру Doom. Он затратил
на это много усилий, но блестяще справился с задачей.
Примечания переводчика.
Мигель де Айказа, талантливый мексиканский
программист, имеет в Сети собственную страницу, на которой приведены все
основные вехи его интереснейшего программистского пути и материалы обо всех
его проектах: primates.ximian.com/~miguel/.
Там же имеется куча фотографий, вот одна из них:
Miguel and Nat.
О языке Scheme можно узнать здесь:
www.scheme.org или здесь:
www.schemers.org.
|