Открытый исходный код — это свобода

vizimnokh
7 min readDec 16, 2022

--

Наступает момент, когда разработчикам Web3 необходимо принять важное решение. Они стоят на перепутье и должны принять решение — решение, которое в дальнейшем будет влиять на миссию, стратегию, ценности и результаты работы каждого проекта.

На этом перепутье одна дорога ведет обратно к традиционному экономическому и социологическому мышлению, основанному на корысти и нулевой прибыли. Но, конечно, есть и другая дорога. Это дорога, которая ведет нас в будущее; другая парадигма; другой образ мышления.

На тех из нас, кто оказался на этом перепутье, лежит ответственность выбора. Этот выбор не только влияет на развитие и результаты отдельных проектов, но в такой зарождающейся отрасли и экосистеме, как Web3, результат таких решений быстро распространяются, усугубляется и становится нормой.

Так что в конечном итоге не наши слова, не наш маркетинг и не наши тщательно продуманные высказывания в твиттере определяют, сможем ли мы изменить мир к лучшему, а выбор, который мы делаем.

Это выбор: быть или не быть открытому исходному коду. Отказаться от открытого исходного кода и рискнуть повторить статус-кво или выбрать открытый исходный код и пойти на самый большой риск из всех возможных — путешествие в неизвестность.

Принтер, печь и ядро

Где-то в начале 1980-х годов в лаборатории искусственного интеллекта Массачусетского технологического университета сломался принтер. Но это был не просто принтер — это был лазерный принтер Xerox: подаренный всемогущей корпорацией Xerox, созданный в Xerox Research Facility и усовершенствованный из ксерокса Xerox. Возможно, вы уловили здесь некую мысль…

Хотя принтеры постоянно выходят из строя, в тот день принтер сломался не у того человека. Его звали Ричард Столлман, и в принтере застряли не его бумаги, а документы коллеги, стоявшего следующим в очереди.

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

У Столлмана появилась идея. Он решил модифицировать программное обеспечение принтера таким образом, чтобы он оповещал всех в очереди о том, что его заклинило. Таким образом, кто-нибудь придет починить принтер, и очередь продолжит двигаться.

Была только одна проблема… Лазерный принтер Xerox был системой с закрытым исходным кодом. Xerox не предоставил ему копию исходного кода, потому что он был закрытым. А когда Стэллман попросил копию у бывшего сотрудника, тот отказался, потому что подписал соглашение о неразглашении.¹

Встреча Столлмана с принтером послужила вдохновением при коммерциализации Unix в 1983 году.² В 1985 году Столлман основал GNU (оригинал: GNU Not Unix) как непроприетарную альтернативу Unix. GNU работала на принципах “свободного программного обеспечения”. Столлман пишет:

“Свободное программное обеспечение” означает программное обеспечение, которое учитывает свободу и интересы пользователей. Грубо говоря, это означает, что пользователи имеют свободу запускать, копировать, распространять, изучать, изменять и улучшать программное обеспечение. Таким образом, “свободное программное обеспечение” — это вопрос свободы, а не платы. Чтобы понять эту концепцию, вы должны думать о “свободном” как о “свободе слова”, а не как о “бесплатном пиве” [выделено автором]. Иногда мы называем его “свободным программным обеспечением”, заимствуя французское или испанское слово “free”, означающее свободу, чтобы показать, что мы не имеем в виду, что программное обеспечение является бесплатным.³

Что касается термина “Open Source”, то он появился лишь через десять лет, когда в 1998 году была основана Инициатива открытого исходного кода (OSI). Основатели OSI разделяли те же взгляды, что и Столлман, но отличались в отношении к производным разработкам (т.е. форкам)⁵. Короче говоря, они позволяли пользователям создавать производные от запатентованных программ, в то время как пользователи разработки свободного программного обеспечения Столлмана этого не имели. Несмотря на это, многие принципы Столлмана (например, “бесплатное пиво”, “свобода слова”) служат основой для определения открытого исходного кода в настоящее время.

Столлман укрепил философию свободного программного обеспечения лицензией GNU GPL. С ней GNU стал проектом открытого общественного взаимодействия. Настолько, что в 1991 году студент Финского университета, находясь почти на другом конце света, внес один из последних недостающих компонентов: ядро.⁶ Это ядро впоследствии стало Linux — одним из крупнейших проектов с открытым исходным кодом в истории, на котором сегодня работают многие серверы, торговые площадки и мобильные устройства.

И все же, естественно, люди сотрудничали в сфере технологий задолго до 1980-х годов. В середине 19 века производители железа в Кливленде, Великобритании, открыто делились инновациями в конструкции доменных печей. Фирмы реализовали свои изобретения без патента, приглашали к сотрудничеству сторонних специалистов и проводили конференции. В течение этого периода средняя высота печи увеличилась более чем на 150%, температура горения увеличилась более чем на 200%, а расход топлива резко снизился.⁷ Уже тогда, на заре информационной эпохи, зародился дух открытого исходного кода.

Что такое открытый исходный код и чем он не является

Упомянутая выше Open Source Initiative предлагает длительный 10-этапный тест⁸ для программного обеспечения с открытым исходным кодом. Лично мне нравится обобщать эти рекомендации, ссылаясь на три основные виды свободы:

  1. Свобода просмотра: Могут ли пользователи просматривать исходный код полностью?
  2. Свобода модификации: Могут ли пользователи изменять исходный код?
  3. Свобода форка: Могут ли пользователи форкнуть исходный код и создать свою собственную программу?⁹

При применении этого теста следует помнить о двух руководящих принципах:

  1. Условные свободы не считаются
  • Например: Вы можете форкнуть исходный код, но только если вы используете определенную часть программного обеспечения (т.е. блокировку производителя).¹⁰
  • Например: Вы можете просматривать исходный код, но кто-то другой — нет.¹¹

2. Все свободы должны быть удовлетворены

  • Например: Вы можете просматривать исходный код, но не можете его форкнуть.

На последнем пункте стоит сделать акцент. Люди часто путают открытый исходный код только со свободой просмотра исходного кода. Настолько, что OSI разъясняет это в первом же предложении своего определения:

“Открытый исходный код не означает только доступ к исходному коду”¹².

Для большей ясности, открытый исходный код требует всех свобод {A, B, C}. Никакое другое подмножество не удовлетворяет определению. Простая публикация исходного кода в публичном хранилище — это бесплатное пиво, а не свобода слова, а значит, это не открытый исходный код.

Я согласен с тем, что не все свободы одинаково важны. Я бы предпочел быть свободным для форка, чем быть просто свободным для чтения. Тем не менее, если вы хотите быть по-настоящему открытым источником, вам нужны все три свободы.

Преимущества открытого исходного кода

В Web1 и Web2 открытый исходный код рассматривался скорее как способ для крупных компаний, таких как Google и Facebook, дать что-то взамен сообществу. Но осмелиться открыть все — в частности, свои рекламные алгоритмы — было бы самоубийством для бизнеса.

Однако Web3 — это место, где происходит волшебство — новое пространство, где разрушаются стимулы Web1 и Web2. В этом мире то, что вы отдаете свои самые ценные изобретения сообществу, а не храните их у себя, на самом деле дает вам преимущество перед конкурентами.

Каким образом? Позвольте мне объяснить.

Когда ваша бизнес-модель основана на предоставлении людям возможности выхода, вместо того чтобы запереть их, вы можете пользоваться всеми преимуществами, которые дает открытая разработка — от использования отзывов мирового сообщества, создания “баг баунти” для устранения критических уязвимостей в системе безопасности и открытого приглашения другим разрабатывать вместе с вами.

Говоря кратко, это разница между пониманием соответствия продукта рынку и пониманием соответствия миссии и гражданина.

Соответствие продукт-рынок обычно достигается в рамках конкуренции, когда вы, как стартап, скрываете свой код от конкурентов, чтобы победить.

Соответствие миссии и гражданина достигается в рамках сотрудничества, когда вы, как гражданин, делитесь своим кодом со своей экосистемой, чтобы экосистема могла выиграть. Даже если вы потерпите неудачу, экосистема выиграет от вашего вклада.

И как гражданин государства-сети, общественное благо от предоставления своего кода перевешивает риски, связанные с опасностью предоставления вашего кода вашим конкурентам или даже злоумышленникам.

Наше путешествие к открытому исходному коду

Сейчас я мог бы заявить, что когда мы, граждане государства-сети zkSync, оказались на перепутье, принять решение было легко. Но это не так…

Нам пришлось задать себе несколько главных вопросов.

Первый вопрос: “Может ли роллап 2-го уровня стать общественным благом, если он не является действительно открытым исходным кодом — проектом, который обеспечен неотъемлемой защитой свободы просмотра, модификации и форка кода?”

Ответ: На самом деле, я бы сказал “нет”. И да, я только что сказал “нет”. Самый главный критерий для общественного блага — это то, что оно должно быть неисключительным и неконкурентным. И если проект не является действительно открытым исходным кодом, я бы сказал, что он сразу же не проходит тест на неисключительность.

Второй вопрос: “Может ли роллап 2-го уровня верить в ликвидацию цензуры, если он, как его главный орган, подвергает цензуре свой собственный код, не размещая его в открытом доступе?”

Ответ: Остроумно. Все, что не обеспечивает полного лицензирования открытого исходного кода для всей кодовой базы, которая представляет собой работающий, функционирующий и развертываемый роллап, является формой цензуры. Это цензура кода, идей, инноваций.

Третий вопрос: “Если мы сделаем полностью открытым исходный код чего-то столь мощного, как ZK-роллап, что помешает злоумышленникам совершить, ну, плохие поступки?”

Ответ: Как команда, мы испытали на себе все плюсы и минусы полностью открытого исходного кода. Когда мы выпустили zkSync 1.0, так и произошло, и злоумышленники форкнули наш код и запустили сервисы с ошибками в нем, что поставило под угрозу как нашу, так и их репутацию.

Пока мы обсуждали, что делать внутри компании, мы держали код закрытым, и за это нам доставалось от других проектов. “Как мы можем заявлять, что ориентируемся на миссию, и в то же время полностью закрывать код?” — сказал один человек, чье имя не будем называть.

Переломный момент

Однажды пришло вдохновение. Во время собеседования кандидат спросил меня: “Какова ваша бизнес-модель?” Криптовалютная часть моего мозга замерла, я ответил: “А?”, а он сказал: “В смысле, вы B2B или B2C?”

И в этот момент мое крипто-подсознание взяло верх, и я сказал: “Мы не компания с моделью B2B, продающая что-то разработчикам. Мы проект с моделью M2C, где M означает Миссия, а C означает не потребителей, а Граждан нашего нового государства-сети.”

Я поймал себя на этой мысли… цепь сомкнулась, и в этот момент все стало ясно: соответствие миссии имеет первостепенное значение, общественные блага побеждают протекционизм, а все, что кроме полного открытого исходного кода, является функциональной цензурой.

Поэтому я с гордостью могу сказать, что когда мы, граждане сетевого государства zkSync, оказались на перепутье открытого кода, мы приняли правильное решение.

То есть, мы решили, что с момента запуска нашего Fair Onboarding Alpha весь код zkSync 2.0 будет опубликован под лицензией MIT Open Source.

Все. Навсегда.

Сюда входит код нашего прувера ZK — нашего фирменного ингредиента — со свободой просмотра, изменения и форка кода.

Мы искренне надеемся, что это послужит мощным сигналом для других основателей, команд и разработчиков в экосистеме, что даже там, где открытие кода является непростым решением, всегда есть обязанность поступать правильно.

Благодаря нашей приверженности открытому сорсингу zkSync 2.0, наша технология станет подарком для экосистемы Ethereum — общественным благом, которое установит золотой стандарт для всех других проектов 2-го уровня.

¹ https://www.oreilly.com/openbook/freedom/ch01.html

² Как указано выше

³ https://www.gnu.org/philosophy/free-sw.en.html

https://opensource.org

⁵ Как указано выше

⁶ Open Source Software: A History, David Bretthauer, 2002, Pro Quest

https://www.sciencedirect.com/science/article/abs/pii/0167268183900239?fr=RR-2&ref=pdf_download&rr=7378002a0b1aa817

https://opensource.org/osd

⁹ Примечание: форки также включают копии без изменений

¹⁰ См. 8, 9, 10 в определении OSI

¹¹ См. 5 в определении OSI

¹² https://opensource.org/osd

Оригинал 16 ноября 2022г

--

--

vizimnokh

Smth new for me and russian introduction into crypto projects