Рыбный день #16: Дюжина ножей в спину Open Source


Споры относительно открытого (свободного) ПО (Open Source Software) даже без вмешательства вашего покорного слуги не утихают ни на секунду. А уж стоило мне высказаться по поводу одной из «вечных тем» в РД#14 — сразу же такая многостраничная дискуссия развернулась, что просто диву даешься, откуда у людей столько свободного времени берется. Поэтому, вполне возможно, постоянные участники обсуждения «Рыбных дней» резонно заметят, что нынешний выпуск является не более чем развернутой и дополненной компиляцией тех самых «конференционных баталий». Они будут правы. Однако, во-первых, я искренне надеюсь, что круг читателей этой колонки все-таки несколько шире, а во-вторых, профессионализм журналиста состоит, в том числе, в вычленении неких «осевых тем», вокруг которых и «крутятся» самые жаркие споры. Одну из них мне, кажется, удалось приметить в общем флеймообразующем потоке рассуждений о прелестях и недостатках различных разновидностей коммерческого и некоммерческого ПО. Насколько удачно — это уж судите сами. Ну и напоследок: дюжины у меня все-таки не вышло — ну не Аверченко, не тот талант. Однако очень уж «вкусное» название получалось, поэтому за идею Аркадию Тимофеевичу персональное большое спасибо.



Что уместно, то приятно.
(персидская поговорка)

Кто мешает тебе выдумать порох непромокаемый?
(Козьма Прутков)


Freeware

Начнем, пожалуй, с наиболее простой и понятной разновидности некоммерческого программного обеспечения — Freeware. Что это такое? Компиляция из наиболее расхожих определений этого термина получается на удивление краткой: по сути, Freeware — это программное обеспечение, которое может использовать, не выплачивая за это денег, любой желающий. Ограничение подразумевается только одно: авторскими правами на Freeware-программу обладает ее автор, и это сомнению и обсуждению не подлежит. Кроме того, автор также может указать в лицензии другие ограничения — например, запретить свободное использование своей программы учреждениями и организациями, оставив бесплатную лицензию исключительно для личного использования (home/private use).

По состоянию на сегодняшний день, «на базе» Freeware родилась масса «частично совместимых» с основными принципами разновидностей, что привело к дальнейшему развитию этого класса программ и трансформации его в более широкий — «условно-бесплатного программного обеспечения». То есть бесплатного — но при определенных условиях. Как ни странно, «в некоторой степени Freeware» сейчас производят не только энтузиасты, но и коммерческие фирмы — как правило, это «персональные» варианты профессиональных программ, отличающиеся урезанной функциональностью или же просто лицензионным ограничением, запрещающим использование бесплатных версий в коммерческих целях. Однако при всем этом многообразии основные положения у любого Freeware все-таки сходны, и разделить их можно на две категории: права, которыми обладает по отношению к программе автор (производитель, разработчик, коллектив разработчиков), и права пользователя. Пользователю в большинстве случаев предоставляется одно, но самое главное и существенное право: использовать данную программу, не платя за это денег. У разработчика список прав более широк:

  • право принимать решение относительно дальнейшей судьбы программы: будет ли она развиваться, будут ли выходить новые версии и/или исправления, будет ли осуществляться техническая поддержка и в каком объеме;
  • право на изменение статуса программы: разумеется, та версия, что уже была выложена в публичный доступ как бесплатная, даже с точки зрения закона не может быть объявлена платной, однако следующая версия может перейти в разряд, к примеру, Shareware, или и вовсе стать «полностью коммерческой»;
  • кроме того, автор, являющийся полноправным хозяином кода, может просто продать его кому-нибудь другому, после чего дальнейшая судьба программы будет определяться уже новым хозяином.

Быть может, кому-то захочется возразить, что получается «не по справедливости» — вон, сколько всего может разработчик, а пользователю только одно право дано — собственно, пользоваться. Однако… Справедливость, говорите? Что ж, давайте посмотрим на ситуацию «с точки зрения абстрактной справедливости». Что у нас предусматривают равные права? Правильно — прежде всего, равные обязанности. Но о каких же равных обязанностях может идти речь в данном случае?! Автор программу придумал, написал, отладил, выпустил в свет, содержит за свой счет сайт, с которого она раздается всем желающим (бесплатного хостера отыскал? — тоже труд), баги правит, новые версии выпускает… требует чего-то взамен? Ничего не требует. Просто отдает — пользуйтесь, дескать, и все. Имеем мы пусть даже моральные основания «качать свои права» в такой ситуации? С моей точки зрения — однозначно нет. А посему — никакой несправедливостью, даже с чисто абстрактной точки зрения, в принципах Freeware и не пахнет. Другое дело, что данная концепция уважает права и свободы разработчика не в меньшей степени, чем права и свободы пользователя. Что логично и… да-да — справедливо.

Open Source Software

Для начала я все же приведу официальное определение открытого (свободного) ПО, взятое со страницы наиболее последовательно (и настойчиво) пропагандирующей данную разновидность программного обеспечения организации (Free Software Foundation):

«Свобода ПО» означает право пользователя свободно запускать, копировать, распространять, изучать, изменять и улучшать его. Более точно, существуют четыре разновидности свободы пользователей программы:

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

Программа считается свободной, если пользователи располагают всеми четырьмя свободами…

Иными словами, нам (как авторам/разработчикам) в очередной раз «ненавязчиво предлагают» стать «спонсорами». И мало того, что спонсорами — а чуть ли не пожизненными, и без права изменения статуса. Придумал программу — делись! Не самой программой делись, этого нам мало! Вообще всем — наработками, алгоритмами, форматами… Поделился — свободен, гуляй. Нет, в принципе, можешь даже продолжать — может, еще что-то интересное придумаешь. Но обязательно в публичный доступ! Потому как исходный код должен принадлежать всем, без этого каши не сваришь. Пусть даже ты и сваришь, а вот другой — нет. Это же несправедливо по отношению к другому, верно? Значит, кашей нужно делиться. А пользователи — они тебе помогать будут. И себе заодно. И всем остальным друзьям, знакомым и даже незнакомым. Потому что сила — она, брат, не в деньгах, она — в пользователях. Уж ты поверь. Взаимовыручка, сознательность и классовое чутье пролетариата и трудового крестьянства… впрочем, это меня уже куда-то совсем не туда понесло. Самой же показательной лично мне кажется вот эта замечательная выдержка из манифеста сторонников Open Source:

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

Выделение мое. Задумайтесь над ним. Это полезно.

Freeware vs. Open Source

Поскольку Freeware — это очень просто и понятно (вон, даже определение какое короткое получилось), мы не будем останавливаться еще раз на ранее упомянутых характеристиках этого типа ПО и разберем более подробно несколько Страшных Сказок Free Software Foundation, в которых нам рассказывают о том, почему именно Open Source Software намного лучше, правильнее и прогрессивнее как коммерческого софта, так и Freeware. Собственно, и любого другого программного обеспечения тоже, поскольку оно, ни много ни мало, «правильнее всех». Итак, сказка первая…

Сказка о расширяемой функциональности

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

Начнем с основного — с «защиты свобод». Если автор (разработчик, коллектив разработчиков) некой программы не желает, чтобы ее функциональность могла быть расширена сторонними лицами — это, как ни печально, его святое право. В таком случае все разрешается не лучшим для нас, пользователей, образом — но разрешается, тем не менее, вполне справедливо. Если же желание предоставить такую возможность имеется, то для программы просто-напросто… реализуется интерфейс внешних подключаемых модулей, плагинов (plug-ins). В конце концов, если ПО большое и сложное, может быть даже реализован собственный API или встроенный скриптовый язык (опять же с возможностью вызова внешних модулей). Между прочим, если довести этот подход до абсолюта, то можно вообще любое программное обеспечение, работающее под управлением операционной системы, рассматривать как «расширяющее изначальную функциональность ОС». Примеров программ с поддержкой плагинов и/или встроенного скриптинга масса: знаменитый редактор растровых изображений Adobe Photoshop, программа трехмерного моделирования 3ds max, условно-свободный файловый менеджер FAR (вот вам не-Open Source успешно расширяемое Freeware!)… даже пресловутый Internet Explorer! Между прочим, по поводу последнего: я вот тут припомнил, что открытый браузер Mozilla лишь совсем недавно приобрел способность сохранять HTML-страницы с картинками в формате Macromedia Flash, несмотря на принадлежность к Open Source и открытость кода. А вот для закрытого, входящего в состав коммерческой операционной системы браузера Microsoft Internet Explorer подобные плагины появились явно больше года назад…

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

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

Сказка о независимой экспертизе кода

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

И опять все не так страшно. Потому что наши максималистичные сторонники открытости всего и вся почему-то признают исключительно два состояния головы: либо у нее нет ни мигрени, ни насморка, либо она уже отсечена. Ну незнакомы им другие цвета кроме черного и белого, что уж тут поделаешь! В двухмерном пространстве люди живут. Итак, независимая экспертиза кода. Начнем с того, что обычному пользователю она, как правило, совершенно не нужна — я уже писал как-то, что шпионить имеет смысл только за тем, у кого есть что выведывать. Предположим, однако, что над использованием моей Freeware (но не Open Source) программы задумывается какая-то серьезная организация или коммерческая фирма, у которой соответствующие требования имеются.

Гм… Вообще-то, в таких случаях неплохо бы связаться с автором, не так ли? Вот и в «About…» его почтовый адрес прописан… Связаться и спросить: а нет ли в твоей программе, мистер потенциальный злобный Буратино, каких-то черных ходов или троянских коней? А я, разумеется, отвечу: «Да что вы, как можно! Конечно же нет!» А они в ответ: «А чем докажешь?!» А я им в ответ: «Ну, дык, возьмите исходники, да и посмотрите!» Что? Нет, вы не ослышались. Ведь я, как автор программы, имею полное право предоставить ее исходники определенному частному лицу и/или организации. Если мне так захочется. Если они будут убедительны, мотивируя свою необходимость в этих исходниках. Если я заинтересован в сотрудничестве с ними, а они — в сотрудничестве со мной. Предоставить, разумеется, на оговоренных мной условиях, устраивающих в то же самое время другую сторону. То есть мы просто возьмем и договоримся. Это не концепция Open Source — это просто два разумных человека, у одного из которых есть проблема (нужно сделать экспертизу), а второй может помочь ее решить (предоставить исходный код). Два нормальных разумных человека, как показывает практика, договорятся практически всегда. Если же один из них ненормален или неразумен… А имеет ли тогда смысл договариваться? Все равно ничего путного не выйдет.

Сказка о жизни после смерти

«Последний довод королей» в случае со сторонниками Open Source звучит прямо как на какой-нибудь торжественной мессе (да и, по сути, есть в нем нечто религиозное): Open Source Software способно сохранять жизнеспособность даже после того, как изначальный автор по каким-то личным причинам решил не заниматься более его развитием. Дескать, если код закрыт — то вот проекту и смерть пришла, а если открыт — то «упавшее знамя подхватят новые бойцы». Замечательно. Прекрасно. Тело умерло, но душа жива — прям переселение душ какое-то… Вот только, прежде всего, опровергает этот довод голая практика. Потому что, с одной стороны, маленьким количество благополучно усопшего Open Source ПО никак не назовешь, и не помогли ему почему-то открытые исходники. А с другой стороны — закрытого, коммерческого ПО, которое успело сменить двух-трех хозяев, но, несмотря на это, живо-живехонько — тоже пруд пруди. Однако даже не в этом дело — тем более что есть и обратные примеры. Дело даже не в этом… а в чем же? В том, что нам опять предлагают все то же опостылевшее универсальное средство лечения больных ушей…

Предположим, я почувствовал себя плохо, голова болит, в животе урчит, в общем — пора писать завещание. И вспомнил я, что есть у меня Freeware-проект, и жалко мне будет, если погибнет он безвозвратно, а сын-распутник подался в манагеры, и некому мне завещать дальнейшую работу над программой. Нормально, жизненная ситуация. Только два маленьких вопроса. Первый: а почему я должен завещать свое детище всем? Потому что мудрый дядя Ричард Столлмен решил, что от этого «будет всем ЩАСТЕ»? Не надо мне мудрых дядь, я сам мудрый. И друг у меня есть хороший, тоже программист, как раз вместе с ним парочку кусков кода и писали. Я свою программу лучше ему отдам. А там, глядишь, если загорится этим делом, да усовершенствует, да переведет в разряд Shareware — может, еще и денег на ней чуток заработает. Эдакий получится «подарок с того света» — тогда-то мне, конечно, уже все равно будет, а сейчас об этом думать — приятно.

В конце концов — хорошо, я сделаю свою программу Open Source «по завещанию». Но кто-то мне может внятно объяснить, с какой стати я должен это делать сейчас?! Сейчас, когда я ей занимаюсь, выпускаю новые версии и патчи, обеспечиваю техподдержку, и программа живет нормальной, полнокровной жизнью, безо всяких дополнительных извращений? Хорошо, я согласен признать Open Source как способ обеспечения «жизни после смерти» — но при жизни-то меня, пожалуйста, не тревожьте! «А не спеши ты нас хоронить», как поется в одной хорошей песне…

Подытоживая

Итак, Freeware vs. Open Source. С точки зрения автора, «vs.» здесь смотрится вполне уместно, так как если по «последствиям для конечного пользователя» обе эти концепции во многом сходны, то идеология у них столь же во многом различается. Более того: фактически, все различия между ними как раз и сводятся именно к идеологии, исповедуемой представителями обеих сторон. Начнем с менее заидеологизированного Freeware. Здесь все как раз элементарно просто: хочется человеку (группе людей) создавать и поддерживать программное обеспечение, выкладывая его в публичный доступ и не требуя за это денег — вот они его и создают и поддерживают. С точки зрения пользователей этого типа программ, разумеется, такие действия можно только приветствовать, тем более, если ПО хорошее, не «глючное» и общеупотребимое. Нехорошее, глючное, никому не нужное? Тоже не проблема — не пользуйся, и все. Просто, ясно, понятно.

Open Source… Перед тем, как высказать свое мнение по поводу ПО данного типа, я все же еще раз обращу внимание читателей на то, что все «Рыбные дни» являются априори субъективными и выражают исключительно мнение автора, не более того. Это, так сказать, «стандартный disclaimer» во избежание громких криков о предвзятости. Возвращаясь к нашим баранам… Open Source видится мне некой «искусственной идеологической надстройкой» над Freeware. По большому счету, мало кому (мало в каких ситуациях) нужной и довольно бестолковой — именно вследствие своей сквозной заидеологизированности

Да, наверное, для каких-нибудь узкоспециализированных или, наоборот, «сверх-общеупотребимых» вещей, вроде ядра свободных операционных систем, открытие исходных текстов имеет смысл. Уж слишком большое сообщество, как правило, работает над такими проектами, и, к слову, ввиду последней особенности они так или иначе все равно «самопроизвольно» становятся открытыми. Предположим, свершилось бы «страшное»: закрыли бы завтра код ядра Linux для обычных пользователей, оставив его открытым только для принимающих участие в разработке. Ну и что? Учитывая количество «принимающих участие», я бы, как Мюллер из «Семнадцати мгновений весны», резонно заметил, что «тайна, которую знают двое — это уже не тайна». А если не двое, а пара тысяч — то все равно этот проект очень быстро станет «стихийным Open Source». Один девелопер под страшным секретом дал посмотреть другу кусок кода, другой к разработке своего участка коллег по основной работе привлек, у третьего вместе с домашним компьютером полный набор исходников сперли… Поэтому «стихийный Open Source» я склонен относить к некой специфической разновидности Freeware. Просто для данной конкретной программы разработчикам показалось удобным держать ее код открытым. Разработчикам показалось удобным — НЕ НАМ. Это их «заморочки». А вот касательно Open Source «идейного»…

Идейный, как я уже сказал выше, кажется мне, вспоминая Маяковского, «глубокой философией на мелких местах». То есть попыткой притянуть за уши какие-то «глобальные», морального плана воззрения к такой простой и сугубо утилитарной вещи, как разработка и использование программного обеспечения. К чему все эти стенания о «возможности независимой экспертизы кода», о «жизни проекта после смены команды разработчиков» («есть ли жизнь после смерти?..») и прочие детские, идеалистические вещи? «Честный Freeware» действительно по-своему, по-простецки честен: «хочешь — используй; не хочешь — ну и не надо». Считаешь, что моя программа за тобой шпионить будет? Не используй! Не нравится, что в ней некоторых функций нет? Ну, напиши мне, может, введу. Не введу — не используй! Или сам плагин напиши, если они поддерживаются. Глючит? Либо свяжись с автором, либо опять-таки — не используй. Исходники показать? А зачем? Нет, я, может, и покажу, но вы мне сначала объясните: зачем? Просто любопытно? Простите, у меня нет времени обслуживать чужое любопытство.

Ну а кроме того, «идейный Open Source» действительно немного напоминает коммунизм (да, я знаю, что повторяю слова некоторых одиозных личностей, но их одиозность не свидетельствует однозначно об их ошибочности). Судите сами: мало того, что ты делаешь какую-то работу — создаешь программное обеспечение, раздавая его бесплатно всем желающим, — ты еще к тому же обязан этим самым желающим предоставить доступ ко всему нутру: ко всем своим алгоритмам, наработкам, творческим озарениям, уж простите за пафос. А они с этим сделают то, что посчитают нужным. Между прочим, захотят — вообще украдут. И включат куски твоего кода в свое закрытое коммерческое ПО. И будешь потом до посинения с кучей экспертов методом реинжиниринга бинарников доказывать в суде, что это был твой код. Так еще нужно: а) самого вора найти (сколько сейчас программ на белом свете вертится? после публикации исходных текстов все чохом проверять будем?); б) доказать, что факт воровства имеет место (это, учитывая задействование экспертов, просто-напросто стоит достаточно больших денег, и совершенно без гарантии положительного результата). Таким образом, получается, что кроме всех своих достаточно сомнительных достоинств идеология Open Source фактически провоцирует нечистых на руку производителей закрытого ПО на воровство. А вот защитить от воровства программы с открытыми исходными текстами становится возможным только в той ситуации, когда всё без исключения ПО является открытым. То есть когда коммунизм настанет, все у нас будет хорошо, но пока он не настал — не моги обижаться, что из-за отсутствия замка на дверях кто-то сервант утащил. Ты же идейный борец, товарищ! Тебя такие вещи смущать не должны! И семью твою возмущать не должны, и детей. Программирование — оно для души и для победы открытого ПО во всем мире. А если деньги нужны — ты сходи ночью на сортировочную, там за разгрузку вагонов хорошо платят.

Словом, не знаю, как вам, уважаемые читатели, а лично мне концепция Open Source кажется применительно к массовому программному обеспечению совершенно излишней. Не нужна она там. Да и, если разобраться получше, как концепция, как философия — нигде не нужна. Что, разумеется, ничуть не мешает любому отдельно взятому разработчику Freeware открывать исходные тексты своих программ. Открыты они будут или закрыты — с точки зрения рядового пользователя, данный факт в подавляющем количестве случаев просто совершенно ничего не значит. Можно на кнопке сохранения по умолчанию дулю намалевать, можно в «About…» фотографию любимой кошки поместить, а можно вместе со скомпилированными бинарниками исходные тексты поставлять. Разумеется можно — это же его, автора, программа. Мне он просто великодушно разрешил «на шару» попользоваться ее текущей версией, за что ему большое человеческое спасибо. Разрешит попользоваться следующей — еще раз спасибо. Не разрешит — его святое право. Свобода потому что. Не только моя свобода, но и его.

Вместо эпилога

Быть может, у кого-то возникнет вопрос: зачем это все было написано? Признаюсь честно: надоело. Надоело слушать стройный хор (он ведь действительно стройный, местами даже некое групповое камлание напоминает!) поклонников г-на Ричарда Столлмена, у которых (и у которого) все так просто и понятно, что диву даешься. С одной стороны — честные и открытые, добрые душой и радеющие за Мировую Справедливость сторонники Open Source Software, с другой — грязные эксплуататоры, стремящиеся исключительно к личной наживе — производители ПО коммерческого. Враки. Некорректное противопоставление, ведущее к некорректным же выводам. Есть альтернатива коммерческому ПО, не завязанная на не-пришей-кобыле-хвост идеологические мотивы, и зовется эта альтернатива — Freeware. А открыты у него исходники или нет — это уж, простите, личное дело разработчика. Он уж как-нибудь сам разберется, без «идеологов броуновского движения», и нечего ему напевать FSF-мантры на сон грядущий. Так что да здравствует Freeware — единственное по-настоящему свободное программное обеспечение!




Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.