в SVN. И они это выдали как величайшую проблему и попытались провести такую цепочку: один участник сообщает о нелегальном коде, другой – владелец SVN-сервера – его закрывает; и, вроде бы, планировалось провести голосование о закрытии проекта вообще.
Мотивы этих действий так и остаются неясными, и Алексей классифицирует свои соображения на эту тему как 'теория заговора': 'Видимо, были какие-то конкурирующие фирмы, которые захотели взять все в свои руки. Это был переломный момент – когда стал запускаться Explorer – и, возможно, у кого-то что-то переклинило'. Как бы то ни было, «перехват» не удался – Алексей вовремя скопировал весь репозитарий кода к себе и оформил на себя доменные имена, получив полную независимость. Про реальные нарушения авторского права на тот момент ничего не известно:
– В то время мы уже детально озаботились этим вопросом – я думаю, ни один другой проект не анализирует легальность своих знаний так серьезно. Мы накопали целый ряд серьезных опенсорсных проектов, в которых наш бутсектор – это ничто.
Однако код в SVN все-таки стали проверять, и любые потенциально нарушающие копирайт материалы из открытого доступа убрали – на всякий пожарный. (Сейчас проверено уже 99.5 % всего кода, остальные полпроцента 'заморожены'.) «Чистоту» же поступающих извне патчей разработчики контролируют постоянно.
– Мы просматриваем все патчи. Во-первых, если это дизассемблирование и reverse- engineering, это сразу видно по некоторым особенностям. Во-вторых, спрашиваем, на чем основана реализация. Если человек присылает нам хороший testcase, в котором видно, как он вызывает функцию ядра, анализирует ее параметры, – без проблем. А вот, например, человек нам присылает патч с комментарием типа 'увидел, тут у вас не реализовано, решил реализовать' – и код на две страницы. Как он его написал? Откуда взял? Мы такое брать не решились – ни одной ссылки на книжки, ни одного URL не привел. Хотя книг написано великое множество – архитектура описана. А все, что не описано, – ну, приходится изощряться. И без обратной разработки не обойтись.
В принципе, обратная разработка (reverse engineering) – например, дизассемблирование – не является нарушением авторского права. Тем не менее, прямое заимствование дизассемблированного кода, безусловно, нарушает копирайт (это считается созданием производной работы). Чтобы избежать нарушения, используют подход, называемый 'clean room reverse engineering': один человек дизассемблирует программу, разбирается в том, как она устроена, пишет качественную документацию обычным текстом (без настоящего кода) и передает другому человеку, который, смотря только на эту документацию, уже делает свою реализацию. Только такой метод обратной разработки разрешается в соответствии с правилами ReactOS.
– В наших условиях отследить это на 100 % невозможно – но зачастую оно само так выходит. У нас есть люди, которые понимают в обратной разработке, и есть люди, которые пишут код. Вторые обращаются к первым – как это реализовано? Получают ответ. Пишут свой код.
Порой в комфорте современных операционных систем мы забываем, что когда-то компьютеры были terra incognita, сулящей небывалые возможности, – и именно этим привлекали своих первых пользователей. Но многих людей продолжает манить эта неизвестность, и они находят себе новые неизведанные земли – и занимаются их освоением. Это желание двигало первыми разработчиками Linux Kernel в начале 1990-х годов. Вероятно, именно оно движет многими разработчиками ReactOS сейчас. А еще через десять лет, когда ReactOS станет таким же мэйнстримом, каким сейчас является Linux, оно будет двигать участниками какого-то другого проекта.
МЫСЛИ: О видимом и невидимом
В начале шестидесятых годов прошлого века, когда в Москве существовал магазин «Изотопы», по всему Советскому Союзу было принято строить типовые кинотеатры с высокотехнологическими названиями типа «Уран». И не менее типовым элементом их интерьера была конструкция из неоновых трубок, долженствующая изображать модель атома. Ядро и орбиты электронов вокруг него. Часто – с точечками самих электронов.
Наука Нового времени началась с наблюдений, выполненных при помощи оптических приборов. Если известные с античности, бытовавшие в арабском мире угломерные приборы – квадранты, октанты, астролябии – дали точные таблицы, позволившие установить законы Кеплера и перейти к математическим началам натуральной философии, то уже телескоп Галилея развалил на отдельные звезды серебро Млечного пути, обнаружил пятна на Солнце, фазы Венеры и спутники Юпитера. И все это было наглядным.
Если для понимания того, что расхождение во втором-третьем знаке таблиц движения планет заставляет нас откинуть воображаемые, но вполне наглядные небесные сферы и перейти к эллипсам, требовался огромный труд по изучению математики, то узнать, что на Луне есть горы, а Юпитер подобен Земле, ибо имеет спутники, можно было без труда. Всего лишь взглянув в телескоп.
И убедиться в существовании микроорганизмов можно было, всего лишь посмотрев на каплю воды в микроскоп. Доходило до анекдотов. Так, итальянская инквизиция на рубеже пятнадцатого-шестнадцатого веков одним из своих достижений считала конфискацию у некроманта необычайно жирного и отвратительного черта, заключенного в волшебный кристалл. Кристаллом выступала чечевичная линза, а роль черта играла обычная блоха. Однако добрые горожане, восхищавшиеся творениями да Винчи и Микеланджело, с удовольствием верили в некромантского черта, заточенного в хрустале. Они же верили своим глазам!
Но наука уверенно шла двумя дорогами. Наглядные наблюдения, доступные глазу любого, и математические описания, подчас требующие для понимания колоссального труда. Геометр Евклид говорил когда-то египетскому царю Птолемею Лагиду, что в математике нет царских путей. В науке царские тропинки существовали – в музейных коллекциях изобилуют богато украшенные рефракторы и рефлекторы, через которые наблюдали ход небесных светил и венценосные особы, и мелкие графья.
Были и другие наглядные физические приборы, зачастую очень изящные. Например, фигуры Хладни, образующиеся под воздействием стоячих волн на стальных или стеклянных пластинках, покрытых мелким сухим песком. Удивительно простой и грациозный опыт.
Конструировались также приборы, наглядно демонстрировавшие тайны Мироздания. Вот, скажем, любимый земскими просветителями теллурий – устройство из керосиновой лампы, вокруг которой обращались шар, изображавший Землю, а его, в свою очередь, обегал шарик, моделирующий Луну. Такое устройство показывало фазы Луны и солнечные и лунные затмения.
И атомная физика знала весьма наглядные общедоступные приборы. Сцинтилляскоп, например, – коробочка с отверстием, закрытым линзой. Такая коробочка, при условии малости отверстия, – самая легкодоступная модель абсолютно черного тела. А в ней волшебное свечение – сернистый цинк под действием мельчайшей крупицы радиоактивного вещества. Ускользающее черенковское свечение вокруг погруженного в бассейн демонстрационного реактора.
Казалось бы, выложенные газосветными трубками картинки атомов – продолжение, как и планетарий, той же достойной традиции. Только сделанной совсем уж общедоступной, донесенной даже до тех строителей нового общества, что выбрались в кино поглазеть на подвиги чекистов и угоститься в буфете бутылочным (а значит, неразбавленным!) жигулевским по двадцать пять копеечек за пол-литра, без стоимости посуды.
Но между планетарием и наглядным изображением планетарной модели атома есть принципиальная разница. Планетарий отображает то, что объективно существует, может быть увидено. Хоть мы и не видим блистательный мир звезд из-за солнечного цвета, городского вечернего освещения, атмосферных дымов, облаков или не той широты или долготы.
Наглядное изображение планетарной модели атома, распространенное до сих пор, рисует то, что на самом деле не существует. Реальность «странного», по выражению выдающегося популяризатора науки Даниила Данина, квантового мира внутриатомных процессов, имеет с этими картинками не больше общего,