Компания
26,15
рейтинг
10 декабря 2014 в 11:36

Разработка → Как веб-сервер Cowboy и мессенджер Kato помогают друг другу: Немного про Erlang и open source

image

Большая часть сервисов и продуктов, которыми все мы пользуемся каждый день, были построены с применением открытых технологий (open source).

Например, сотрудниками Facebook были созданы «открытые» инициативы Cassandra и React, а в последнее время даже такие апологеты «закрытости» как Microsoft, который ранее пытался уничтожить движение open source, начали открывать свои разработки (корпорация из Редмонда сделала открытым ядро платформы .NET).

При создании мессенджера Kato был использован открытый инструмент для обработки запросов с очень высокой интенсивностью — язык программирования и виртуальная машина Erlang. Эту платформу используют многие популярные проекты и компании (примеры — Amazon, Goldman Sachs, RabbitMQ, WhatsApp, Whisper). Существует крупное сообщество разработчиков, пишущих Erlang-библиотеки. С помощью одной из них, веб-сервера Cowboy, был создан мессенджер Kato — сегодня мы расскажем об истории этого open source проекта подробнее.

Немного предыстории


Первая версия платформы Erlang была разработана сотрудниками Ericsson Джо Армстронгом, Робертом Вирдингом и Майком Уильямсом в 1986 году. Первоначально язык был закрытым и использовался исключительно во внутренних проектах компании (например, с его помощью был создан коммутатор AXD301, добившийся показателя отказоустойчивости «девять девяток» — 99,9999999%), однако в дальнейшем менеджмент Ericsson отказался от поддержки внутреннего языка программирования (было решено сконцентрироваться на Java и других открытых платформах). В результате в 1998 использование Erlang в проектах Ericsson было запрещено (это послужило причиной ухода из компании Армстронга, а также других создателей языка и использовавших его разработчиков), но впоследствии код платформы был неожиданно открыт под лицензией Erlang Public License.

Покинувшие Ericsson разработчики Erlang после открытия языка продолжили заниматься его развитием (создавали стартапы, консалтинговые компании, писали книги). Со временем менеджмент Ericsson снял запрет на использование Erlang в собственных проектах, и в 2004 году Джо Армстронг с некоторыми другими представителями «старой гвардии» вернулись в компанию. В данный момент существует мощное глобальное сообщество разработчиков, создающих продукты на платформе Erlang.

Правильный веб-сервер на Erlang и создание стартапа Kato


Одним из таких разработчиков является Лоик Хоген (Loïc Hoguin). Несколько лет назад он решил создать веб-сервер на платформе Erlang, который был бы лишен минусов других подобных продуктов. Так родился великолепный веб-сервер Cowboy (о работе с ним на Хабре уже была статья).

image

Иллюстрация к описанию веб-сервера Cowboy с сайта проекта

Благодаря этой библиотеке нам удалось за несколько недель запустить рабочую версию мессенджера. Это, в том числе, позволило нам попасть в известный стартап-акселератор Techstars и привлечь инвестиции — во многом проект состоялся именно благодаря существованию такого инструмента как Cowboy.

Проектов, которым своими разработками помог Лоик Хоген, немало, однако в нашем мире один этот факт еще не гарантирует его автору достойную жизнь.

На что жить разработчику открытых проектов


В январе 2014 года Лоик опубликовал в своем блоге пост, в котором рассказал о важной, но редко поднимаемой теме — разработке открытых (и бесплатных) проектов в условиях необходимости платить за квартиру и покупать еду. Лоик, талантливый разработчик, который мог бы продолжать приносить огромнейшую пользу всему Erlang-сообществу, был вынужден заниматься консалтингом и кодированием на заказ, чтобы заработать средства к существованию.

Возникла нелогичная ситуация — с помощью открытых проектов Лоика десятки компаний во всем мире могут создавать продукты (в том числе коммерческие), но разработчик при этом вынужден заниматься не вещами, которые могли бы быть полезны всем членам сообщества, а работать над закрытыми коммерческими проектами.

image

Выступление Лоика Хогена на конференции Erlang DC в феврале 2013

В итоге вопрос был решен вводом механизма спонсорства работы создателя Cowboy. Схема спонсорства open source проектов крайне проста — заинтересованные компании (или отдельные команды внутри компании) перечисляют разработчику определенные суммы денег, а взамен получают более качественный продукт, потому что у него остается больше времени на работу над ним (кроме того, компания вправе рассчитывать на персональный подход при возникновении вопросов по внедрению технологии в свои продукты).

Первым проектом, оказавшим подобную поддержку Лоику, стал LeoFS, команда которого работает над распределенным хранилищем файлов. Прочитав пост Лоика, мы тоже решили помочь — с февраля 2014 года Kato.im ежемесячно оказывает создателю Cowboy финансовую поддержку.

Этот шаг позволяет убить двух зайцев — разработчик получает возможность заниматься развитием полезного проекта, а спонсоры (помимо морального удовлетворения) получают приоритет в устранении обнаруженных ими ошибок, а их имена и ссылки на сайты располагаются на домашней странице Cowboy и в README-файле проекта.

Зачем нужно спонсировать открытые проекты


У нас в Kato нет большого количества ресурсов, которые можно было бы направить на поддержку открытых проектов, однако мы всегда делимся с сообществом open source нашими правками кода и обнаруженными решениями проблем. Без усилий создателей Erlang и Cowboy не было бы нашего стартапа, поэтому мы всегда будем помогать открытым проектам и призываем другие компании поддерживать проекты вроде Cowboy и их создателей.

image

Сила open source заключается в объединении усилий крупных компаний и независимых разработчиков. Компания Ericsson вложила в создание платформы Erlang десятки и сотни миллионов долларов, но без усилий разработчиков, которые создают библиотеки и различные инструменты на этой платформе, она бы не получила такого широкого распространения.

Этот кумулятивный эффект делает возможным появление множества проектов, улучшающих жизнь миллионов людей. Таким образом каждый участник открытого сообщества является инвестором в проекты по всему свету — успех каждого из них в равной степени может зависеть от работы тысяч сотрудников гигантской корпорации и от усилий одного человека.
Автор: @KatoProject
Kato.im
рейтинг 26,15

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

  • –9
    Вы бы вместо абстрактных «мы всегда делимся с сообществом open source нашими правками кода и обнаруженными решениями» привели конкретные примеры вашего вклада, а?
    • +3
      Да мы приведем, тут проблем нет, но вроде бы конкретно в этом топике речь несколько о другом.

      А так уже в следующем материале это есть в плане. Посмотреть кое-какие проекты можно тут.
      • –4
        Да я вот, собственно, и пытаюсь понять о чем топик. Пока вижу, что примерная схема такая:

        1. Open source — это в целом хорошо; вроде бы мало кто с этим спорит.
        2. Kato финансово помог одному open source проекту; молодцы, рад и за вас, и за Nine Nines, и за Cowboy. С другой стороны — это совершенно распространенная бизнес-практика — это же не какая-то абстрактная благотворительность, а вполне конкретная деятельность, приносящая свои плюсы обоим вовлеченным сторонам. Масса компаний по всему миру покупают поддержку у тех же RedHat, Nginx, Canonical, Zabbix, IBM, Asterisk и еще сотен известных или не столь известных компаний. Сама по себе такая бизнес-модель — это не то, чтобы какая-то новость, так уже лет 20 делают.
        3. Kato имеет свои открытые проекты — вот это-то, собственно, уже было бы интересно — и статья на этом самом интересном как раз и обрывается.
        • 0
          Kato финансово помог одному open source проекту; молодцы, рад и за вас, и за Nine Nines, и за Cowboy. С другой стороны — это совершенно распространенная бизнес-практика — это же не какая-то абстрактная благотворительность, а вполне конкретная деятельность, приносящая свои плюсы обоим вовлеченным сторонам. Масса компаний по всему миру покупают поддержку у тех же RedHat, Nginx, Canonical, Zabbix, IBM, Asterisk и еще сотен известных или не столь известных компаний. Сама по себе такая бизнес-модель — это не то, чтобы какая-то новость, так уже лет 20 делают.

          Никто не говорит, что мы тут что-то изобрели, просто рассказана история взаимодействия с конкретным «открытым» проектом. В дальнейшем вас просто привлекла одна фраза, и вы хотите увидеть тут какое-то ее масштабное описание на целый пост, но это у нас пока в планах на ближайшее будущее. Вроде бы все очевидно)
        • +2
          > совершенно распространенная бизнес-практика

          не смешите меня, ладно =)

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

          Поэтому сам факт донейта в опенсорс — очень и очень редкое явление и действительно достойное внимания.
          • –2
            Я, собственно, не очень понимаю, почему это надо называть _донейт_. Люди заплатили человеку, разрабатывающему продукт, за поддержку интересующего их продукта. Утрируя — давайте тогда уж писать про каждого нанятого разработчика и каждую выплату ему зарплаты?
            • +1
              если бы они наняли Лоика на какую-то фичу, то в этом случае они бы несли риски того: сделает он эту фичу или не сможет сделать и скорее всего забрали бы себе плоды его действия. И даже если бы и не забрали, обладали бы исключительными правами на его работу.

              В случае, когда автор сам сначала что-то девелопит, а потом ему за это накидывают денег, это типичный донейт. По-другому это не назовешь.

              Форма, когда автора кода _нанимают_ на работу над его же продуктом даже в опенсорс не особо хороша и ничего в ней особо интересного на самом деле нет, ведь в этом случае автор получает как на средней зарплате. Если он тот же софт будет продавать, то может заработать куда как больше (иногда если повезет).

              Не путайте разные формы взаимного одаривания благами =)
            • 0
              Тут я соглашусь c erlyvideo: donate — это форма ни к чему обе не обязывающего стороны поощрения. Каждый для себя решает: кто-то продаёт платную поддержку и приобретает при этом обязательства, кто-то просит donate, и при этом обязательств (кроме моральных, в меру воспитания и мировосприятия) не приобретает.
    • +4
      Что-то такие вежливые все последнее время :)
      • –1
        Просто статья несколько напоминает дешёвый PR. В стиле «ах, смотрите, мы отправили булочку хлеба голодающим детям в Африке». Спонсорство — это хорошо. А вот такие статьи сразу вызывают вопрос: «а в чём причина спонсорства: в создании информационного повода для PR или в настоящем желании поддержать?»

        Вот представьте, вы на страничке в соц. сети или в живом журнале видите два текста, причём оба сотрудника участвуют в конкурсе «Самый милый человек года»:

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

        и

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

        Какой текст, по вашему, вызывает меньше отторжения?
        Ну, и вы, если помогаете, часто об этом говорите? Меня, например, воспитывали с установкой, что если помогаешь — не нужно это афишировать, суть в том, чтобы помочь, а не в том, чтобы как можно больше людей узнало о том, что ТЫ это сделал.

        Честно говоря, меня лично даже рекламные акции «1 рубль с каждой кружки кофе мы отправим милым пандам в Китай» коробят меньше.
        • +2
          Я просто не понимаю «диванных» критиков с пожеланиями «Вы бы вместо» / «было бы лучше» / «было бы хорошо», когда сам не в состоянии дополнить критику конструктивом или пример показать свой. Вот смотрю я, например, ваш пост и уже как-то комментарий ваш и вопросы иначе выглядят.

          Меня, например, воспитывали с установкой, что если помогаешь — не нужно это афишировать

          Все блоги компаний переводим в анонимный режим?
          • –1
            Немного не понял несколько вещей:

            1. Приведите цитату, где я предлагал что-то сделать, вместо или вообще? С моей точки зрения я высказал собственное мнение о приведённом выше тексте. Текст находится на публичном ресурсе, мне кажется, что в этом тексте откровенное хвастовство и «смотрите, какие мы хорошие, любите нас». Уберите из этого поста два предложения — и моё впечатление было бы совсем другим. Предположу, что причина в неопытности PR-менеджера.

            2. Чем вам не угодил абсолютно нейтральный информационный пост? Уж там-то вообще никакой рекламы и PR. Вообще, вы какое-то отношение к Като имеете? Иначе мне непонятно желание потратить время и поискать соломинку в чужих глазах. Вернее, оно мне непонятно в любом случае, но если вы имеете отношение к Като, и вас что-то задело — это можно хотя бы объяснить. Кстати, я вам рекомендую еще на Geektimes сходить, туда переехала большая часть опубликованного мной материала, там можно найти гораздо более интересные публикации с этой точки зрения.

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

            Но вы так и не ответили на мой вопрос выше. К нему добавился еще один: что именно вам не понравилось в моей реакции? Мне правда любопытно: у нас приличная разница в возрасте, и мне интересен ваш образ мыслей.
            • 0
              1. Приведите цитату, где я предлагал что-то сделать, вместо или вообще?

              Приведите цитату, где я говорил о вас лично?

              Чем вам не угодил абсолютно нейтральный информационный пост?

              Мне не нравится ваша логика, об этом уже сказал.

              Это личное дело каждого — выбирать, что о себе говорить. А дело читающих — реагировать и составлять мнение о тексте и авторе.

              О чем и речь. Мнение о комментаторах не забывайте.
              • –1
                Приведите цитату, где я говорил о вас лично?

                Вы ответили этой фразой на мой комментарий; я не ожидал, что ваш комментарий не связан с мыслями, там выраженными. Для меня это нелогично. Особенно нелогично это смотрится с последующей ссылкой на пост, а затем — упоминание моей логики. Но люди все разные, согласен. :)

                Мне не нравится ваша логика, об этом уже сказал.

                Так вы бы объяснили, чем именно. А то пока получается, что вы ткнули пальцем куда-то, а что именно там, с вашей точки зрения, не так — непонятно. Хотя в принципе непонятно, зачем это делать, но это уже второй вопрос.

                О чем и речь. Мнение о комментаторах не забывайте.

                Так я и не забываю и стараюсь делать это (не забывать) последовательно. Жду того же и от вас.
        • 0
          Не стоит путать персональную помощь и компанейскую. Компания сделала продукт на открытых проектах, зарабатывает на нем деньги, помогает этим проектам — финансово, своим кодом или еще как. Кроме позитивного посыла в ней нет ничего. Тем более отторжения или негатива. Плюс — пример для других компаний.
          • 0
            Так отлично, что она помогает, я только за. Только зачем рассказывать об этом? Чего этой информацией можно добиться? Можно рассказать о том, как здорово кому-то помогать и предложить присоединиться. Я чуть выше написал: не будь двух предложений в тексте выше — и реакция была бы другой. Хвастаться нехорошо…
            • +3
              Можно рассказать о том, как здорово кому-то помогать и предложить присоединиться.

              И читать потом комменты в духе «что вы льете воду, лучше бы сказали, чем и кому помогли лично вы».
              • 0
                Так вот на такой вопрос как раз можно без проблем ответить прямо. Ложная скромность ничуть не лучше показного хвастовства.
        • 0
          Расскажите, чего полезного опенсорсу сделали вы?
          • +2
            О, самое любопытное начинается. :) Донейт, один из самых популярных модулей для Magento в своё время, переводы: всё это считается?

            А вы?
            • –1
              Я дохера сделал =) Два года держал в опенсорсе здоровенный проект.
              • +1
                Это здорово. Померились х животами. Только зачем? Честно говоря, мой вопрос был абсолютно риторическим: по моему мнению, даже если бы вы ничего не сделали, это не отнимало бы вашего права задать любой вопрос, а у меня — права (не)отвечать на него. :)

                С правом судить, правда, ситуация другая, но мы и так от темы ушли совсем далеко. :)
  • +5
    ИМХО это логично не только брать, но и отдавать — используете открытые проекты для зарабатывания денег, помогите этим самым проектам стать лучше!
  • +2
    Спасибо за то что спонсирует такой замечательный проект. А почему было решено использовать именно cowboy?
    • +2
      Мы до этого очень долго работали с Yaws и изначально решили снова пользоваться этим сервером. Потом выяснилось, что Cowboy доделал поддержку для websockets и просто решили попробовать.

      Тут же оказалось, что работать с Cowboy одно удовольствие — прекрасный код, отличная реализация HTTP протокола, активная разработка. И не пожалели ни разу :-)
    • 0
      да потому что выбора нет =)
  • +3
    Сейчас стало модно делать мессенджеры. Как я понимаю Slack ваш прямой конкурент. На первый взгляд выглядит красиво, но я убежден, что это все должно умереть. Ведь изолированные мессенджеры с проприетарным протоколом это просто абсурд. Представьте что email можно было бы переселыть только между Microsoft Outlook, или звонить можно было только с телефона Samsung на такой же телефон а с Nokia уже нельзя было. Я не понимаю как вообще с этим миряться до сих пор. Желаю скорейшей смерти Skype, WhatsApp, Viber, ooVoo, iMessage, Slack, ну и вам конечно ;)
    • 0
      На самом деле на заре развития мобильной связи тоже не было одного стандарта. Так что это все вопрос времени или необходимости. Если есть множество мессенгеров, значит кому-то это нужно. И это явно не их разработчики :)
    • 0
      В последнее время, стало еще модно делать защищенные протоколы для чатов. (n+1)sec, протокол от Whisper Systems, mpOTR откопали.
      О голосе и видео никто не задумывается. Ну, кроме Tox.
  • +1
    Оффтопик: анимация у вас на главной только что чуть не решила мою проблему со сном. Дизайнеру поклон.
  • 0
    > Microsoft, который ранее пытался уничтожить движение open source

    Интересно, как и когда они пытались это сделать? Тем, что до недавнего времени не открывали исходников своих фреймворков? Ну так это их дело. Из того что я вижу, они последовательно продвигают open source в .Net стеке (из того, что сразу приходит на ум, Codeplex для хостинга open source проектов, EF, MVC, Orchard). Естественно тут без личного интереса не обходится (прилив поднимает все лодки), но это тоже нормально.
    • +1
      иски против опенсорсных проектов, насколько я помню. Ну и банальное блокирование информации, типа «не скажем как наш FAT устроен»
      • 0
        про иски не слышал, честно говоря. Думаю, что если они и были, то единичного характера — у такой огромной конторы всякое случается. Ну а про сокрытие их информации, это опять же их дело. Я ниразу не адвокат ms, но все это не тянет на попытку уничтожения open source.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка