В первый раз с санкциями я столкнулся пять лет назад. Они не выглядели шумными, с публичными заявлениями. Просто одна крупная западная компания перестала продавать компонент другой крупной западной компании. Без объяснения причин. Это привело к потерям в несколько сотен тысяч долларов. Но закончилось относительно хорошо, так как компонент не был критичен, и его удалось заменить. Когда похожая ситуация повторилась через несколько лет, она ударила сильнее, поскольку «санкционированный» модуль уже участвовал в критической части функциональности. Это научило меня всегда учитывать риски отключения независимо от продукта или страны.

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

Использование code escrow

Code Escrow (депонирование исходного кода) – это размещение исходного кода продукта в депозитарии, вместе со всеми компонентами и инструкциями, необходимыми для сборки. Более развернуто я описал данный подход в статьях: основной, и дополнении.

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

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

Сервис явно имеет ценность для покупателя. На практике у меня было 2 клиента, для которых наличие code escrow являлось критическим условием. Тем не менее, величина ценности не максимальна. Факторы, снижающие значение:

  • в исходном коде надо разбираться, то есть иметь штат разработчиков,

  • для сборки вам потребуются соответствующие инструменты, а также компоненты, которые используются в продукте,

  • услуга дорогая, стоимость ее перекладывается на плечи клиентов.

Архитектура на неконтролируемых третьей стороной технологиях

Даже имея доступ к исходникам, в случае ухода компании у вас остается риск того, что и производитель платформы тоже по какой-то причине перестанет с вами работать. Тут вариант практически один. Это фокус на различных открытых и royalty-free технологиях: Linux против Windows, Android против iOS, использование AV1 вместо HEVC и так далее.

Здесь в полной мере сработало то, ради чего открытые лицензии и создавались. Это отсутствие vendor lock-in и обмен технологиями, а не бесплатность.

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

Для тех кто разрабатывает продукты, в статье "Two-Sided Competition of Proprietary vs. Open Source Technology Platforms and the Implications for the Software Industry" приводится анализ и сравнение двух подходов.

Архитектура для локальной установки, или развертывания в частном облаке

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

Это означает, что все *aaS подходы являются рискованными с точки зрения устойчивости. Интересно, что все SLA описывают доступность до долей процента, но ни один не включает в себя устойчивость к санкциям. Скорее наоборот, действия правительств могут относить к форс-мажору.

Возможность развернуть решение у себя добавляет ценность продукту. Но есть и факторы, снижающие ее, это:

  • затраты на инфраструктуру и обслуживание,

  • пользователь становится зависимым не от сервиса, а от оборудования; если над оборудованием нет контроля, то риск прекращения обслуживания остается.

Бессрочная лицензия, а не подписки

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

Бессрочное владение – это безусловно ценность для клиента. Производители со своей стороны, чтобы иметь прогнозируемый денежный поток могут продавать сервисные контракты, как они делали раньше. Что вместе со страховкой code escrow очень хорошее предложение.

Контракт, предполагающий использование старых версий после разрыва

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

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

Портрет идеального устойчивого ПО

Соберем характеристики устойчивого к санкциям ПО

  • В стоимость лицензии, а на самом деле в стоимость сервисного контракта, входит депонирование исходного кода.

  • Продукт разработан на открытых технологиях.

  • Архитектура продукта не использует внешних сервисов, и позволяет устанавливать его локально или в частном облаке.

  • Продукт предлагается по бессрочной лицензии.

  • Для компонентов, в контракте есть правила, которые позволяют использовать его старые версии и после прекращения.

Когда я взглянул на эти требования со стороны, то мне показалось, что я вижу типичный продукт 1985 – 2005 годов. Интересно перекликается и с другими технологиями. Хочешь хранить информацию долго и с гарантией прочтения в любое время – пиши на бумаге.

Взгляд со стороны вендора

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

Нужно ли играть на опережение? По моей оценке, по пунктам, которые не связаны с технологическим стеком да. Даже можно вернуться к бессрочным лицензиям, продавая по подписке сервисные контракты и по-прежнему считать любимые метрики – количество активных пользователей за период. Сами лицензионные модели могут быть сложнее. Включать в себя модели по рабочим местам, по утилизируемым ресурсам, а также зависеть от других условий. Например исследование, которое оценивает две модели в зависимости от параметров: Perpetual Versus Subscription Licensing Under Quality Uncertainty and Network Externality Effects.

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

Все эти пункты относятся к сегменту b2b. На потребительском b2c рынке вопрос стоит менее остро из-за наличия разных предложений, и не критичности. Но на бессрочные лицензии я бы согласился. Да и использование облаков у меня уже не вызывает такой радости, хотя пару лет назад на противников облачных хранилищ я смотрел с удивлением. А сейчас долго вытаскиваю архивы.

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


  1. amarao
    05.07.2022 10:22
    +2

    Это не спасёт, потому что код гниёт. Если кто-то хочет вам что-то похоронить (действием или бездействием), то он вам похоронит. Оно просто не будет работать на новой ОС с поддерживаемой версией языка и т.д. Через 3-5 лет у вас obsolete, через 7 вы на пятой центоси без права ставить из epel'а. А поддержка "своими силами" возможна только если это что-то очень простое.

    Во-вторых, задача шире - dependency autonomy, и это не пять поставщиков "компонент". Свой миррор дистрибутива (с снапшотами перед обновлением), свой кеш pypi, npm, cargo, whatever. Свой миррор хаба с репликацией всех нужных имаджей. Свой гит с репликацией с GH/GL.


    1. MikhailZakharov Автор
      05.07.2022 11:25

      Если я правильно понял, то речь о code escrow. При депонировании кода надо публиковать каждую версию, чтобы код был актуален. Все зависимости должны быть включены. То есть заказчик получает последнюю версию кода продукта. Действительно, это нетривиальный этап перед релизом продукта. И итоговый пакет может включать огромный объем данных со всеми зеркалами. Некоторые репозитории предоставляют услугу проверки, как дополнительная гарантия, что код соберется.

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


      1. victor_1212
        05.07.2022 16:56

        > Идеально устойчивый продукт тот, который разрабатывается полностью собственными силами, с использованием открытых технологий

        > Минус этого подхода в том, что часто используются проприетарные компоненты

        к сожалению есть одно обстоятельство которое надо учитывать, а именно независимо что написано например в gpl license, general law всегда имеет приоритет, и general law в том числе включает sanctions, кстати китайцы прекрасно знают это, и вероятно работают над своей собственной tool chain и пр., конечно не без копирования, что пока еще доступно в open source


        1. MikhailZakharov Автор
          05.07.2022 18:15

          Хорошее замечание. Тут есть целое поле для рассуждений.

          Первый случай - санкции корпоративного уровня. Одна кампания не продает продукт другой компании, или не продляет контракт. От этого использование OSS спасает.

          Второй случай - санкции государственного уровня и при этом OSS решение разрабатывается энтузиастами из разных стран. Это самый интересный вопрос: под какое законодательство попадает их продукт.

          Третий случай - разработка OSS продуктов организациями. В этом случае законодательство страны регистрации регулирует деятельность компании.


          1. victor_1212
            05.07.2022 20:12

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


      1. salkat
        06.07.2022 01:31

        Большой компании важно не чтобы программа существовала. Её и так не отбирают. Важна поддержка, обновление, реагирование на ошибки запросы на обновление. Никакой code escrow тут не поможет.


        1. Finist_S
          06.07.2022 10:19
          +1

          А в условиях конкуренции это не просто важно - критически важно, потому что не просто отсутствие поддержки, но даже промедление может оказаться фатальным для продукта, в который вгрохана масса ресурсов.


        1. MikhailZakharov Автор
          06.07.2022 10:28

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

          Выбор между остаться с ПО и без поддержки, или иметь ПО и его исходный код, который можно использовать для выпуска патчей или небольших доработок. Именно второе дает escrow.

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


          1. salkat
            06.07.2022 11:04

            Это не выбор вообще. Точнее, это выбор между "Найти замену немедленно!" и "найти замену за пару месяцев!", что в процессах крупной компании одно и то же. Крупной компании важно не чтобы программа могла выполнять какие-то функции, а чтобы она их выполняла гарантированно. Никто в коде копаться не будет, тем более, часто там не программисты этим занимаются, а девопсы. Нужна именно поддержка.


            1. StjarnornasFred
              06.07.2022 15:46
              +1

              не чтобы программа могла выполнять какие-то функции, а чтобы она их выполняла гарантированно

              На практике ПО чаще всего поставляется "как есть", а поддержка и гарантии - отдельным договором и за отдельный прайс. В таком случае, в общем-то, вполне достаточно того, чтобы программа в принципе существовала и работала: если официальный вендор не желает сотрудничать почему-то (санкции, кризис, маркетинговая политика), то наверняка найдётся сторонняя консалт/саппорт-компания, которая готова всё это обеспечить за, возможно, чуть большие деньги. Или, если у заказчика есть ресурсы, это можно устроить собственными силами, создав отдел поддержки.


              1. salkat
                06.07.2022 19:43

                Вы с энтерпрайзом давно последний раз работали? НИКТО не купит программу как есть, ТОЛЬКО с поддержкой. Когда в энтерпрайзе покупается что-то, человек платит не из своего кармана. И, часто, сам не пользуется. Ему пофиг, как оно работает и сколько стоит, важно чтобы вписалось в бюджет и его не сделали крайним. Вот чтобы не сделали крайним, ему важна поддержка. Чтобы поддержка и была крайней, если что. Нет поддержки - нет смысла покупать.