Большая часть сервисов и продуктов, которыми все мы пользуемся каждый день, были построены с применением открытых технологий (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 (о работе с ним на Хабре уже была статья).
Иллюстрация к описанию веб-сервера Cowboy с сайта проекта
Благодаря этой библиотеке нам удалось за несколько недель запустить рабочую версию мессенджера. Это, в том числе, позволило нам попасть в известный стартап-акселератор Techstars и привлечь инвестиции — во многом проект состоялся именно благодаря существованию такого инструмента как Cowboy.
Проектов, которым своими разработками помог Лоик Хоген, немало, однако в нашем мире один этот факт еще не гарантирует его автору достойную жизнь.
На что жить разработчику открытых проектов
В январе 2014 года Лоик опубликовал в своем блоге пост, в котором рассказал о важной, но редко поднимаемой теме — разработке открытых (и бесплатных) проектов в условиях необходимости платить за квартиру и покупать еду. Лоик, талантливый разработчик, который мог бы продолжать приносить огромнейшую пользу всему Erlang-сообществу, был вынужден заниматься консалтингом и кодированием на заказ, чтобы заработать средства к существованию.
Возникла нелогичная ситуация — с помощью открытых проектов Лоика десятки компаний во всем мире могут создавать продукты (в том числе коммерческие), но разработчик при этом вынужден заниматься не вещами, которые могли бы быть полезны всем членам сообщества, а работать над закрытыми коммерческими проектами.
Выступление Лоика Хогена на конференции Erlang DC в феврале 2013
В итоге вопрос был решен вводом механизма спонсорства работы создателя Cowboy. Схема спонсорства open source проектов крайне проста — заинтересованные компании (или отдельные команды внутри компании) перечисляют разработчику определенные суммы денег, а взамен получают более качественный продукт, потому что у него остается больше времени на работу над ним (кроме того, компания вправе рассчитывать на персональный подход при возникновении вопросов по внедрению технологии в свои продукты).
Первым проектом, оказавшим подобную поддержку Лоику, стал LeoFS, команда которого работает над распределенным хранилищем файлов. Прочитав пост Лоика, мы тоже решили помочь — с февраля 2014 года Kato.im ежемесячно оказывает создателю Cowboy финансовую поддержку.
Этот шаг позволяет убить двух зайцев — разработчик получает возможность заниматься развитием полезного проекта, а спонсоры (помимо морального удовлетворения) получают приоритет в устранении обнаруженных ими ошибок, а их имена и ссылки на сайты располагаются на домашней странице Cowboy и в README-файле проекта.
Зачем нужно спонсировать открытые проекты
У нас в Kato нет большого количества ресурсов, которые можно было бы направить на поддержку открытых проектов, однако мы всегда делимся с сообществом open source нашими правками кода и обнаруженными решениями проблем. Без усилий создателей Erlang и Cowboy не было бы нашего стартапа, поэтому мы всегда будем помогать открытым проектам и призываем другие компании поддерживать проекты вроде Cowboy и их создателей.
Сила open source заключается в объединении усилий крупных компаний и независимых разработчиков. Компания Ericsson вложила в создание платформы Erlang десятки и сотни миллионов долларов, но без усилий разработчиков, которые создают библиотеки и различные инструменты на этой платформе, она бы не получила такого широкого распространения.
Этот кумулятивный эффект делает возможным появление множества проектов, улучшающих жизнь миллионов людей. Таким образом каждый участник открытого сообщества является инвестором в проекты по всему свету — успех каждого из них в равной степени может зависеть от работы тысяч сотрудников гигантской корпорации и от усилий одного человека.
Автор: KatoProject