10 мифов о свободном ПО

Разбираемся, почему free software — это не всегда бесплатно и зачем open source начинающему программисту.

Есть программисты, которые объединяются в команды и после работы бесплатно создают полезные программы. Есть компании, которые нанимают этих программистов, а потом выкладывают в открытый доступ исходные тексты приложений и сервисов, чтобы другие люди могли их исследовать, изменять под себя и распространять дальше. А продвигают все эти «странные» идеи известные всему миру айтишники, такие как Ричард Мэттью Столлман, Брюс Перренс, Лоуренс Лессиг.

Всё это — свободное программное обеспечение, или open source software, главные мифы о котором мы сейчас разберём.

Тимур Тукаев

Фанат Free Software Foundation, использую Linux и недолюбливаю Windows. Пишу истории про кодинг и программы на Python. Влюблен в LISP, но пока что не умею на нем программировать.


Миф 1

Свободное ПО = бесплатное

Свободное ПО может быть платным, это не запрещено. Но оно не может быть проприетарным, то есть закрытым и нарушающим «четыре свободы» GNU:

  • Свобода 0* — запускать программу в любых целях.
  • Свобода 1 — изучать программу и изменять под свои задачи (обязательный доступ к исходным текстам).
  • Свобода 2 — распространять копии программ.
  • Свобода 3 — улучшать программу и публиковать эти улучшения на благо всех людей. Конечно же, с открытыми исходными текстами.

Свободное ПО называется free software, а бесплатное — freeware. В отличие от свободных, бесплатные программы бывают закрытыми и могут распространяться в виде исполняемых файлов, по которым нельзя понять их внутреннюю структуру. Например, популярная программа для очистки Windows от мусора CCleaner — бесплатная, но не свободная.

* Кстати


Нумерация списка этих свобод от 0 до 3 — фишка авторов-программистов.

Миф 2

Свободное ПО == open source (открытые исходники)

Две главных организации, которые продвигают идеи открытого и свободного ПО, — Open Source Initiative (OSI) и Free Software Foundation (FSF). Они чуть по-разному понимают термины «свободный» и «открытые исходники». FSF больше внимания уделяет свободам пользователей и использует термин free software. OSI же считает, что слово free сбивает людей с толку, намекая на бесплатность, и подчёркивает значение открытых исходников и метод разработки программ. Для OSI основной термин — open source software.

По сути и OSI, и FSF занимаются одним делом, а все их разногласия — в небольших философских акцентах.

У каждой программы есть лицензия — юридические условия, на которых её можно использовать. Обычно она ограничивает возможность исследовать устройство, модифицировать код и создавать на его основе новые программы. Это относится даже к тем из них, код которых выложен в открытый доступ. Пример — WinRAR, популярный архиватор челябинца Евгения Рошаля: исходники открыты, но делать с ними ничего нельзя. Такие программы тоже считаются несвободными.

Миф 3

Если есть исходный код — это open source

На самом деле нет. Для этого нужен полностью понятный код, который можно легко прочесть. Несвободными являются даже те программы, которые прошли обфускацию — когда исходный текст прогоняют через специальный сервис и делают его трудночитаемым. Часто так поступают с программами на интерпретируемых языках, особенно с разными скриптами на JavaScript, Perl или PHP. Они переводятся в машинный язык только в момент выполнения, и потому их исходники всегда доступны. В коде после обфускации не разобраться — теряются стройность и красота, остаётся только функциональность.

Вот классический пример исходника на языке C, всё логично и ясно даже без комментариев:

int COUNT = 100;
  float TAX_RATE = 0.2;
  for (int i=0; i<COUNT; i++)
  {
    tax[i] = orig_price[i] * TAX_RATE;
    price[i] = orig_price[i] + tax[i];
  }

Он же после обфускации:

for(int a=0;a<100;a++){b[a]=c[a]*0.2;d[a]=c[a]+b[a];}

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

Миф 4

Свободное ПО — это лицензия GNU GPL

Многие связывают свободное ПО с самой известной лицензией — GNU GPL* от Free Software Foundation. На самом деле свободных лицензий очень много: МIT, BSD, Mozilla Public License (MPL), Common Development and Distribution License (CDDL), Apache Software License. Да и у авторов GPL есть разные версии их свободной лицензии: для документов, «железа» и программ.

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

* Кстати


Фонд FSF считает официальным английский текст GNU GPL, а российское законодательство признает только лицензии, переведенные на русский язык. Поэтому правовой статус GPL в России немного туманный.

Миф 5

Свободное ПО — для любителей, а не для серьёзных программистов

Многие думают, что все серьёзные программисты работают в Microsoft, Oracle, Apple и подобных корпорациях, не занимаются свободным ПО, а создают закрытые коммерческие продукты. Но и в открытых сообществах много высококлассных кодеров. Например, такие известные люди, как Линус Торвальдс — разработчик Linux, или Гвидо ван Россум — создатель языка Python. Кстати, Python, как все языки программирования, тоже имеет лицензию. И выходит под собственной, которая называется PSFL.

К открытым проектам может присоединиться и профессионал, и новичок, и просто любитель кодинга: повышать квалификацию, нарабатывать портфолио и репутацию. Работа над свободным ПО в мире программистов считается хорошим тоном. Конечно, писать критически важные части ядра Linux или FreeBSD так просто вам не дадут, но какие-то небольшие и менее приоритетные задачи выполнять можно сразу.

Миф 6

Свободное ПО — недоработанное и у него меньше функций

Спорное утверждение. Да, открытые программы для работы с растровой и векторной графикой сильно отстают от коммерческих аналогов, но в них всё равно можно полноценно работать. А свободный 3D-редактор Blender массово используют в Голливуде — например, в нём сделаны спецэффекты «Человека-паука 2».

Большинство серверов в мире работает на Linux, FreeBSD или OpenBSD. Да и программируем мы в основном на свободных языках. Веб тоже держится на СПО: браузеры Chromium и Mozilla Firefox, серверы Ngnix и Apache, базы данных MySQL и PostgreSQL, свободный движок для сайтов WordPress — список можно продолжать долго. Это отлично проработанные программы, которые по многим параметрам превосходят коммерческие аналоги.

Миф 7

Свободное ПО только для программистов, простому человеку не разобраться

Кажется, что Linux — не для обычных людей, а чтобы установить и настроить СПО, надо быть сисадмином, программистом или как минимум сыном маминой подруги. Действительно, есть куча закрытых программ, инсталлировать которые сможет только профессионал. Но существует и множество свободных, с которыми справится практически любой. К примеру, установить Ubuntu или Linux Mint легко — уж точно не сложнее, чем справиться с настройкой реестра Windows. Да и управлять программами в Linux проще — весь софт можно обновить с помощью одной команды.

Миф 8

На свободном ПО не заработать

Этот миф перекликается с темой бесплатных программ. Многие из них действительно распространяются «безвозмездно, то есть даром», а программисты помогают разработке как волонтёры, в свободное от работы время. Но крупные компании, фонды и отдельные люди жертвуют немалые деньги, чтобы стимулировать ключевых специалистов на свободных проектах.

Например, разработчик браузера Firefox, Mozilla Foundation, существует на государственные гранты, пожертвования, помощь от крупных компаний и за счёт коллабораций. Корпорация Google одно время платила фонду, чтобы быть в браузере поисковиком по умолчанию. Эти деньги шли на зарплату программистам, пиарщикам, тимлидам, маркетологам, формировали рекламный бюджет и так далее. Похожая финансовая модель и у других сообществ — того же Linux Foundation или проекта GNU.

Зачем корпорации спонсируют такие проекты? Они пользуются многими свободными программами и хотят, чтобы софт был лучше и надёжнее, быстрее обновлялся. В бизнесе повсеместно применяются веб-серверы Ngnix и Apache, свободный офисный пакет LibreOffice, операционные системы Linux или FreeBSD. Поэтому всем важно, чтобы вовлечённые в их создание программисты достойно зарабатывали.

К примеру, Линус Торвальдс с 1997 по 2003 год работал в компании Transmeta, где ему платили зарплату и давали возможность разрабатывать ядро Linux, а Гвидо ван Россум спокойно занимался Python в DropBox. К свободному ПО серьёзно относятся и многие ИТ-гиганты — те же Oracle, Google и даже Microsoft спонсируют сообщества напрямую или предоставляют им своих разработчиков.

Миф 9

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

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

Свежий пример: в мае 2020 года вышла новая версия музыкального редактора Audacity 2.4.0, а через день один из пользователей обнаружил проблему: при определённых условиях терялись данные. Буквально за 5-6 часов сообщество программистов протестировало программу, свежий релиз отменили, в центре загрузок оставили предыдущую версию. А ещё через день проблему устранили и вышла исправленная, с номером 2.4.1.

Производители коммерческого софта ориентированы на продажи, поэтому могут иногда замалчивать факты о безопасности или не решают проблемы вовремя, отдавая приоритет новым разработкам. А обнаружить «дыры» проприетарных программ не так уж и сложно — хакеры по всему миру регулярно отчитываются о новых багах версий Windows.

Миф 10

Конкуренты используют ваш код, а вы останетесь ни с чем

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

Известные компании всё больше ориентируются на свободный код и видят в нём выгоду. Например, в марте 2020 года «ВКонтакте» выложили на GitHub под свободными лицензиями код фронтенда своих мобильных приложений, а на порталах графических редакторов Figma и Sketch (под лицензией Creative Commons) появилась вся их графика. Это поможет сторонним разработчикам мини-приложений для соцсети создавать более профессиональные решения.

Зачем всё это начинающему программисту

Свободное программное обеспечение — не просто форма разработки приложений, но и философия. Поэтому идеи подхватили в разных сферах: появились лицензии для свободных аппаратных платформ, для творческих людей (семейство Creative Commons) и даже проекты open source велосипедов и автомобилей.

Для новичка в программировании свободное ПО — отличный способ набить руку, наработать портфолио и принести пользу людям, а для программиста-профи или бизнесмена — достойно зарабатывать, пусть и без космической маржи.

Как новичку присоединиться
к open source проекту

  1. Присоединиться к официальному форуму или конференции разработчиков.
  2. Принести пользу сообществу: помочь с переводом документации или статей, тестировать проект и отправить несколько баг-репортов.
  3. Изучать стиль программирования проекта. Попробовать сделать пару патчей или исправить несложный баг.
  4. Дописать какую-то недостающую функцию к проекту и предложить разработчикам.
  5. Знакомиться и общаться с участниками сообщества, задавать им вопросы и проявлять активность — так можно быстрее добиться результата.

Вот несколько свободных проектов на разных языках программирования. Присоединяйтесь и добавляйте их себе в портфолио.

Python

  • Blender — мощный 3D-редактор.
  • Django — фреймворк для приложений на Python.
  • OCRFeeder — графический интерфейс для программ распознавания текста.
  • Дополнения для GIMP или OBS.

Go

  • Kubernetes — программа для автоматического развёртывания контейнерных приложений, сложная штука для профессионалов.

Java

  • Eclipse — среда разработки.
  • FreeMind — программа майндмэппинга.
  • NetBeans — среда разработки.
  • TightVNC — клиент для удалённого доступа к рабочему столу Windows.

JavaScript

  • PostCSS — программа для автоматизации работы с CSS.
  • MediaWiki — CMS для «Википедии» и любых вики-проектов.
  • TinyMCE — WYSIWYG-редактор для HTML и JavaScript.

C++

  • Chromium — свободный браузер, на котором основаны Chrome и Opera.
  • OBS — популярная программа для стриминга.
  • Mozilla Firefox — свободный браузер.
  • LibreOffice и OpenOffice — свободные офисные пакеты.

Что почитать и посмотреть об open source и free software

  1. Статьи на русскоязычном сайте GNU.
  2. «Свободная культура», книга Лоуренса Лессига, юриста FSF и создателя лицензий Creative Commons.
  3. «Linux. Just for fun», книга Дэвида Даймона и Линуса Торвальдса.
  4. Увлекательные документалки про Linux «Код Linux» и «Revolution OS».

Где учиться программированию?


У Skillbox — более 40 крутых курсов по программированию. Разработка на Java, PHP, C#, Python и других языках, Data Science, разработка игр на Unity, кибербезопасность, разработка мобильных приложений…

Начать учиться можно сразу, а платить за учёбу — позже. Обучение онлайн, в удобном для вас режиме. А ещё мы помогаем с трудоустройством.

Приходите!

Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox