Позвоните родителям
АрхивКолонка ЗолотоваВеб-браузер Safari, написанный компанией Apple на основе свободного Konqueror, хорошеет день ото дня. Вот только, как свидетельствуют авторы Konqueror, им от этого не холодно и не жарко: никакого сотрудничества Apple с сообществом open source нет и в помине.
Тема свободного софта в различных её воплощениях последние дни не сходит с первых страниц сетевой прессы, но виной тому не заговор сторонников идей open source - просто на май пришлось сразу несколько громких историй, связанных с программным обеспечением с открытым кодом. В сегодняшней Колонке я предлагаю остановиться на одной из них, по непонятной мне причине обойдённой вниманием русскоязычных изданий. Речь пойдёт о конфликте - скорее нравственном, чем правовом - между компанией Apple и сообществом независимых разработчиков графической среды пользователя KDE. Последняя хорошо знакома приверженцам Linux и других UNIX-совместимых операционных систем, представляя собой, вероятно, самую простую в освоении пользовательскую среду. Впрочем, самой KDE ничто не угрожает, зацепка в важном её компоненте под названием KHTML. Это так называемый веб-движок - набор функций, предназначенных для обработки и отображения на экране документов формата HTML и ему подобных. KHTML, как и KDE, является свободным продуктом с опубликованными исходниками, и положен в основу столь же свободного (и гораздо более известного) веб-браузера Konqueror. Теперь, после того как начальная неясность устранена, обратимся к недавнему прошлому и вспомним зиму 2003 года, когда уже упомянутая здесь компания Apple сделала довольно неожиданный шаг...
В январе 2003 года на очередной выставке-конференции MacWorld, Стивен Джобс представил публике собственный веб-браузер компании Apple (КТ писала об этом: см. "Как Мозиллу прокатили" и "Вот такой ширины"). Решиться на создание своего продукта компанию, по всей видимости, заставило намерение Microsoft прекратить развитие Internet Explorer для Mac OS X (что и было сделано в июне того же года) - на тот момент "официального" браузера для операционной системы Apple. Вот почему ещё в начале 2002 года внутри "яблочного гиганта" была сформирована группа программистов, в том числе с участием известных энтузиастов, ранее работавших над свободными проектами, которой поручили написать новый браузер. И группа с поставленной задачей справилась: представленный в январе 2003 года Safari 0.8 хоть и позиционировался как бета-версия, умел поразительно много для своих "юных лет". Safari с самого начала не имел ничего общего с глюкавыми, "сырыми" поделками, каковыми обычно бывают ранние версии всех программ: уже в первой своей вариации он обгонял пожилых конкурентов по скорости отображения веб-страниц, был невелик в размерах, красив и достаточно функционален. Добиться такого результата его создателям помогло использование наработок сообщества KDE - а точнее, того самого KHTML.
Веб-движок KHTML вместе с ещё несколькими свободными разработками стали фундаментом, на котором авторы Safari выстроили великолепное здание нового браузера. То, что компания позаимствовала чужой код, не только не скрывалось, но и всячески афишировалось. Поймите правильно: во-первых, участникам проекта KDE (да и всем, кому не чужды идеи Альтернативы) было просто приятно осознавать, что большая и успешная компания не побрезговала плодами их труда, в некотором смысле высоко оценив их; во-вторых, совместная деятельность Apple и разработчиков KDE обещала немало "вкусностей" для последних - ведь, воспользовавшись свободными наработками, Apple должна была отныне публиковать собственные изменения и дополнения для них; наконец, в-третьих, сама Apple лишний раз подчёркивала в глазах общественности свою преданность идеалам свободы и открытости. Короче говоря, восторгам не было предела, но в действительности всё оказалось отнюдь не таким красивым.
На протяжении двух с лишним лет параллельной эволюции Konqueror и Safari внутренняя механика их взаимодействия представлялась наблюдателям со стороны работой хорошо отлаженного механизма. Разработчиками KDE для программистов Apple были созданы самые благоприятные условия - в том числе обеспечен удобный доступ не только к исходным текстам, но и к истории их изменений (важность этого момента будет разъяснена далее). В свою очередь, авторы Safari регулярно публиковали свои изменения, внесённые в код KHTML. Следует отметить, что Safari развивался в собственном направлении, расходящемся с тем, в котором двигался Konqueror, так что со временем в Apple написали свой полноценный веб-движок WebCore, который способен полностью заменить KHTML. Кроме того, благодаря напряжённой работе программистов, Safari в конце концов обрёл гораздо более широкую и точную поддержку открытых веб-стандартов. Результатом всего этого явился анонс, опубликованный Apple в конце апреля 2005 года. Safari (точнее, его пока что девелоперская версия) стал первым веб-браузером, успешно прошедшим сложнейший тест под названием Acid2 - не углубляясь в технические детали, это означает, что Safari на деле доказал умение корректно работать с самыми сложными и современными методами гипертекстовой разметки. На технофорумах Сети сообщение было встречено буквально бурей апплодисментов и логичным вопросом: мол, когда же разработчики KHTML сподобятся слезть с печи, сядут за клавиатуру и учтут наработки Apple, чтобы Konqueror стал вторым браузером, прошедшим Acid2? Вот здесь-то некоторых из девелоперов KDE и прорвало - и впервые за два года они нарисовали истинную картину происходящего.
Квинтэссенцией негодования стало письмо Зака Русина (Zack Rusin) от 28 апреля, которое и сегодня можно отыскать в Журнале разработчиков KDE (см. www.kdedevelopers.org/node/view/1001). Особо не стесняясь в выражениях, Зак называет всё своими именами, утверждая прежде всего, что никакого пресловутого и хвалёного сотрудничества между Apple и участниками проекта KDE не существует - и пора уже прекратить пустой трёп на эту тему. Да, Apple действительно публикует свои изменения и часть собственных наработок, однако, учесть их в KHTML практически невозможно. Причин тому много - и вот лишь самые важные из них. Во-первых, Apple публикует свои "заплатки" пачками по несколько штук зараз, причём все они связаны друг с другом, так что невозможно учесть только одну, не затронув другие. Во-вторых, программисты Apple активно используют системные вызовы Mac OS X и функции закрытых, несвободных библиотек, написанных специально для Safari. В-третьих, Apple не утруждает себя раскрытием хронологического древа внесённых изменений, публикуя лишь конечный результат, что само по себе делает задачу переноса патчей Apple в KHTML чрезвычайно сложной. Подводя итог, Русин говорит: нет ни малейшей надежды на то, что KHTML и Konqueror вместе с ним в скором будущем обретут хотя бы часть функциональности Safari - сделать это использованием кода Apple нереально, можно только написать те же функции с нуля.
Письмо Русина породило ожесточённую дискуссию, участники которой разделились на два лагеря. Одни считают, что Apple ни в чём не виновата. В самом деле, компания действует в рамках правового поля: позаимствовав open source-наработки, она публикует все изменения, как того требует лицензия, на условиях которой исходный код распространялся. В вечной верности Apple не клялась, да и не могла бы: в бизнесе, как и на войне, все средства хороши. Ну, а если бывший партнёр оказался недееспособен, значит от него стоит отказаться. С такой точкой зрения трудно не согласиться, но есть и другая, подчёркивающая нравственный аспект. С самого начала участники проекта KDE относились к Apple как к хорошему другу, даже заведя специально для неё аккаунты в своей девелоперской системе - так компания получила максимум удобств для изучения кода KHTML и его использования. Логично было бы ожидать ответной любезности, но она так и не последовала: как уже говорилось, даже доступа к хронологии изменений Apple независимые разработчики не получили. Больше того, в начале мая, после того, как письмо Русина получило широкую огласку, Apple (устами одного из своих програмеров), вместо помощи в изучении изменений, цинично предложила создателям KHTML полностью отказаться от своего "проблемного" детища в пользу WebCore, который ещё надо для KDE адаптировать. Такая вот она, свобода...