О так называемом "опенсорсе"

  • Posted on
  • by

Начну издалека, но зато с самого важного. Есть такая универсальная человеческая ценность под названием "свобода". Мы, люди доброй воли, защищаем и насаждаем свободу, потому что каждый человек её заслужил и достоин по праву рождения. Такой постулат, аксиома.

Общественной ценностью свобода стала относительно недавно, когда люди внезапно поняли, что а) человек умнеет, когда он свободен, и б) Самых Умных не бывает. Сообщество свободных, вольных в своём выборе людей всегда придумывает и работает лучше. Ну тоже такой постулат. Общественная свобода не является арифметической суммой личных, так как бывают пересечения, причём сложных конфигураций. Поэтому иногда, скрепя сердце и наступая на горло собственной песне, общество вынуждено ограничивать свободу отдельных членов, если это действие в итоге увеличивает общую свободу. Почему это всегда тяжело и мучительно? Потому что нет простого способа сравнить ценности свобод разных членов общества. Лёшин стул (“свободу сидеть у стола”) нельзя просто отдать Пете, хотя Петя вчетверо умнее. Петя может оказаться злодеем или вообще мудаком.

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

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

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

Но автор программы же работал, надо ему компенсировать?

Затраты автора не имеют никакого значения. На уровне общества не существует понятия “компенсировать”. Можно заплатить автору, чтобы он отдал копию своей программы, можно заплатить, чтобы продолжал делать хорошо, а можно заплатить, чтобы другие авторы впредь знали, что если сделать хорошо, то заплатят. Во всех этих случаях происходит увеличение общественной ценности. А компенсация за сделанную работу aka “donate” не работает, потому что в общем случае ценность не увеличивает, а перераспределяет. Не путать с милостыней.

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

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

Добрый дядька Черномор Ричард Столлман сформулировал 4 свободы, которых в той или иной степени своих пользователей лишают закрытые (или, “несвободные”, как он их называет) программы. Можно об этом почитать вот тут: https://www.gnu.org/philosophy/free-sw.en.html, а я чуть-чуть раскрою релевантные, на мой взгляд, пункты.

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

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

Но что делать, если существующая закрытая программа мало того, что дико полезна, так ещё и уникальна, нет никаких открытых аналогов? Автор ещё и денег за неё хочет! Может, спиратить?

Безусловно, любая полезная программа ценна. Иногда эта ценность перевешивает вред от закрытости. Порог нужно определять самостоятельно. Несанкционировано копировать программы плохо. За буквой запрета тут часто скрывается простая суть: автору программы действительно нужны деньги, чтобы продолжать её делать. В случае уникальной программы не заплатить эти деньги означает увеличить вероятность, что общество лишится той пользы, которую создавала эта программа.

Но ведь закрытая программа может быть быстрее и лучше чем открытая! -- скажет упорный читатель, добравшийся сквозь красноречие^W красноглазие почти до самого конца.

Это чистая правда. Некоторые пользователи могут оценить “скорость”, “дизайн” и “фичи” программ выше, чем свою свободу и свободу своих друзей делать с программами что угодно. Это нормально, экстремизм здесь не нужен и даже вреден. Довольно легко представить себе программу, которая спасает жизни, но является закрытой. Её самостоятельная ценность скорее всего перевешивает любую пользу от открытости. Однако в большом количестве случаев это не так. Неспособность людей разумно оценивать риски, излишний оптимизм, желание доверять на основе первого впечатления широко известны. Также широко распространены заявления как самих авторов закрытых программ, так и пользователей о том, что свобода не нужна! Действительно, свобода сама по себе не является "пользой". В ней заключена возможность, шанс "пользы". Свобода представляет из себя потенциальное свойство, если угодно, обещание "пользы". Возможность делать то, что хочется, необязательно реализуется, а если и да, то почти всегда непредсказуемым образом. Открытость программы не гарантирует никаких пользовательских свойств программы, которые можно непосредственно ощутить сейчас, но как правило приводит к долгой жизни этой программы, снижению рисков для пользователей, высокой гибкости, открытости к внешним интеграциям -- всего этого очень хочется для каждой программы в мире.