От переводчика: мне кажется, заголовок слегка неточный и на самом деле средний палец показали ребятам из MongoDB, которая теперь не очень то и Open Source.



Сегодня, Amazon AWS запустил продукт DocumentDB — новую базу данных, совместимую с API MongoDB. Компания описывает DocumentDB так — "быстрая, масштабируемая и отказоустойчивая документная база данных, разработанная так, чтобы быть совместимой с вашими существующими приложениями и инструментами на MongoDB". Фактически, это полная замена MongoDB, развёрнутая в AWS, которая не использует код MongoDB.


В AWS утверждают, что, хотя MongoDB отлично справляется со своими задачами, их клиентам всё же трудно создавать быстрые и высокодоступные приложения на платформе с открытым исходным кодом, которые смогут масштабироваться до нескольких терабайт и сотен тысяч операций чтения и записи в секунду. Поэтому компания создала свою собственную базу данных документов, но сделала ее совместимой с API MongoDB 3.6, распространяющимся под лицензией Apache 2.0.


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


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


«Подражание — это самая искренняя форма лести, поэтому неудивительно, что Amazon попытается извлечь выгоду из популярности и импульса документной модели MongoDB», — сказал нам генеральный директор и президент MongoDB Дев Иттихерия. «Тем не менее, разработчики достаточно технически подкованы, чтобы различать реальную вещь и плохую имитацию. MongoDB будет продолжать превосходить любые подмены на рынке.»


Это довольно обидный комментарий. В ноябре прошлого года Иттихерия сказал моему коллеге Рону Миллеру, что он считает, что AWS любит MongoDB, потому что он потребляет много энергии. В этом интервью он также отметил, что «последние пять лет покупатели пытались выбраться от другого крупного поставщика. Последнее, что они хотят сделать, это повторить это вновь».


Соучредитель MongoDB и технический директор Элиот Горовиц ответил на это. «Чтобы дать разработчикам то, что они хотят, AWS был вынужден предложить имитацию MongoDB, основанную на коде MongoDB, два года назад», — сказал он. «Вся наша компания сосредоточена на одном — предоставить разработчикам наилучший способ работы с данными, позволяя работать в любом месте. Наша приверженность этой единственной миссии будет и дальше отличать настоящую MongoDB от любых имитационных продуктов».


Представитель компании MongoDB также подчеркнул, что API 3.6, с которым совместима DocumentDB, уже два года, и ему не хватает большинства новейших функций, включая транзакции ACID, глобальные кластеры и мобильную синхронизацию.


Честно говоря, в последнее время AWS стал более активным в области открытого исходного кода и, в некотором смысле, дает разработчикам то, что они хотят (и не все разработчики довольны собственным hosted-сервером MongoDB). Обход лицензирования MongoDB путем сопоставления API, учитывая, что AWS точно знает, почему MongoDB сделал это (сменил лицензию), всегда был спорным шагом, и это не ведёт компанию к сообществу Open Source.


Немножко последствий


Акции разработчика систем управления базами данных (СУБД) с открытым исходным кодом MongoDB упали на 10% после того, как Amazon представила его прямого конкурента — облачный сервис DocumentDB.


На открытии торгов на нью-йоркской бирже Nasdaq в 17:30 мск 10 января стоимость акций MongoDB снизилась на 10,5%, до $77,47. Позднее им удалось немного отыграть падение. На предварительной сессии падение достигало 14%. За 2018 год акции MongoDB выросли на 200%, напоминает CNBC.

Комментарии (35)


  1. mr_tron
    10.01.2019 21:16

    Переходящий флажок корпорации зла.


    1. vics001
      11.01.2019 02:17
      +3

      А в чем тут зло? Мне кажется компании знали, когда создавали код под лицензией Apache, а не GPL по заветам Стольмана.
      Apache даже не заставляет ставить ссылку в отличие от CC-BY-SA.


      1. q_styler
        11.01.2019 09:11

        Зло всегда действует «в рамках закона».


      1. petropavel
        11.01.2019 19:20

        При чем тут Apache? MongoDB была под AGPL, это Affero GPL. А недавно они лицензию еще усилили. Смотрите за руками:

        • GPL говорит, что если вы изменили исходники и распространяете результат, то он должен быть GPL, надо открыть все изменения
        • AGPL говорит, что не только если распространяете, но даже если поставили себе на сайт и он раздает данные по всему миру — то тоже надо открыть все изменения
        • новая лицензия MongoDB говорит, что даже если не раздает данные, но вы ставите у себя в облаке — то тоже

        MongoDB обиделась на Амазон, что он зарабатывает на MongoDB и не делится (многие обижаются, на самом деле). И закрутили гайки в лицензии, специально против Амазона, чтоб делился. Амазон вместо этого перешел на свою DocumentDB и послал Mongo-вцев нафиг.


      1. Merkat0r
        12.01.2019 03:49

        О Шиллен!.. ну хорош уже быть эльфами — в суровом мире тырпрайза всем плевать на эти все апачи гпли и прочие *опен*.

        Оно может приносить бабки? Значит будет без зазрения совести спи#$%о, код закрыт и запротекчен + доработано до нужд компании + нашлепан новый свой логотип. И в продакшн.

        Так и быть, на очередном корпоративе в честь новой яхты каждому прибыли топ-манагеры таки снюхают дорожку поднимут с улыбкой один бокальчик за opensource сообщество :)


  1. DSolodukhin
    10.01.2019 21:21

    их клиентам трудно создавать быстрые и высокодоступные приложения на платформе с открытым исходным кодом


    Я что-то не понял, а как закрытость кода облегчает создание таких приложений? Либо предложение как-то не так построено, либо это наглое передергивание.


    1. jreznot Автор
      10.01.2019 21:24

      Думаю упор там сделан на вторую часть предложения про масштабирование, а про Open Source это и есть передёргивание.


      1. DSolodukhin
        10.01.2019 21:34

        По ссылке из статьи

        However, it is hard to build performant, highly available applications <...> because of the complexity that comes with setting up and managing MongoDB clusters at scale.

        Ни слова про open-source, тут конкретно про проблемы MongoDB.


        1. jreznot Автор
          10.01.2019 21:35

          Значит кто-то таки покусал журналиста TechCrunch


    1. helgihabr
      10.01.2019 21:38
      +3

      Похоже, что суть недовольства заключается в «собственном hosted-сервере MongoDB».
      Теперь же AWS предоставляет DocumentDB как свой облачный сервис и клиентам не нужно тратить ресурсы (спец-ов, время, деньги) на администрирование своего сервера MongoDB.


    1. 3al
      11.01.2019 20:12

      По косвенным признакам, оно сделано поверх Amazon Aurora. Не будет же amazon открывать всё вместе?


  1. ReklatsMasters
    10.01.2019 21:30

    Azure Cosmos DB выглядит интереснее, там больше апи поддерживается как минимум.


    1. mst_72
      10.01.2019 22:44
      +1

      Судя по описанию, AWS DocumentDB будет куда как лояльнее к пользователями чем Mongo Endpoint от Cosmos DB. И я ОЧЕНЬ надеюсь, что RU-проклятья пользователям AWS удастся избежать. Иначе нафиг все это надо.


      1. sborisov
        10.01.2019 23:25

        Что за проклятье такое?


        1. mst_72
          10.01.2019 23:44
          +1

          Часто и внезапно на невинных запросах выскакивает Request Rate is Large. Обычное решение — попытаться несколько раз повторить запрос через задержку от 1 до 10 MS или, что рекомендует MS, увеличить выделяемые на коллекцию RU. Для непартиционных коллекций особой беды нет (разве что денег больше возьмут), для unlimited при интенсивных вставках легко нарваться в размножение партиций с последующей нехваткой RU и, соответсвенно, сообщениями Request Rate is Large.
          Я с этим помнится уж наигрался, так наигрался. Даже статейку задумывал написать про то, как "правильно готовить космос"… Но что-то не срослось.


  1. fOCUS_VRN
    10.01.2019 21:39
    -5

    А зачем вообще MongoDB если есть Postgres с поддержкой json и других вкусных плюшек?


    1. helgihabr
      10.01.2019 21:44
      +2

      По-моему, это вообще не туда. Здесь упор идет как раз на API, которого у PostgreSQL для этих целей нет.
      Соответственно, к масштабированию здесь еще больше вопросов.


  1. mst_72
    10.01.2019 22:35

    Мне чисто интересно, куда MS смотрел, у которого Cosmos DB был сделан как дальнейшее развитие ихнего же DocumentDB. И более того, ссылки по DocumentDB будут вести не на AWS, а на Azure! Ждем суда?


    1. Bartlab
      11.01.2019 10:32

      кто первый встал, того и тапки


  1. sborisov
    10.01.2019 22:52

    Кто интересно выйграет, особенно если другие провайдеры смогут использовать DocumentDB.


    1. jreznot Автор
      10.01.2019 22:56

      Так она же проприетарная. Только API как у Mongo.


      1. sborisov
        10.01.2019 23:26

        Тогда даже не знаю кто выиграет, все равно различия со временем появятся и будет vendor lock


    1. alan008
      11.01.2019 08:48

      Что всем так полюбилось это "И краткое"? Не по-русски же это.
      Надо писать выИграет, биткоИн, наИлучший, наИбольший, заИметь.


      1. Jouretz
        11.01.2019 10:18
        -3

        Детройт, ковбой, дедлайн, бойфренд. Но, внезапно, биткоИн? Где логика?


        1. Old_Chroft
          11.01.2019 10:48
          +2

          Ковбой и бойфренд — это, внезапно, составные слова с общим «корнем» — boy :-)
          Детройт — устоявшийся перевод, биткои(й)н — не совсем устоявшийся (хотя меня самого жутко раздражает «андройд»).
          alan008 же указал немного на другое: «выйграет» от какого слова произошло? Йгра?


          1. Jouretz
            11.01.2019 11:03

            Так меня только биткойн и смутил, он как-бы единственный англицизм из перечисленных примеров там, а подгоняется под те же правила.
            По правилам транскрипции, вроде, oi = ой. Так что откуда 'биткоин' мне не особо понятно.


          1. Am0ralist
            11.01.2019 11:04

            Ещё лучше: войн (но при этом война, да)


        1. alan008
          11.01.2019 12:54

          Сейчас призадумался, отчасти вы правы, в похожих английских словах boil, soil действительно слышится скорее И краткое, чем И, но в словах coin, loin всё равно хочется произнести длинное И. Это связано либо с особенностями произношения — звукосочетание "ОИН" проще произнести, чем "ОЙН" (именно когда буква Н на конце), при этом в сочетаниях с другой буквой (например Л — ОЙЛ) и-краткое произносится легче. Либо может быть другая причина, такая, что в русском языке совсем нет слов, заканчивающихся на -ОЙН (я не смог придумать), но при этом есть слова, заканчивающиеся на -ОИН (например, вОИН) и куча слов, заканчивающихся просто на ИН (одИН, блондИН, хозяИН и куча других). Так что с т.з. английского языка наверно ближе "койн", но когда мы транскибируем на русский, это всё-таки "коин".


          1. poxvuibr
            11.01.2019 14:20

            но в словах coin, loin всё равно хочется произнести длинное И

            Мне не хочется.


            Это связано либо с особенностями произношения

            Если у кого-то такие особенности есть, может быть связано, да.


            Либо может быть другая причина, такая, что в русском языке совсем нет слов, заканчивающихся на -ОЙН

            Ну и сразу приходит на ум слово "войн" которое множественное число родительный падеж от слова война. И нормально произносят все и никому даже в голову не приходит, что это неудобно.


            но при этом есть слова, заканчивающиеся на -ОИН (например, вОИН)

            Есть, их, правда, относительно немного. Хотя, если брать все словоформы, может и прилично наберётся.


            ак что с т.з. английского языка наверно ближе "койн", но когда мы транскибируем на русский, это всё-таки "коин".

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


            1. fedorez
              11.01.2019 16:33

              хотя в английском -ойн

              Тут не в английском дело. Слово «коин» в значении «монета, монетоподобный жетон» довольно давно было притащено в русский язык, в нумизматику и всё такое из латыни, возможно через немецкий, где оно именно что «коИн». А биткоин просто унаследовал. imho.


              1. poxvuibr
                11.01.2019 17:53

                Слово «коин» в значении «монета, монетоподобный жетон» довольно давно было притащено в русский язык, в нумизматику

                Да ну? Можно ссылку на словарь, где это слово упомянуто?


                латыни, возможно через немецкий, где оно именно что «коИн»

                Как переводится на немецкий английское слово coin? Или русское слово монета?


          1. Jouretz
            11.01.2019 17:06

            Ставь лайк, если считаешь, что иностранные слова заимствуются по правилам транскрипции.
            Ставь дислике, если считаешь, что иностранные слова заимствуются по правилам транслитерации.


            Обмен биткоинами через блокчеины проупградеился =_=


  1. amarao
    11.01.2019 13:20

    Меня вообще забавляет ситуация, когда проприетарная компания пытается натянуть на себя кусочек opensource-риторики.

    Free Software позволяет использовать и модифицировать ПО не думая про проприетарные ограничения. Сценарий применения aws'ом был абсолютно нормальным для opensource.

    Я вообще не понимаю, как mongodb может изображать из себя борца за справедливость, если на продаёт лицензии не отчисляя ни копейки авторам зависимостей:

    Depends: libboost-filesystem1.65.1, libboost-program-options1.65.1, libboost-system1.65.1, libc6 (>= 2.15), libgcc1 (>= 1:3.4), libgoogle-perftools4, libpcrecpp0v5 (>= 7.7), libsnappy1v5, libssl1.1 (>= 1.1.0), libstdc++6 (>= 6), libstemmer0d (>= 0+svn527), libyaml-cpp0.5v5, zlib1g (>= 1:1.2.0)

    Тут уж либо трусики одеть, либо крестик снять.


  1. DerRotBaron
    11.01.2019 15:13

    Проприетарщики из Mongo своей лицензией не оставили нормальных вариантов использования Mongo как OpenSource SaaS-провайдерам.

    13. Offering the Program as a Service.
    If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge, under the terms of this License. Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version, or offering a service that accomplishes for users the primary purpose of the Program or modified version.

    “Service Source Code” means the Corresponding Source for the Program or the modified version, and the Corresponding Source for all programs that you use to make the Program or modified version available as a service, including, without limitation, management software, user interfaces, application program interfaces, automation software, monitoring software, backup software, storage software and hosting software, all such that a user could run an instance of the service using the Service Source Code you make available.


    То есть чтобы предлагать Монгу как сервис, теперь нужно использовать только софт под пермиссивными лицензиями. Отваливаются не только Linux, но и GNU в составе *BSD, да и сами *BSD не могут эксплуатироваться с ZFS.


    1. inkvizitor68sl
      11.01.2019 16:01

      Там всё намного хуже, чем написано.

      > management software
      > all such that a user could run an instance of the service using the Service Source Code you make available.
      Подразумевает, что вы должны открыть код всего сервиса, в том числе и биллинга, например.