Авторские статьи

GPL и бесплатность.


Часто вижу в комментариях пользователей и даже в некоторых статьях на просторах Интернета, как люди мешают в кучу понятия "открытость ПО" и его "бесплатность". Хочется в очередной раз сделать попытку объяснить на пальцах так, чтобы на уровне ДНК появилось чёткое понимание ситуации.

Чтобы не витать в облаках и пространственно не махать руками в воздухе, давайте возьмём классический пример Hello World любого начинающего программиста. Допустим мы пишем на языке С. Вы создадите с помощью редактора или среды разработки (IDE) текстовый файл MyApp.c и в нём укажите:

#include <stdio.h>
main()
{
    printf("Hello World");
}

Это исходник вашей простенькой программы и с помощью компилятора "из него" будет создан бинарный файл. В мире MS Windows такой бинарный файл вам будет знаком по расширению exe (executable). На данном этапе у вас появилось 2 сущности: исходный и бинарный файлы. Подправляя исходник под свои нужды, вы с помощью компилятора создаёте обновлённый бинарник.

И в данный момент времени вы, как автор программы, сделаете судьбоносный выбор для своего детища:

  • дать ему свободу и поставлять бинарный файл вместе с исходным файлом (или легко дать к нему доступ), чтобы любой желающий мог улучшить программу, подправив исходник.
  • никому и никогда не давать исходник и отдавать только бинарный файл.

Процесс восстановления исходного текста из бинарного файла называется обра́тная разрабо́тка (обратный инжиниринг, реверс-инжиниринг, reverse engineering) и на практике для серьёзных программных продуктов оказывается очень сложным и почти невыполнимым. Получается что, скрывая исходник, вы делаете программу "закрытой" или, как ещё говорят, проприетарной.

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

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

Чтобы в реальном мире юридически защитить именно такое ви́дение свободы, Ричард Столлман с помощью юристов создал универсальную общественную лицензию (General Public License - GPL). Если автор программы солидарен с идеями Ричарда и хочет сделать свою программу свободной, он выпускает её в мир, указав что она защищена лицензией GPL. Отныне другие люди могут брать программу, модифицировать её и запускать на своё усмотрение, не имея права закрывать её, лишая других доступа к исходному коду.

Есть другие люди, которые видят свободу ПО по другому и их мысль закреплена в других свободных лицензиях, например лицензия BSD. Но в данной статье мы сконцентрируемся на GPL. Заметьте, что нигде вы не видели упоминания про деньги и оплату, потому что лицензия GPL защищает программу от закрытия, то есть борется за то, чтобы исходный файл у программы был.

Давайте добавим сущность "деньги"!

  • Свободная программа с доступом к исходному коду.
    • Бесплатная. Если отбросить мелочь, типа я заплатил за диск деньги или "потратил" трафик, качая образ из Интернет, то под бесплатностью понимается что с вас за программу не взяли ни копейки. Большинство программ из мира GPL бесплатны пользователям, но это не означает, что между бесплатностью и свободой можно поставить знак равенства.
    • Платная. Да-да, мой дорогой друг! Свободная программа под защитой GPL может быть платной и этим фактом, в хорошем смысле этого слова, пользуется Red Hat. Первая в мире компания, сумевшая за исходном коде зарабатывать миллиарды долларов в год. Люди взяли исходный код различных проектов, скомпоновали дистрибутив и продают его по подписке, организовав платный доступ к своим репозиториям, оказывая поддержку и давая гарантии. Э-э-э, скажет читатель, а где исходный код? А он есть и к нему есть доступ! Этим воспользовались замечательный линукс дистрибутив Community ENTerprise Operating System (CentOS) и Oracle Linux, которые из этого же исходного кода скомпилировали свой бинарный код, образно говоря воссоздав копию дистрибутива Red Hat. В этом месте, только не подумайте что хочу как-то очернить Red Hat. Отнюдь! Компания много вкладывает в свободные проекты, которые предоставляют для неё интерес. Red Hat сделала Linux ближе для бизнеса, давая серьёзным людям гарантии и отвечая головой за используемые ею проекты.
  • Закрытая (проприетарная) программа без доступа к исходному коду.
    • Бесплатная. Автор программы отдал вам только бинарный код и не берёт за него ни копейки. Данный вид ПО часто именуют freeware. Закрытую бесплатную программу часто не правильно сравнивают со свободной бесплатной программой, находящейся под защитой GPL. Возникает философский вопрос: "а что даёт простому пользователю факт наличия у программы исходного кода"? Ведь в сложном коде сложного проекта может разобраться только программист, да и далеко не всякий!

      Во-первых, пользователь может быть уверен что другие люди могут и периодически делают аудит безопасности свободных программ. Мо́жет и де́лается сравнение предоставляемого готового бинарного кода и кода, собранного собственными силами из исходников, на предмет расхождений.

      Во-вторых, наличие исходного кода позволяет другим делать статический анализ на наличие ошибок, как это делает русская команда из PVS-Studio. Без исходного кода подобную проверку может делать только автор программы. Уместно вспомнить слова, приписываемые Линусу Торвальдсу, "от тысячи глаз не скроешь ошибку" (Given enough eyeballs, all bugs are shallow).

      В-третьих, если автор закрытой программы потерял к ней интерес, то дальнейшее развитие её невозможно. Свободная программа с исходным кодом даёт защиту от забвения, если кто-то другой "поднимет упавший флаг".

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

    • Платная. Автор программы даёт вам бинарный код за деньги. Данный вид программ часто называют "коммерческое ПО".

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

Дополнительные материалы:
Движение Open Source.

Дата последней правки: 2023-12-27 14:24:52

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта