Мигель де Икаса и его мечта — Linux на десктопах
Мигель де Икаса, 2014 г. Фото: he San Diego Union-Tribune
Как известно, гении предпочитают общаться и работать с равными себе, они притягивают друг друга. И если вы хотите что-то узнать о человеке — посмотрите, кто его друзья. Например, взять выдающегося Фабриса Беллара. Его не очень волнует мирская суета (карьера, деньги, известность и прочие атрибуты «успеха» у обывателей), а только интересная работа. В интернете всего две фотографии Фабриса, и одна из них — с компьютерной конференции, где он сфотографировался с Мигелем де Икаса, основателем проектов GNOME и Mono.
Сразу понятно, кто достоин уважения с точки зрения Беллара.
Мигель де Икаса — один из самых уважаемых разработчиков сообщества Open Source. Хотя кое-кто критикует его за сотрудничество с Microsoft и «предательство» идеалов свободного ПО, но заслуги человека говорят сами за себя.
▍ Проекты
- Участие в проекте Wine (1993). В истории Wine Мигель де Икаса упоминается как один из первых контрибуторов.
- Текстовый файл-менеджер Midnight Commander (1994). Одна из первых программ, которую написал Мигель (в 21 год).
- Первые оригинальные драйверы RAID-1 и RAID-5 для ядра Linux (1996−1997), совместно с Инго Мольнаром.
- Порт Linux на платформу SPARC (1997), а впоследствии на MIPS и SGI (2000).
- Электронные таблицы Gnumeric (1998).
- GNOME (3.3.1999, совместно с Федерико Меной) — десктопное окружение, которое стало дефолтной системой во многих популярных дистрибутивах Linux. В отличие от KDE на проприетарном фреймворке Qt, новое окружение было полностью свободным и сделано на базе самого продвинутого на тот момент свободного фреймворка на C от создателей GIMP.
Ximian (19.10.1999), прежние названия Helix Code и International Gnome Support. Мигель де Икаса совместно с Натом Фридманом основал компанию, которая занималась разработкой, продажей и поддержкой прикладного ПО для Linux на платформе GNOME. Корпорация Novell выкупила компанию в 2003 году и продолжила поддержку её оригинальных продуктов.
Интересно, что с Фридманом они познакомились в компании Microsoft, куда юный Мигель пришёл на собеседование по поводу устройства на работу в 1997 году, незадолго до того, как он запустил проект GNOME. Нат работал там в качестве стажёра. Вскоре они стали лучшими друзьями.
Именно у Фридмана родилась идея основать компанию для монетизации GNOME и выпуска «отполированных» версий свободных программ GNOME, OpenOffice.org и Gaim. Среди собственных разработок — персональный информационный менеджер Ximian Evolution, Ximian Connector, пакетный менеджер Red Carpet, Bonobo (устаревший аналог Microsoft OLE) и Mono.
Сейчас Ximian Evolution носит название GNOME Evolution. Это самый крупный проект в истории опенсорса, написанный с нуля с открытыми исходниками (браузер Mozilla и офисный пакет OpenOffice изначально создавались как проприетарные продукты).
Свободный фреймворк Mono (19.07.2001). После выхода фреймворка .NET в декабре 2000-го Мигель де Икаса начал изучать его возможное использование на Linux. Работу сильно затрудняло отсутствие документации на формат файла метаданных (хотя .NET заявлялся как якобы открытый стандарт ECMA). Коллеги-хакеры помогли с реверс-инжинирингом, а сам Мигель начал писать компилятор C#, ридер метаданных и прочие инструменты. Пока Microsoft созрела до выпуска документации, альтернативный компилятор C# был уже готов.
Результатом всей этой работы стал выпуск опенсорсного фреймворка Mono, совместимого с .NET, тогда ещё в компании Ximian. После трёх лет разработки первая версия Mono 1.0 вышла в июне 2004 года. Первоначальный фокус только на Linux решено было расширить на разнообразные архитектуры и ОС, включая встроенные системы.
Поскольку компания Ximian была куплена Novell, а сама Novell в 2011 году продалась Attachmate с последующими массовыми увольнениями, проект Mono оказался под угрозой. Тогда Мигель принял решение основать новую компанию Xamarin.
Xamarin (16.05.2011) — новая компания, которую Мигель с Натом основали для продолжения разработки Mono, Xamarin.Mac, Xamarin.Android (бывш. Mono for Android) и Xamarin.iOS (бывш. MonoTouch), которые представляли собой кросс-платформенные реализации Common Language Infrastructure (CLI) и Common Language Specifications (известны также как Microsoft .NET). В 2014 году вышла программа Xamarin.Forms для генерации нативных элементов управления под все платформы.
Из других продуктов — облачный сервис Xamarin Test Cloud для тестирования мобильных приложений на реальных смартфонах в облаке (дата-центре).
Инструментарий Xamarin позволяет на общей кодовой базе C# писать нативные приложения под Android, iOS и Windows, с нативными интерфейсами. В качестве среды разработки распространялась кроссплатформенная IDE Xamarin Studio (MonoDevelop).
В 2016 году компанию Xamarin купила корпорация Microsoft предположительно за $400−500 млн. В 2022 году Xamarin.Forms перевыпустили как .NET MAUI. Ещё раньше фирменные дополнения Xamarin for Visual Studio были нативно интегрированы в Visual Studio. Постепенно шло переваривание и других продуктов. Например, сканер .NET Mobility Scanner стал частью инструмента Shared Projects в Visual Studio.
Что касается проекта Mono, он относительно успешно живёт и развивается до сих пор. Кроме базовых компонентов, он содержит стек разработки Mono/Linux/GNOME и стек совместимости с Microsoft. Первый включает Gtk# для разработки GUI (с нативной интеграцией в GNOME), библиотеки Mozilla для работы с движком рендеринга Gecko, библиотеки интеграции с Unix (Mono.Posix), библиотеки для подключения к СУБД, стек безопасности и язык XML-схем RelaxNG.
SwiftTerm (2020) — эмулятор терминала VT100/Xterm в виде библиотеки Swift, его можно встраивать в приложения macOS и iOS. Используется в нескольких коммерческих SSH-клиентах, включая Secure Shellfish, La Terminal и CodeEdit.
SwiftTermApp (2022) — SSH-клиент для iOS на родной библиотеке SwiftTerm.
В последнее время Мигель в основном программирует для удовольствия на Swift.
▍ Биография
Мигель де Икаса родился 23 ноября 1972 г. в Мехико в семье учёных: отец был физиком, а мама — биологом. В стране третьего мира трудно получить высококлассное образование. Мигель отучился несколько лет на факультете математики в Национальном автономном университете Мексики, но бросил его ради реальной работы в IT. В итоге он учился программированию самостоятельно, а его главным «университетом» стали опенсорсные проекты. Здесь же Мигель и применял полученные знания. В интервью Linux World он говорит, что если бы не опенсорс, то никогда не получил доступ к технологиям (и коду) такого высокого уровня.
Как мы уже упоминали, в 2017 году де Икаса познакомился с Натом Фридманом, с которым они быстро нашли общие интересы в сфере Linux-разработки. В 1999 году Фридман помог другу получить визу США и переехать в Америку. В процессе возникли определённые сложности. У Мигеля не было высшего образования, поэтому он не соответствовал критериям стандартной рабочей визы H1B, хотя являлся сооснователем американской компании Ximian. Юристы предложили трюк: открыть филиал Ximian в Мексике, трудоустроить туда сооснователя, а потом перевести его в головную компанию по программе корпоративного трансфера (виза L1), но это довольно длительный процесс, так что в итоге Мигеля привезли по визе для талантов O-1.
Мигель де Икаса даёт интервью о проекте Mono, 30.12.2014
▍ Linux на десктопах
Если посмотреть историю всех проектов Мигеля де Икаса, то прослеживается одна общая цель — Linux на десктопах. Он посвятил этому практически всю карьеру, выпустил кучу программ и инструментов, а потом в разных интервью и статьях рассуждал, что же пошло не так и в чём Linux проиграл OSX:
«Много лет назад Линус как низкоуровневый специалист по ядру задал тон нашему сообществу, когда отказался от бинарной совместимости для драйверов устройств. Возможно, у специалистов по ядру были какие-то веские причины, и они смогли заставить индустрию играть по их правилам, но у людей из мира десктопа не было такой власти…Сообщество нацелилось на инженерное совершенство: никакого устаревшего кода в исходниках, никаких сломанных конструкций, только чистый и красивый код, и долой любые следы плохих или плохо реализованных идей.И мы это сделали.Мы отказались от API, потому что есть способ лучше. Мы удаляли функции, потому что «этот подход неправильный», причём степень неправильности варьировалась от «это дыра в безопасности» до «это не соответствует нашему новому стилю».Мы заменили основные подсистемы в ОС на плохие пути перехода. Ввели уровни совместимости, которые на самом деле не совместимы и не поддерживались. Когда мы сталкивались с проблемой «это не работает», ответом сообщества обычно было «вы делаете это неправильно»…Второй аспект проблемы в том, что дистрибутивы Linux не договорились, какие основные компоненты использовать. Либо не договорились, либо график переходов не совпадал, либо существовали конкурирующие реализации одной и той же функциональности…Это убило экосистему для сторонних разработчиков, пытавшихся портировать Linux на настольные компьютеры. Вы делаете всё возможное для поддержки «лучшего» дистрибутива или «трёх лучших», если чувствуете себя в ударе. Но всего через полгода ваш софт уже не работает.Поддержка Linux на настольных компьютерах стала непосильной ношей для независимых разработчиков», — Мигель де Икаса, 2012.
В общем, Linux на настольных компьютерах так и не взлетел, оставшись уделом энтузиастов, продвинутых пользователей и разработчиков. Но борьба продолжается. Как говорится, важна не цель, а путь к ней…