От идеи к революции: эволюция свободных программ в истории

Разработчики игр и ПО

ВВЕДЕНИЕ

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

Подчеркивая, что эти две модели являются производными от противоположных отправных точек в характере процесса отладки программного обеспечения.и его частной теории о том, что он назвал законом Линуса, который гласил следующее: «При достаточном количестве глаз все ошибки не имеют значения» или, другими словами: «При достаточном количестве глаз все ошибки – пустяки».

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

В других литературных источниках это слово или понятие под названием Хакер относится к:

Это более универсальная и реальная концепция, поскольку «хакеры» есть во всех областях человеческого знания.

Общественная актуальность

Глядя на ситуацию, которая сегодня сложилась на рынке ПО, невольно вспоминается Марксова теория развития общества: в IT-сфере наблюдается классическое противоречие производительных сил с производственными отношениями. Иными словами, концепция проприетарного ПО уже не может успевать за научно-техническим прогрессом, потому что процесс разработки таких цифровых инструментов более длителен, а распределение производственных ресурсов менее оптимально. Закрытый в себе новый проприетарный продукт не дает толчка общему прогрессу отрасли, а все развитие ее сводится к развитию этого конкретного продукта, а не технологий, использованных при его создании. Потому она должна непременно уступить концепции свободного ПО, более эффективной и продуктивной.

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

Научные корни free software и его образовательный потенциал

Программное обеспечение имеет две очень непохожие стороны. ПО является одновременно и исполняемым бинарным файлом, и текстом кода, написанным на определенном языке. Зная код, легко можно воссоздать исполняемую составляющую, но проделывать обратное действие очень трудно и долго. Проприетарное ПО делает невозможным (незаконным) распространение исходного программного кода, который можно было бы потом перевести в исполняемый бинарный файл. В то же время именно открытость кода — наиболее приближенная к научным корням программирования черта.

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

Сам подход к разработке free software идентичен подходу научному. Исследователи пишут свои работы для последующей публикации и предоставления на суд коллег. Таким образом, на основе этой работы в будущем будут строить научные работы-форки другие ученые. Кто‑то будет комментировать, критиковать, хвалить, дополнять, развивая и обогащая таким образом знания человечества все новыми и новыми мнениями, фактами и практическими инструментами. Очевидно, что принцип публичности (и открытости) самый продуктивный для научной деятельности. Можно предположить, что то же справедливо и для ПО, ведь оно, по сути, служит той же задаче, что и другие научные дисциплины — решению теоретико-прикладных задач.
Согласно докладу «Coverity Scan free software Integrity» и «US Department of Homeland Security» на 1000 строк кода от сорока пяти самых популярных открытых программ в среднем приходится 0,45 ошибок, а на такое же количество строк кода сорока одной самой популярной программы проприетарного ПО количество ошибок равняется 0,64 (Kroah-Hartman and McPherson 2012). Это может свидетельствовать о том, что модель свободной разработки и распространения ПО не уступает, а иногда и превышает по качеству аналогичные несвободные модели.

Подтверждением способности подхода СПО обеспечивать рынок продуктами, не уступающими по качеству проприетарным может служить веб-сервер Apache, с помощью которого функционирует 33,56% всех веб-сайтов по состоянию на январь 2016 (Netcraft 2016) и который является свободным продуктом (таблица 1). Распространен также и язык серверного программирования PHP, который занимает седьмую позицию по популярности (март 2017), согласно Индексу TIOBE (TIOBE 2017) (таблица 2).

BSD

У университета Беркли тоже есть своя лицензия — Berkeley Software Distribution License. Текст лицензии является общественным достоянием, это позволяет любому модифицировать его, создавая свою лицензию на основе BSD. Такие лицензии называют «лицензии типа BSD».

Например, общественная лицензия Microsoft добавляет запрет на изменение лицензии в случае, если код распространяется в виде исходников. Есть также NetBSD, FreeBSD, OpenBSD, DragonFly BSD, но самой используемой считается «модифицированная версия BSD», также известная как «BSD с тремя пунктами».
Дело в том, что изначальная версия из четырех пунктов (англ. «four-clause BSD») содержала неудачный пункт о необходимости подстановки копирайта университета Беркли.

Каждый, кто пользовался BSD, заменял Беркли на свой вариант организации или собственное имя. Известен случай, когда из-за этого пункта приходилось упоминать 75 других организаций. Также этот пункт делал BSD несовместимой с GPL, так как GPL запрещает добавлять новые ограничения, помимо перечисленных в ней самой. После двухлетней дискуссии было принято решение об удалении пункта о рекламе. Теперь в лицензии только три пункта:

Трехпунктовая BSD довольно похожа на MIT, но в MIT явно указаны разрешения на сублицензирование, слияние, публикацию и продажу. Тем не менее эти свободы подразумеваются и в BSD, их можно отнести к «использованию» или «распространению». Можно сказать, что выбор между MIT и BSD — исключительно дело вкуса.

“Со временем нам станет ясно, может ли СПО жить и развиваться самостоятельно или капиталистическая дистрибуция все-таки превратит его в инструмент преодоления своих противоречий.”

Явление СПО — это определенно мощный импульс для общественного сознания, который затронул не только непосредственно сферу IT. Со временем нам станет ясно, может ли СПО жить и развиваться самостоятельно или капиталистическая дистрибуция все-таки превратит его в инструмент преодоления своих противоречий.

Затронуло СПО также принципы распространения и преобразования информации, показав, что возможен иной путь, кроме как «разработчик-продавец — покупатель». Границы размылась — теперь потребитель сам может быть разработчиком.

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

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

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

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

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

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

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

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.

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

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

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

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

Поэтому всем важно, чтобы вовлечённые в их создание программисты достойно зарабатывали

Философия[править | править код]

В европейской культуре столь долго вырабатывались правила собственности по отношению к материальным предметам, что распространение этих прав на предметы нематериальные — программные продукты — выглядит делом естественным и не вызывает сомнений. А поводов для сомнений немало. Главное отличие программного продукта от материальных объектов — т. н. безущербное копирование, для которых законодательно запрещать нанесение ущерба, то есть признавать право распоряжаться вещью только за одним человеком — за её хозяином. Никаких дополнительных механических или юридических приспособлений при этом не требуется.

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

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

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

Риски и нюансы

Опенсорс может быть опаснее: если у вас сайт на опенсорсной платформе, то любой хакер может посмотреть исходный код этой платформы и найти там баг. Если хакер захочет вам навредить, он использует этот баг и что-нибудь поломает. Или он сообщит о баге разработчику и предложит заплатку. 

Так как опенсорсные проекты поддерживают группы разработчиков, часто анонимные, они могут решить сделать в коде что-то вредоносное. Это разрушит их репутацию, но чем не пожертвуешь в порыве массового психоза. 

Когда у софта закрытый код, то найти в нём уязвимость намного сложнее (но тоже возможно), а если появится что-то вредоносное — понятно, кто за это отвечает. 

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

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

Хорошие примеры — Atlassian и 1С. Первые делают систему Jira, которую используют почти во всех ИТ-компаниях. Вторые — систему для бухгалтерского учёта, склада и т. д. «Джира» и «1С:Предприятие» — не самые удобные и вылизанные программы. Но когда тебе срочно нужно добавить какую-то возможность (или что-то починить) — ты звонишь своему провайдеру, и он обязан по договору тебе помогать. С открытым ПО так не получится.

Открытое ПО нельзя так просто закрыть. Вот была компания Intuit, делала энтерпрайзную бухгалтерию, CRM и сервисы рассылок. Потом они решили, что больше не будут обслуживать клиентов из России. И ничего ты им не сделаешь, имеют право. 

А вот OpenOffice и LibreOffice, для сравнения, нельзя будет просто так отключить для России или любой другой страны. Это свободное ПО, и спасибо ему за это.

Rate article