Журнал / польза

Что такое опенсорс-проекты и почему открытый исходный код — это хорошо

Рассказываем, как появилась идея открывать исходный код программ и что делает Яндекс для развития опенсорс-решений

Что такое опенсорс-проекты и как они появились

Идея, что программному обеспечению нужен свободный доступ, была ещё в докомпьютерной эре. Когда компьютеров было мало, учёные и военные специалисты обменивались программами. Когда появились персональные компьютеры, операционные системы приходилось покупать — и стоили они иногда дороже «железа».

Начало официальному распространению свободного ПО положил Ричард Столлман. В 1985 году он основал фонд Free Software Foundation, главной миссией которого стала поддержка free software. Незадолго до этого он начал разработку GNU — свободной операционной системы. К 1991 году разработчикам удалось создать независимую работоспособную ОС, а Линус Торвальдс выпустил ядро Linux с открытым кодом.

Ричард Столлман провозгласил четыре основных принципа free software:

  • свободное использование;
  • свободное изучение;
  • свободное распространение;
  • свободное улучшение программ.

Со временем термин «свободное программное обеспечение» стал вызывать вопросы. Некоторые бесплатные программы не поставлялись с открытым исходным кодом, и внешние разработчики не могли их улучшить. Кроме того, термин не запрещал продавать такое ПО: иногда его сначала покупали у производителя, а потом бесплатно распространяли дальше.

В 1998 году разработчики придумали альтернативу термину «свободное ПО» и внедрили понятие open source, чтобы сменить парадигму с бесплатности на доступность. В том же году возникла организация Open Source Initiative (OSI), которая занимается популяризацией открытого кода.

Одна из первых известных программ, код которой стал опенсорсным, — браузер Navigator от компании Netscape. Он был одним из самых популярных браузеров в 90-е годы. Исходный код Navigator стал основой для браузера Mozilla Firefox.

Опенсорс и бесплатность — не одно и то же. Термин «опенсорс» указывает на то, что код программы открыт, но готовое решение может не быть бесплатным. Да, зачастую оно бесплатно, потому что по открытому коду другие разработчики тоже могут собрать продукт. Но бывает, что код открыт, а сама программа продаётся, например, в App Store.

Сергей Бережной, директор по взаимодействию с разработчиками в Яндексе

Какие есть лицензии у опенсорс-проектов

Продукты с открытым кодом могут распространяться по разным лицензиям — как придумает разработчик. Но их делят на две категории: копилефтные и пермиссивные.

Копилефтными считаются свободные лицензии, требующие распространять производные продукты под такой же лицензией. Известная лицензия этого типа — GNU GPLv3. Она позволяет делать с этим кодом что угодно, кроме программ с закрытым исходным кодом. То есть все программы, которые используют решения с GNU GPLv3, тоже должны быть открытыми.

Пермиссивные лицензии, напротив, позволяют делать в том числе и закрытые программы. Известный представитель этого типа лицензий — MIT. Согласно ей, при использовании нужно сохранять авторские права и уведомлять о лицензиях готовых продуктов, основанных на открытом коде.

Немало разработчиков Яндекса используют операционные системы на базе опенсорс-ядра Linux. Ещё мы используем небольшие программки, библиотеки и фреймворки, с помощью которых делаем свои большие сервисы и приложения.

Наши сервера в основном тоже работают на опенсорсных решениях. Многие средства разработки на Java, C++, Phyton, которые мы используем, — тоже опенсорс, и они компилируются в production-код.

Сергей Бережной, директор по взаимодействию с разработчиками в Яндексе

Зачем опенсорс начинающим айтишникам:

  1. Не нужно платить за софт для работы, потому что есть опенсорс-решения практически для любой задачи. Некоторые из них можно использовать для коммерческой деятельности — то есть создания платных программ.
  2. Можно изучать открытый код различных проектов, смотреть, как решение устроено внутри. Это неплохой метод совершенствования навыков программирования.
  3. Можно взаимодействовать с серьёзными специалистами без устройства на работу к ним в компанию. Опенсорс позволяет не только смотреть, как устроен продукт, но и пытаться что-то создавать для его развития.

Обычным пользователям опенсорс-решения тоже могут быть интересны. Но актуальное для абсолютного большинства — это бесплатность таких программ. Ещё классно, что есть возможность поучаствовать в проекте. Пусть не контрибьютом в код, а, например, сообщением о баге или предложением фичи.

Сергей Бережной, директор по взаимодействию с разработчиками в Яндексе

Почему Яндекс выкладывает свои продукты в опенсорс

Есть немало продуктов, которые компания выложила в открытый доступ. Из крупных решений можно назвать следующие:

  • CatBost — продвинутая библиотека градиентного бустинга на деревьях решений.
  • ClickHouse — колоночная аналитическая СУБД, позволяющая выполнять аналитические запросы в режиме реального времени на структурированных больших данных.
  • YTsaurus — одна из основных инфраструктурных BigData-систем, разработанных в Яндексе.
  • YDB — распределённая отказоустойчивая реляционная система управления базами данных.

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

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

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

Сергей Бережной, директор по взаимодействию с разработчиками в Яндексе