Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов

в 10:20, , рубрики: mysql, open source, postgresql, проприетарщина
Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 1

Привет, давно не виделись! Со времени моих предыдущих публикаций в
серии «Памятка евангелиста PostgreSQL» (1, 2, 3) прошло довольно много времени, и многое изменилось. Вышли новые релизы MySQL и PostgreSQL с интересными фичами (хотя содержимое моих статей остаётся по большей части актуальным, я старался вносить мелкие обновления там, где это требовалось). В моду вошёл ко-маркетинг (с ко-франшизингом и местами даже ко-лизингом), когда доклады о PostgreSQL звучат на конференциях, посвящённых MySQL, и наоборот. Появились даже совместные доклады, где предпринимаются попытки объективного сравнения MySQL и PostgreSQL в тех или иных плоскостях. Отгремела история с Uber, с протяжённой по времени дискуссией, в которую я тоже внёс свой скромный вклад.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 2В целом, диалог между двумя проектами становится более содержательным. Я всё реже слышу страшилки и мифы, о которых я рассказывал в предыдущих статьях. Однако есть один устойчивый миф, который по-прежнему раскручивается сообществом PostgreSQL. Если быть точным, раскручивается он моей любимой компанией Postgres Professional – от представителей других компаний я пока такого не слышал. Это миф о «проприетарности» MySQL. В беседах руководство Postgres Professional демонстрирует какое-то дикое незнание матчасти и своеобразное толкование терминов. А значит пришло время дорогой редакции снова взобраться на броневичок!

С чего всё началось?

Началось всё с доклада Олега zen Бартунова, генерального директора Postgres Professional, на конференции DevConf 2017. Доклад назывался PostgreSQL для хипстеров. Естественно, как нельзя пройти мимо тёщиного дома без шуток, так и нельзя поговорить о PostgreSQL, не упомянув при этом MySQL. Так было и тут, я услышал несколько удивительных историй о MySQL. О некоторых из них, надеюсь, будет отдельный рассказ чуть позже. Здесь же мы будем обсуждать одно конкретное утверждение Олега, где он лихо загоняет Oracle RDBMS, MySQL и Microsoft SQL Server под одну гребёнку, называя их всех «проприетарщиной» (видео, с 16:48 до 17:11).

Я связался с Олегом, чтобы выяснить, что это было: незатейливый троллинг, случайная оговорка или сознательный евангелизм. Оказалось, что евангелизм – Олег действительно так считает и даже готов аргументировать свою точку зрения. Но его аргументация мне показалась натянутой, а мои аргументы Олег тоже отверг. Я подумал, что раз Олег высказывает свою точку зрения публично, то почему бы и мне не высказать свою, и что это было бы хорошим продолженим серии статей про PostgreSQL евангелизм.

Собственно, это не первая попытка Postgres Professional объявить MySQL проприетарным ПО. Вкратце я затрагивал эту тему в предыдущих статьях, но я тогда и не подозревал всю глубину заблуждений, которая вскрылась только в комментариях к статьям, а также в недавней личной переписке и небольшой дискуссии на эту тему в Facebook. Периодически к дискуссии подключается директор Postgres Professional по разработке Александр smagen Коротков. Для обоснования проприетарности в ход идут любые аргументы: отличия в моделях разработки, лицензиях и бизнес-моделях между MySQL и PostgreSQL сообществами. Отличия, естественно, есть – вряд ли существуют два абсолютно одинаковых по всем критериям проекта. Однако желание объявить «проприетарщиной» всё, что не вписывается в собственные представления об экосистеме открытого ПО, наблюдается только у Postgres Professional.

Чисто по-человечески я могу понять это желание экспроприировать звание самой популярной открытой СУБД. Но понимать мотивы – не значит соглашаться, поэтому будем разбирать аргументы подробно.

Авторское право и лицензия

Начнём с базовых терминов. Я не буду углубляться в историю, как это делает в своих лекциях Ричард Столлман. Я также не буду вдаваться в юридические дебри, описывая авторское право для «произведений науки, литературы и искусства», как это делает Wikipedia. Я буду описывать вещи простым русским языком с фокусом на программное обеспечение.

Авторское право (copyright) для программного обеспечения – это набор законов, принятых в большинстве стран, которые дают автору программы (правообладателю в более общем смысле) право самостоятельно определять условия использования и распространения программы. Такие условия называются лицензией. Авторские права возникают в момент написания кода программы. Автор может передать авторские права другому лицу или организации, либо вовсе от них отказаться. В случае отказа от авторских прав или истечения срока их действия программа переходит в «общественное достояние» (public domain).

Свободное и проприетарное ПО

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 3Термины «свободное», «открытое» и «проприетарное» ПО используются довольно широко для условного разделения всего спектра ПО в зависимости от уровня «свободы» использования и распространения, то есть условий лицензии.

Термин «свободное ПО» (англ. free software) используется созданной Столлманом в 1985 году организацией Free Software Foundation. В последнее время также используется термин «libre software», чтобы избежать двусмысленности слова «free» в английском языке, которое может означать как «свободное», так и «бесплатное», что применительно к программам совсем не одно и тоже.

Столлман и FSF определяют следующие четыре критерия для свободного ПО:

  • свобода номер 0: возможность запускать программу с любой целью
  • свобода номер 1: возможность изучать исходный код программы и модифицировать под свои нужды
  • свобода номер 2: возможность распространять немодифицированные копии программы
  • свобода номер 3: возможность распространять модифицированные копии программы

Очень близкий термин «открытое ПО» (англ. open source software) был предложен основанной в 1998 году организацией Open Source Initiative. OSI определяет более длинный список формальных критериев, но если отбросить мишуру, все они сводятся к тому же определению, которое использует FSF: открытое ПО – это «программное обеспечение, которое можно свободно получить, использовать, изменять и распространять в исходном или модифицированном виде». Новый термин был создан в основном для того, чтобы избежать двусмысленности слова free в английском языке. А новая организация была создана из-за несогласия по «филосовским» вопросам с FSF и желания сфокусироваться на практических вопросах без лишнего евангелизма.

Термин «проприетарное ПО» используется для обозначения программ, которые не соответствуют критериям свободного или открытого ПО. Заметим также, что исходя из популярных определений, «свободность», «открытость» и «проприетарность» ПО зависит исключительно от лицензии.

Очевидно, что MySQL, который Oracle распространяет под созданной FSF лицензией GPLv2, этим критериям соответствует. Есть много проектов и даже компаний, которые без перечисленных свобод просто никогда бы не появились, например MariaDB, Percona Server/XtraBackup, Galera, Amazon RDS/Aurora. Многие крупные использующие MySQL компании создают и используют свои собственные «форки» MySQL, что было бы невозможно, если бы MySQL был проприетарным: Facebook, Twitter, LinkedIn, Uber, Alibaba.

На этом статью можно было бы заканчивать, если бы не всё многообразие аргументов, набрасываемых Postgres Professional на вентилятор.

Аргументы Postgres Professional: «все права в одних руках»

Итак, называя MySQL «проприетарщиной» Олег Бартунов очевидно пользуется какими-то своими определениями открытого/свободного и проприетарного ПО. Имеет право, конечно, но выяснить эти определения мне не удалось. Вместо сформулированных критериев Олег приводит какие-то цитаты из Википедии и Oracle Contributor Agreement, которые он явно не очень хорошо понимает.

Во-первых, говорит Олег, открытость исходного кода ещё ничего не значит и в качестве доказательства приводит цитату из википедийной статьи о проприетарном ПО: «Проприета́рное програ́ммное обеспе́чение, несвобо́дное программное обеспечение (англ. proprietary software; от proprietary — частное[1], патентованное[1], в составе собственности[1] и software — программное обеспечение) — программное обеспечение, являющееся частной собственностью авторов или правообладателей и не удовлетворяющее критериям свободного ПО (наличия открытого программного кода недостаточно)».

Действительно, наличие открытого кода недостаточно, чтобы удовлетворять критериям от FSF или OSI. Код проприетарного продукта можно получить от производителя на очень ограниченных условиях (а можно вообще украсть), и примеры такого «открытия» можно найти. Обычно такой код можно почитать, но что-либо сверх того делать с ним нельзя. Возможность чтения исходного кода – это только малая часть свобод, определяемых FSF/OSI.

Но причём здесь MySQL, лицензия которого – это GPLv2 c полным спектром свобод, которые она определяет?

Во-вторых, Олег утверждает, что проприетарность MySQL обеспечивается тем, что «все права сосредоточены в одних руках» и подтверждает это существованием OCA (Oracle Contributor Agreement) и следующей цитатой оттуда: «This Oracle Contributor Agreement (“OCA”) applies to any contribution that you make to any product or project managed by us (the “project”), and sets out the intellectual property rights you grant to us in the contributed materials.»

Как я понял, Олег интерпретирует эту цитату примерно как all your base are belong to us, мол «караул, хулиганы авторских прав лишают!».

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 4Начнём с того медицинского факта, что Oracle мог бы вообще не принимать никаких патчей извне, и MySQL не перестал бы от этого быть свободным и открытым ПО в определениях FSF и OSI. Но у Олега своё определение, и мне стало интересно пойти дальше и попробовать его хотя бы понять.

Если бы Олег удосужился почитать соглашение целиком (оно короткое) или хотя бы список часто задаваемых вопросов, он бы узнал, что OCA не требует эксклюзивной передачи авторских прав и права не «сосредоточены в одних руках». Соглашение устанавливает совместные авторские права между Oracle и автором кода, после которой каждый из участников соглашения может делать с кодом всё, что захочет. Цитата из OCA FAQ: «You retain all rights, title, and interest in your contributions and may use them for any purpose you wish. Other than revoking the rights granted to Oracle, you still have the freedom to do whatever you want with your code.»

Кроме того, есть как минимум ещё одна известная в мире свободного ПО организация, которая занимает даже более радикальную позицию, чем Oracle. Называется она Free Software Foundation. Если вы ходите сделать вклад в любой проект, авторские права на который принадлежат FSF, вы будете должны подписать соглашение о полной (а не совместной как у Oracle) передачи авторских прав FSF. Список проектов включает glibc, GCC, Bash, Autoconf, Automake, coreutils, GnuPG и многие другие проекты, без которых сложно представить современную экосистему свободного ПО.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 5Получается, что все эти проекты – такая же проприетарщина с точки зрения Олега, как и MySQL («все права сосредоточены в одних руках» же)? Олег не даёт ответ, как эту неувязку разрешить. Но тут на помощь ему приходит Александр Коротков, который как бы говорит нам, что «FSF и Oracle – это же совсем разные организации!». Да кто бы спорил, Oracle есть за что не любить (FSF, кстати, тоже). Но тут мы опять вступаем на очень скользкий путь, когда каждый может называть «проприетарщиной» всё что угодно в зависимости от собственных религиозных убеждений. А хочется-то говорить на общем языке. Кто и как будет определять кошерность компании-разработчика, чтобы понять, следует ли считать её open soure проекты «проприетарщиной» или «свободными»?

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 6Александр частично согласен с такой аргументацией, но перевёл разговор в возможность смены лицензии и двойного лицензирования. Об этом мы поговорим чуть позже.

Если смотреть на весь спектр свободного/открытого ПО, какие-то проекты (включая PostgreSQL) вообще не требуют подписания соглашений, какие-то требуют подписание лицензионного соглашения (примеры: openssl, Qt, проекты Apache Software Foundation), которые требуют от разработчика предоставить проекту как правило неотзываемую лицензию на использование с достаточно широкими правами, а какие-то требуют совместной или полной передачи авторских прав (примеры: FSF и Oracle).

Откуда такой разброд и шатание? Здесь начинается юридический хардкор. Всё зависит от специфики проекта, юридической озабоченности правообладателя, а также мнения конкретных юристов, которые его, правообладателя, консультировали. Свободное ПО во многом ещё «серая зона» для традиционного законодательства об авторском праве. Нет единого «правильного» способа, нет даже согласия между самими юристами. Например, на конференции FOSDEM есть отдельный трек посвящённый юридическим проблемам разработки и использования свободного ПО, и этих проблем ещё очень много.

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

Повторю, что все эти вопросы касаются условий включения в проект сторонних патчей. Что абсолютно ортогонально условиям, на которых код проекта получают пользователи и которые определяют «свободность» или «проприетарность» проекта, по крайней мере с точки зрения FSF и OSI. Олег Бартунов и Александр Коротков в праве давать свои определения, какие им вздумаются, но по собственному признанию, в юридических вопросах они не очень разбираются. Мы все можем ошибаться, но хотелось бы видеть хотя бы желание разобраться в базовых вещах.

Аргументы Postgres Professional: двойное лицензирование

Этот аргумент неизбежо возникает при обсуждении «проприетарности» MySQL. Напомню, что cуществуют два отдельных программных продукта: MySQL Community Edition (который обычно и называют MySQL), распространяемый под лицензией GPLv2, и MySQL Enterprise в разных вариантах, которые распространяются под проприетарной лицензией.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 7Здесь мы будем говорить о бизнес-моделях открытого ПО. Одной из основных задач, которые ставят перед собой как FSF, так OSI, всегда являлось привлечение коммерческих компаний к разработке открытого ПО. Для этого должны существовать устойчивые бизнес-модели, которые бы привлекали коммерческие компании вкладываться в разработку того, что доступно всем бесплатно, да ещё и под свободной лицензией. Если вы не Facebook или Google, вариантов здесь не так много. Один из них называется двойное лицензирование.

Модель двойного лицензирования можно применять по-разному. Можно один и тот же продукт распространять под разными лицензиями. Например, под GPLv2 для тех, кому эта лицензия подходит, и под проприетарной лицензии для тех, кому ограничения GPL не позволяют использовать или интегрировать продукт в свои приложения. То есть, бизнес-модель по сути состоит в продаже исключений из свободной лицензии.

Второй вариант, предусматривающий продажу поприетарных лицензий на продукт с расширенной функциональностью, ещё называют open core.

Первый вариант применяется, например, самим Oracle для некоторых версий MySQL Enterprise, компанией Digium для VoIP системы Asterisk, системой полнотекстового поиска Sphinx, а также известной библиотекой Qt. Кстати, именно Столлман когда-то впервые предложил эту модель компании Trolltech, бывшему разработчику Qt.

Второй вариант использует Oracle как для того же MySQL, так и для VirtualBox. Эту модель также использует компания Nginx в коммерческом продукте NGINX Plus.

Двойное лицензирование в варианте open core использует и Postgres Professional для проприетарного продукта Postgres Pro Enterprise. Кстати, я ни разу не слышал, чтобы сотрудники Postgres Professional называли Nginx, Sphinx, Qt, VirtualBox, да и сам PostgreSQL «проприетарщиной» из-за наличия проприетарных версий под двойной лицензий. Но почему-то про двойное лицензирование MySQL и «камень преткновения» они порассуждать очень любят. Какая странная избирательность.

На мой взгляд очевидно, что наличие проприетарных версий вовсе не делает соответствующие открытые проекты «проприетарщиной», будь то MySQL, Nginx, PostgreSQL, Qt или Sphinx. Все туманные рассуждения на этот счёт со стороны Postgres Professional – это попытка натянуть слона на глобус.

Аргументы Postgres Professional: «Oracle злой!»

Этот аргумент в разных формах всплывает в дискуссиях в людьми из Postgres Professional и не только, когда заходит речь о MySQL. «Вопрос доверия к компании», «эксклюзивные права в руках коммерческой компании», «Oracle может закрыть MySQL». Это всё с одной стороны правда, а с другой очередные попытки навести тень на плетень.

Это правда, потому что Oracle действительно является коммерческой компанией с достаточно «агрессивной» репутацией. И никто никогда не сможет вам гарантировать, что Oracle не закроет MySQL или не остановит разработку.

Но это и попытки навести тень на плетень, потому что на дворе 2017-й год, не 1997-й, и мы живём в мире, где значительная (если не большая часть) открытого ПО, от драйверов устройств до дистрибутивов и СУБД разрабатывается коммерческими компаниями. Это не хорошо и не плохо, это просто объективная реальность, данная нам в ощущениях. Вот спиcки open source проектов других крупных компаний: Facebook, Google, IBM, Intel, Redhat, Canonical, Яндекс, Mail.Ru.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 8Мне сложно сказать, чем все эти компании «добрее» Oracle, и кто может гарантировать, что они не забросят или не закроют свои проекты. Сама концепция открытого ПО была разработана как раз для того, чтобы минимизировать ущерб от подобных ситуаций, когда поднять упавшее знамя может сообщество, если оно есть. Сообщество включает и сотрудников компании, которые участвуют в разработке проекта, но после закрытия или остановки проекта могут продолжить его за стенами «злой» компании, а таких примеров в экосистеме открытого ПО очень много.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 9Наконец, последний высказанный Олегом аргумент заключается в том, что раз нет доверия к Oracle, то и права им отдавать нельзя. Как я уже писал, Oracle получается совместные, а не эксклюзивные права – они не «сосредоточены в одних руках», а автор кода остаётся правообладателем и может делать с ним всё, что угодно. Но дело даже не в этом.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 10Я толерантно отношусь к людям любых религиозных конфессий. Действительно, есть люди, которым религия запрещает передавать что-либо в Oracle, Microsoft, IBM, Facebook, Google и т.д. Рационально объяснить это сложно, но я не вижу в этом проблемы. Проблема в том, что называя MySQL «проприетарщиной» по сути на основании собственных религиозных убеждений, Олег навязывает свою религию в докладах и разговорах с самыми разными людьми, от студентов до чиновников. Я бы ожидал большей ответственности от человека с такой должностью и с таким широким кругом общения.

Что в итоге?

«Да это же всё очевидно!» – воскликнет не по годам развитый читатель и будет абсолютно прав. Мне и самому было несколько скучно это всё писать, есть гораздо более интересные и содержательные темы для обсуждения вокруг MySQL и PostgreSQL. Но дело в том, уважаемый читатель, что мы живём в удивительном мире постправды, поэтому полезно иногда говорить и об очевидных вещах, исключительно в психотерапевтических целях.

Я не питаю иллюзий, в мире есть вечные вещи, и Postgres Professional будет распространять FUD про MySQL и дальше по идеологическим и коммерческим причинам. Эта статья скорее для тех, кому интересно выслушать и другую сторону, чтобы разобраться самому.

Памятка евангелиста PostgreSQL: экспроприируем экспроприаторов - 11Но есть и хорошие новости! Здравый смысл пока ещё преобладает, и в своём мнении о том, что MySQL – это «проприетарщина», Postgres Professional всё же в меньшинстве. Не нужно даже разбираться во всех нюансах, чтобы понимать, что свободы по изучению, модификации и распространению кода Oracle или Microsoft SQL Server (которых просто нет) в корне отличаются от тех же свобод, которые получают пользователи MySQL, а значит называть их всех одним термином «проприетарщина» уже как минимум нелогично – это чистый FUD. MySQL можно получить, использовать, изменять и распространять в исходном или модифицированном виде в полном соответствии с лицензией GPL, на тех же условиях, что и тысячи других проектов под этой лицензией. FSF содержит MySQL в своём каталоге открытого ПО, Wikipedia также считает MySQL «свободной СУБД», количество форков на Github тоже немного намекает, да и сотрудникам таких компаний как MariaDB, Percona, Amazon, Facebook, Twitter, LinkedIn, Uber и Alibaba явно есть о чём рассказать Олегу.

Следуя моде, предлагаю организовать баттл в виде опроса к статье!

Автор: kaamos

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js