Часто вижу в комментариях пользователей и даже в некоторых статьях на просторах Интернета, как люди мешают в кучу понятия "открытость ПО" и его "бесплатность". Хочется в очередной раз сделать попытку объяснить на пальцах так, чтобы на уровне ДНК появилось чёткое понимание ситуации.
Чтобы не витать в облаках и пространственно не махать руками в воздухе, давайте возьмём классический пример Hello World любого начинающего программиста. Допустим мы пишем на языке С. Вы создадите с помощью редактора или среды разработки (IDE) текстовый файл MyApp.c и в нём укажите:
#include <stdio.h> main() { printf("Hello World"); }
Это исходник вашей простенькой программы и с помощью компилятора "из него" будет создан бинарный файл. В мире MS Windows такой бинарный файл вам будет знаком по расширению exe (executable). На данном этапе у вас появилось 2 сущности: исходный и бинарный файлы. Подправляя исходник под свои нужды, вы с помощью компилятора создаёте обновлённый бинарник.
И в данный момент времени вы, как автор программы, сделаете судьбоносный выбор для своего детища:
Процесс восстановления исходного текста из бинарного файла называется обра́тная разрабо́тка (обратный инжиниринг, реверс-инжиниринг, reverse engineering) и на практике для серьёзных программных продуктов оказывается очень сложным и почти невыполнимым. Получается что, скрывая исходник, вы делаете программу "закрытой" или, как ещё говорят, проприетарной.
В данном месте нужно дать точнее определение "свободы для ПО". Не побоюсь сказать, что данный термин относится к философским вещам и каждый под этим понимает своё. Ричард Столлман в своё время описал свободу через 4 пункта:
Чтобы в реальном мире юридически защитить именно такое ви́дение свободы, Ричард Столлман с помощью юристов создал универсальную общественную лицензию (General Public License - GPL). Если автор программы солидарен с идеями Ричарда и хочет сделать свою программу свободной, он выпускает её в мир, указав что она защищена лицензией GPL. Отныне другие люди могут брать программу, модифицировать её и запускать на своё усмотрение, не имея права закрывать её, лишая других доступа к исходному коду.
Есть другие люди, которые видят свободу ПО по другому и их мысль закреплена в других свободных лицензиях, например лицензия BSD. Но в данной статье мы сконцентрируемся на GPL. Заметьте, что нигде вы не видели упоминания про деньги и оплату, потому что лицензия GPL защищает программу от закрытия, то есть борется за то, чтобы исходный файл у программы был.
Давайте добавим сущность "деньги"!
Во-первых, пользователь может быть уверен что другие люди могут и периодически делают аудит безопасности свободных программ. Мо́жет и де́лается сравнение предоставляемого готового бинарного кода и кода, собранного собственными силами из исходников, на предмет расхождений.
Во-вторых, наличие исходного кода позволяет другим делать статический анализ на наличие ошибок, как это делает русская команда из PVS-Studio. Без исходного кода подобную проверку может делать только автор программы. Уместно вспомнить слова, приписываемые Линусу Торвальдсу, "от тысячи глаз не скроешь ошибку" (Given enough eyeballs, all bugs are shallow).
В-третьих, если автор закрытой программы потерял к ней интерес, то дальнейшее развитие её невозможно. Свободная программа с исходным кодом даёт защиту от забвения, если кто-то другой "поднимет упавший флаг".
Простому пользователю может и не нужен исходный код программы, но поверьте, что его наличие даёт многие преимущества для человека, даже если он об них и не подозревает.
Подытожим. Свободная программа обладает исходным кодом, из которого она была создана. Автор опубликовал свободную программу под лицензией, которая призвана защитить её свободу, такой как GPL. Так как понятие "свобода" сложный житейский вопрос, то до сих пор не утихают споры, которыми вам лучше не забивать голову. Главное что следует уяснить, что лицензии типа GPL совершенно не занимаются вопросом "деньги, оплата". Свободный софт может быть бесплатным и платным. Закрытый софт может быть бесплатным и платным. Свободная программа автоматически не подразумевает понятия некоммерческая.
Дополнительные материалы:
Движение Open Source.