Селектел и открытое программное обеспечение

    Open Source

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


    Почему Open Source?


    На первый взгляд коммерческие компании и OpenSource кажутся вещами совершенно несовместимыми. Большинство коммерческих продуктов выпускается с закрытым исходным кодом и распространяются исключительно платно.

    Однако в последние 10–15 лет очевидной стала следующая тенденция: опенсорсные наработки активно используются в коммерческих проектах. И практика показывает, что качество, например, некоторых свободно распространяемых библиотек не хуже, а в некоторых случаях — даже лучше по сравнению с качеством аналогичных коммерческих продуктов. Кроме того, многие опенсорсные продукты обладают более широким набором функций по сравнению с коммерческими аналогами.

    Начиная разговор об OpenSource, следует прояснить разницу между понятиями “бесплатное ПО”, “свободное ПО” и “открытое ПО”. Хотя все три перечисленных типа ПО имеют общие черты, между ними есть ряд существенных отличий. Открытое ПО не является синонимом бесплатного: существует немало программ с открытым исходным кодом, распространяемое, тем не менее, на коммерческих условиях (в качестве примера можно привести коммерческие Linux-системы). В свою очередь, существует немало программ, которые распространяются совершенно бесплатно, но их исходный код при этом закрыт. Для бесплатных программ могут также быть установлены ограничения на копирование и распространение; их исходный код очень часто бывает закрыт.

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

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

    Негласное правило сообщества OpenSource предполагает, что нужно не только брать, но и давать что-то взамен: воспользовался продуктом — постарайся улучшить его. Свободное программное обеспечение как раз развивается благодаря тому, что миллионы пользователей (как любителей, так и профессионалов), — дополняют и совершенствуют продукты, с которыми они работают. Желание усовершенствовать используемые нами свободно распространяемые библиотеки и поделиться своими наработками с коллегами стало одним из мотивов, побудивших нас открывать собственные продукты на GitHub. Но этот мотив был далеко не единственным.

    В сообществе разработчиков открытого ПО (как и в любом сетевом сообществе, объединяющем людей со схожими интересами) все участники так или иначе следят за разработками друг друга. Авторы интересных решений могут получить известность в кругах профессионалов. А коммерческим компаниям участие в опенсорсных проектах дает неплохую возможность повысить собственную узнаваемость. Благодаря GitHub у нас появилось некоторое количество клиентов; поправки и улучшения, внесенные в наши продукты пользователями, мы активно используем в своей работе. Размещая собственные проекты на GitHub, мы делимся знаниями с широкой пользовательской аудиторией, популяризуем наши подходы и идеи. Таким образом, Open Source в определенном смысле является для нас и средством продвижения.

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

    Pyte


    Первый проект, выложенный нами на GitHub. Мы используем его для показа консолей виртуальных машин в облаке. Все начиналось с небольшой библиотеки samfoo/vt102, которая впоследствии была переписана полностью. Подробная статья об этом проекте была опубликована два года назад.

    Репозиторий Pyte на GitHub

    Pyxs


    Написанный на Python клиент для работы с XenStore — хранилищем, используемым для обмена информацией между доменами Xen. Отличается более удобным (по сравнению с libxs) интерфейсом, а также многопоточной подпиской на события. Краткая, но информативная статья о Pyxs уже была опубликована ранее.

    Репозиторий Pyxs на GitHub

    Supload


    Утилита на Bash для загрузки файлов в наше облачное хранилище, использующая OpenStack Swift API. Для работы требует минимум зависимостей и сторонних программ. С ее помощью можно загружать файлы в хранилище, осуществлять рекурсивную загрузку файлов в указанной папке и подпапках, загружать новые файлы, настраивать автоудаление файлов. Утилита используется также для организации резервного копирования в хранилище.

    Репозиторий Supload на GitHub

    Tempo


    Библиотека для парсинга и форматирования времени на Erlang. Изначально она разрабатывалась для нашего сервиса мониторинга, чтобы реализовать в нем операцию преобразования времени из внутренних структур Erlang в строки.

    Репозиторий Tempo на GitHub

    Alberto


    В Erlang существует механизм «портов», предназначенный для взаимодействия между программой на Erlang и любой другой программой через stdin/stdout с передачей сообщений в установленном формате. Alberto — это библиотека для создания таких “портов”, написанная на OCaml.

    Репозиторий Alberto на GitHub

    Pat


    Мы искали стабильную библиотеку на Erlang, поддерживающую протокол SMTP — и не нашли ничего подходящего. Есть, конечно, gen_smtp, которая, к сожалению, стабильностью не отличается. Поэтому мы задумались собственном решении.

    Репозиторий Pat на GitHub

    Hen


    Библиотека на Haskell, реализующая интерфейс к гипервизору Xen, работает как с третьей, так и с четвёртой версией.

    Репозиторий Hen на GitHub

    YAML Config


    Когда мы начали писать первые программы на Haskell, перед нами встала необходимость их конфигурирования. Из распространенных библиотек для этой цели прежде всего используется configurator. Она имеет два существенных недостатка. Во-первых, она не поддерживает хранение списков объектов. Во-вторых, для используемого ей формата файлов нет библиотек на других языках.
    Мы решили написать собственную библиотеку, выбрав в качества формата YAML. К преимуществам этого формата следует отнести гибкость и простоту синтаксиса, а также поддержку всеми распространенными языками программирования.

    Репозиторий YAML Config на GitHub

    Photo Gallery


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

    Репозиторий Photo Gallery на GitHub

    Заключение


    В этой статье мы рассказали о некоторых наших опенсорсных проектах за последние два года. Работа в этом направлении продолжается; о ее результатах мы еще расскажем в следующих публикациях.

    Мы рассказали далеко не обо всех проектах. Заинтересованных читателей приглашаем посетить нашу страницу на Github — возможно, вы найдете там что-то полезное для себя. Будем признательны за все замечания, предложения и пожелания — они будут обязательно учтены в дальнейшей работе.

    Для тех кто не может комментировать посты на Хабре, приглашаем к нам в блог.

    Selectel

    110,00

    ИТ-инфраструктура для бизнеса

    Поделиться публикацией
    Комментарии 13
      +8
      Картинка – тонкий юмор.
        +1
        И замечательный, симпатичный дизайн :)
        0
        смешной динозавр :)
          +7
          gen_smtp, которая, к сожалению, стабильностью не отличается

          А почему вы решили написать свою библиотеку, а не исправить существующую?
            +2
            Если бы вы заглядывали в код gen_smtp, такого вопроса бы не возникло xD

            Тем не менее, gen_smtp хоть и говнокод, но функционал гораздо шире, чем у Pat.
            • НЛО прилетело и опубликовало эту надпись здесь
              +10
              свободное, или опенсорсное ПО — нет, free software это free, а open source — это всего лишь открытый исходный текст. Зачем людей путать?
                0
                Никто людей и не путает. Нередко эти понятия употребляются как контекстуальные синонимы.
                  +1
                  Именно это я и называю «путать людей». Кто-то не различая разницы между Libre, free as the beer и open source использует их как синонимы. Более того, усилиями проприентарщиков в западной терминологии, в нарушение тезисов GNU, каждый раз, когда говорят о свободном ПО, употребляют opensource. Например, так любит делать Micosoft и Oracle. В то же самое время русская языковая практика, к счастью, отлично различает СПО и «программное обеспечение с открытыми исходными текстами». Второе особо и не употребляют, ибо это очень маргинальная область.

                  Так вот, вы за этими товарищами повторяете ошибку, усиливая путаницу. Свободное ПО — это свободное ПО. Открытые исходные тексты — куда меньшее и более слабое подмножество.
                0
                А вот эта библиотечка тоже Selectel, или личная инициатива si14 github.com/band115/ecirca?
                • НЛО прилетело и опубликовало эту надпись здесь
                  +5
                  Интересно у вас там видимо работать, на 9 проектов из статьи 6 языков программирования.
                  • НЛО прилетело и опубликовало эту надпись здесь

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

                  Самое читаемое