Открытое и закрытое ПО
Автор Нифакин Николай   
26.04.2011 г.

Откуда появилось свободное программное обеспечение и ПО с открытым кодом? Что создало предпосылки возникновению закрытого, проприетарного ПО? Об этом на доступном зыке в следующей статье, позаимствованной с сайта http://younglinux.info

 Как распространяются программы

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

Из вышесказанного следует, что программы могут распространяться в двух видах: в файлах с исходным кодом и в файлах с исполняемым кодом. Для конечного пользователя последний вариант может быть даже более удобным, т.к. ему не надо устанавливать на компьютер специальную программу-транслятор и переводить код из одного вида в другой. Однако для других программистов может быть интересен именно исходный код. Они могут, изучив его, научиться чему-то новому, улучшить программу, позаимствовать часть кода для своей программы и т.д. Еще лет 30-40 назад, когда компьютеры встречались достаточно редко, были большими и пользовались ими почти исключительно специалисты, обмен исходными кодами был преимущественным способом распространения программного обеспечения (ПО).

Программное обеспечение с закрытым исходным кодом

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

С началом широкого распространения компьютеров в 80-х годах, потребность в программном обеспечении резко возросла. Появилось множество поставщиков ПО, желающих иметь преимущества друг перед другом. «Как сделать так, чтобы программы покупали именно у нас?» Очевидно, надо делать хорошие программы, в которых люди нуждаются. Но можно сделать акцент на том, чтобы уменьшить вероятность того, что хорошую, необходимую обществу программу сделает другой. Утрируя, можно представить внутренний диалог некоторых организаций следующим образом: «Если у меня есть кое-какая программа, то я ее никому не покажу. Пока я буду ее медленно и кое-как улучшать, другим фирмам потребуется время, чтобы написать похожую. А вот если я всем покажу исходные коды своей программы, то вдруг другая организация сделает мою программу лучше и продаст больше. Мне невыгодно и обидно.» Видимо исходя из подобных рассуждений и была сформирована бизнес-модель, запрещающая распространять исходные коды программ. Распространялись только исполняемые файлы. Программисты перестали делиться между собой исходными кодами (по собственному желанию или по приказу организации, где работали). Понятно, что закрытость кодов тормозит развитие ПО, и негативно отражается на всем обществе в целом (вы не можете пользоваться супертекстовым процессором сегодня, хотя он мог бы уже быть); но для отдельной фирмы или человека закрытость кодов может обеспечить большую выгоду.

Конечно, фирмы, закрывающие коды своих программ, сделали и хорошее. Наверно, не только эти фирмы, но они в первую очередь активно изучали рынок. Чтобы продать больше, они следили за возникающими в обществе потребностями и быстро реагировали, делали программы удобными и простыми в использовании для непрофессионалов.

Компьютерная программа - не материальный ресурс

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

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

Программы с открытым исходным кодом

Естественно, когда ПО начало закрываться и запрещаться к распространению, появились несогласные. Самый выдающийся пример, это Ричард Столлман. Многие программисты не лицензировали свои произведения бумагами, запрещающими их распространение, и спокойно предоставляли исходные коды сообществу. Такие программы становились общественным достоянием. Каждый мог взять их и использовать на свое усмотрение: для улучшения, создания на их основе чего-то нового. Измененная улучшенная версия также могла стать общественным достоянием, а могла и не стать. Человек, взявший за основу чью-то программу, с открытым исходным кодом, внеся изменения, мог "закрыть ее от чтения и распространения" какой-нибудь лицензией. Это плохо. Оказалось, что открытости и свободе требуется защита не в меньшей степени, чем закрытости и ограниченности. Следовательно, должны были появиться лицензии охраняющие программное обеспечение от превращения его в закрытое и несвободное.

Копилефт (copyleft) и лицензия GNU GPL

Copyleft - это тип лицензий, запрещающих ограничение свобод (прав). Причем, программа выпущенная под лицензией типа copyleft уже не может при изменении выпускаться под некопилефтными лицензиями. Copyleft заразно. Лицензии копилефт, также как и лицензии копирайт, используют понятие авторского права для защиты произведения. Однако защита производится с целью гарантии свобод, а не их ограничения.

Самым известным примером копилефтной лицензии является GNU GPL (GNU General Public License - Универсальная общественная лицензия Гну). Эта лицензия была разработана в рамках GNU-проекта Р. Столлмана.

Разработчикам, выпускающим свои программы под GNU GPL (как наверно и любым другим копилефтом), гарантируется, что

  • Авторство будет сохранено.

  • Каждый сможет копировать и использовать программу как угодно.

  • Программный код будет всегда открыт для изучения и изменения.

  • Измененные версии программы также будут лицензированы копилефтом.

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

Можно отметить следующие преимущества программ, распространяемых с открытым исходным кодом:

  1. В таких программах быстрее исправляются ошибки, т.к. код может просмотреть большее количество людей.

  2. Безопасность. В закрытые программы всегда можно встроить "секретный" код, делающий что угодно на компьютере пользователя. Пользователь об этом может никогда и не узнать. С открытым ПО такие фокусы невозможны.

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

Источник: Лаборатория юного линуксоида

 

Последнее обновление ( 26.04.2011 г. )