#20. Открытый исходный код в России
При достаточном количестве глаз ошибки выплывают на поверхность (Эрик Стивен Реймонд)
Вот уже довольно долгое время я слежу за активностью Минцифры России и её [квази]подведов (РФРИТ) в сторону открытого кода. Слежу и в том что происходит в открытом пространстве, и говорю с вовлеченными лицами, и вижу что происходит в мире параллельно.
Для начала надо понять контекст в котором всё происходит сейчас в мире и в России.
В мире правительства стран шаг за шагом предпринимают усилия по принятию модели разработки открытого кода (open source) как одной из основных. Это выражается, и в поддержке open source проектов, и в требования к раскрытию кода в проектах где есть государственные/бюджетные средства, и в реорганизации работы с поставщиками по госпроектам.
Открытый государственный код в мире
Европейский союз и лицензия EUPL
Например, Европейская комиссия утвердила решение [1] о использовании открытых лицензии для публикации программного обеспечения разработанного на средства Европейского союза, в тексте решения [2] можно обратить внимание на четкое определение и рекомендации относительно copyleft и permissive licenses. При этом решение о выборе лицензии лежит на агенстве раскрывающем код, по умолчанию - это EUPL (European Union Permissive License), но разрешены и другие варианты, какие - оговорено в решении Еврокомиссии.
Я же хочу обратить внимание что до принятие решения о европейская комиссия заказала исследование Open Source Study (полное название - The impact of open source software and hardware on technological independence, competitiveness and innovation in the EU economy) [3] проведенное Fraunhofer ISI и OpenForum Europe в 2019-2021 годах, финальный отчет был опубликован 6 сентября 2021 года.
Это большой документ, на 390 страниц, с подробным разбором того почему, как и зачем нужен открытый код, какие бизнес модели существуют, как устроено регулирование кода в странах ЕС, других странах и так далее. Полезное, детальное и взвешенное исследование с чёткими рекомендациями которые и были применены при принятии решения Еврокомиссией.
В целом важно помнить что Европейский союз интересуется открытым кодом достаточно давно и, как минимум, с 2011 года существует Open Source Observatory and Repository (OSOR), проект по мониторингу использования и анализу практик применения открытого кода в странах ЕС.
Government Open Source Github Comminity
У сервиса управления открытой разработкой Github есть специальный раздел Github and Government [4] где собраны ссылки на аккаунты и репозитории сотен государственных агентств и учреждений по всему миру. Когда-то на основе этих данных я создал базу данных Open Source Government [5] с данными по всем организациям, странам и репозиториям и их востребованности, а в 2018 году публиковал рейтинг стран по открытости исходного кода государства. Среди наиболее открытых по коду стран лидируют США, Великобритания, Франция и другие европейские страны, но, что важно, политика открытого кода повсеместна и активно развивается.
Открытый государственный код в США
В США открытость государственного кода долгое время была на уровне отдельных ведомств, но, на что можно обратить внимание, так это то что открытость кода была и остается частью большей политики открытости государства. На портале Code.gov собраны ссылки на открытые государственные репозитории, обычно на Github. Многочисленные публикации есть на digital.gov. Всё это построено вокруг Federal Source Code Policy, рекомендаций и требований по раскрытию кода.
В случае США стоит обратить внимание на то что наиболее популярный “госкод“ имеет научную природу. Например, репозиторий проекта управления миссиями OpenMCT у НАСА или проект по инфобезопасности DShell от Исследовательской лаборатории армии США.
Другие примеры
Банк Китая выдал рекомендацию финансовым организациям не просто использовать открытый код, но и вкладываться в его развитие. В Болгарии существует требование к раскрытию исходного кода органов власти и таких примеров ещё очень и очень много.
Роль и задачи государства
Для начала надо чётко разделить три направления взаимоотношения государства и open source сообщества и ИТ рынка:
поддержка open source проектов и компаний;
раскрытие кода создаваемого за счёт денег налогоплательщиков;
обеспечение открытой разработки внутренними госкомпандами.
Здесь необходимо начать с того что каждое это направление автономно, имеет свою, очень большую специфику и требует отдельного регулирования, коммуникации и так далее.
1. Поддержка отечественных open source компаний и сообществ
Что, на самом деле, конечно, поддержка международных сообществ тоже, опосредовано через вклад отечественных open source разработчиков. Причём разработчиков и внедренцев, на самом деле. То есть тех кто напрямую делает свои продукты и внедряет продукты с открытым кодом, контрибьютит в открытые репозитории.
Задача понятная, во многих странах применяемая правительствами стран через разного рода государственные и квазигосударственные фонды раздающие целевые гранты на создание и развитие ПО с открытым кодом. Имеет много измеримых социально-экономических эффектов на длинной дистанции.
Ключевые адресаты тут:
компании в рынке open source
компании внедряющие продукты и готовые использовать open source решения
Что важно - это совершенно не про эффективность государственного управления и это долгосрочная стратегия.
2. Раскрытие кода созданного за счет средств налогоплательщиков
Не секрет что государство тратит много средств на разработку программного обеспечения. Иногда это код прикладных систем, иногда это части государственных информационных систем, а в немалой степени это код создаваемый в рамках научной деятельности, грантов учёным, общественникам и так далее (да-да, это всё тоже создаётся на деньги налогоплательщиков). Раскрытие этого кода можно рассматривать как перевод в общественное достояние то что сделано за счёт средств общественности.
Поэтому это направление можно разделить, как минимум на два:
контроль за разработкой исходного кода господрядчиков;
раскрытие кода научной деятельности (open access);
Контроль за разработкой исходного кода господрядчиков
Это совсем другая тема, ключевой её посыл в том что органы власти и госучреждения тратят слишком много на софт, ещё больше на его внедрение. ПО получается так себе, внедрение тоже по разному, все хором говорят "ну что вы хотите, среда такая" и они правы. Попытки внедрения ГЕОПа, ГосТех'а, ФАПа, а до этого разного рода типовых решений - они про это. Они все про то что сейчас этой сложный рынок, без единого центра управления и у него нет централизованного регулятора.
Попытки загнать всех сейчас в единый репозиторий - это одна из таких попыток. Казалось бы при чём здесь открытый код? Истории про гослицензии при госконтрактах - это как раз такой подход с попыткой национализации исходного кода продуктов поставщиков. Госпоставщики по ИТ, мягко говоря, не подарки, и применяют полный спектр неприятных ИТ практик с "двойной продажей кода", с внедрением неотделимых компонентов, с внедрением незаменимых зависимостей, с привязкой к вендорам, с оптимизацией кода под какое-нибудь самое редкое и поганое дорогое железо и ещё много чего.
В данном случае открытый код - это попытка выправить эту ситуацию. Похожая госполитика есть в ЕС, есть в США, есть в других странах. При этом открывается, конечно, не весь код, а только наиболее существенный и повторно используемый.
Аргументы в сторону раскрытия кода создаваемого по госконтрактам чаще всего звучат из уст представителей Минцифры России. Это озвучивал зам. министра Максим Паршин на мероприятиях Russia Open Source и многие другие представители министерства.
Фактическая декларируемая цель министерства - приведение в порядок разработки программного обеспечения за госсчет для чего и была создана открытая государственная лицензия.
Однако вопрос в том кто является основными вовлеченными лицами? Это совсем не сообщество open source.
Требования к раскрытию кода затрагивают, в первую очередь, те организации которые к открытому коду отношение имели опосредованное, это:
исполнители по государственным контрактам (разработчики прикладных программ, государственных информационных систем и так далее) - именно они создают код;
государственные заказчики - именно они сейчас являются владельцами исходного кода после его сдачи по госконтрактам.
По сути open source сообщество в данном случае выполняет две роли:
потенциально вовлеченных в исполнение госконтрактов;
одобрителя и популяризатора подобной госстратегии.
У раскрытия исходного кода госсистем есть свои, опять же, системные сторонники и противники. Сторонники находятся там где госзаказчики считают деньги и хотят снизить зависимость от определенного вендора. Противники находятся среди тех кто знает что при раскрытии кода вскроется, де факто, плохие практики его разработки: нарушение лицензий, отсутствие документации, ошибки в коде и ещё много чего похуже.
Раскрытие кода в рамках научной деятельности (open access)
Как я писал ранее значительная часть государственного кода в мире - это код научных исследований, продуктов и иных результатов работы исследователей. Огромные объёмы кода в мире публикуются именно научными организациями. На Github более 100 организаций в разделе Government-funded research и есть гораздо большее число организаций которые просто туда ещё не внесены.
Особенность раскрытия кода именно в рамках исследовательской деятельности - это полное его раскрытие. Этот код, как правило, не имеет ограничений в части безопасности, раскрытия know how и коммерческих секретов.
В России есть единицы научных учреждений, также, публикующих открытый код. Как правило это научные организации включенные в международные программы исследований и взаимодействующими с учёными в других странах. Например, проекты Института системного программирования им. В.П. Иванникова РАН, но даже в этом случае не до конца понятно, является ли такое раскрытие частной инициативой отдельных ученых или внутренней политикой института.
В России такая практика пока редкость и, если к в области научных статей идет медленное, но постепенное развитие открытости в виде научных репозиториев открытого доступа, то в направлении открытости кода и открытости данных научных исследований целостной научной политики пока не наблюдается. Соответствующих усилий сравнимых с проектами научной инфраструктуры в США, Великобритании, Германии, Франции или Австралии в России сейчас нет.
3. Открытый код госкоманд
А вот это то о чём рассказывал и рассказываю уже лет 7-8. Государство очень много кода инсорсит на внутренние команды, на команды в госпредприятиях и так далее. Этот код даже больше принадлежит государству чем код поставщиков по госконтрактам. В мире такими командами являются OpenSG (Сингапур), Government Digital Service (США), AlphaGov (Великобритания), 18F (США), Team Digitale (Италия) и многие другие. В России такие команды могли бы быть... но, но их нет.
Многие из приложений создаваемых, например, RTLabs в Ростелекоме или в иных госорганизациях могли бы быть полностью с открытым кодом. Это и куски портала госуслуг, и мобильные приложения и многие другие сервисы. Когда я упоминаю открытость госкода на Github то это именно про те команды которые ведут открытую разработку госкода по всему миру. Фактически органы власти осуществляют создание общественного блага.
И вот эта часть как раз про реформу госуправления, кроссведомственные команды, возможность внешним разработчикам улучшать государственный код (код госприложений).
В данном случае, отсутствует необходимость диалога с ИТ отраслью, как бы странно это не звучало. Это декларативная политика государства, в этом нет необходимости никого убеждать снаружи, а исключительно ввести внутренние требования что работы в рамках госзаданий и контрактов с госучреждениями бы обязательным образом раскрывались. В отличие от контрактов с коммерческими компаниями - это не нарушает коммерческую тайну и не ломает ИТ рынок.
—
А вот российские особенности происходящего и специфику важно понимать уже сейчас.
Российские особенности и нюансы
Всё было бы проще в какой-то другой ситуации у нас в стране, но другой ситуации у нас нет, а объективная реальность создает немало особенностей и нюансов на которые важно обращать внимание:
Отсутствие академической среды/поддержки для развития открытого кода. Так получилось что многие российские open source проекты и разработчики вышли из академической и университетской среды, но у самих этих институций не было и нет до сих пор политики поддержки и развития продуктов с открытым кодом как это есть у многих зарубежных структур. В России не возникло сильного академического лобби/академической среды которая могла бы быть основой для трансляции практик из этой области на госусправление, как это происходило в США и странах Западной Европы.
Повсеместная риторика “осаждённой крепости“ приводит к тому регулярно звучат высказывания о том что российские разработчики не имеют решающего голоса в проектах с открытым кодом в которых они участвуют. Пример: Дискуссия между Натальей Касперской из АРПП и Олегом Бартуновым из “Postgres Профессиональный”. Поскольку изначально открытый код вырастал из открытой научной среды и сейчас большая часть проектов, также, включают вовлечение разработчиков из десятков стран, то такой защитный режим и участие в международных проектах плохо сочетается.
Следствие первого в том что сейчас поддержку открытого кода очень сильно смешивают и объединяют с импортозамещением и поэтому, несмотря на нелогичность, в разговорах об открытом коде участвуют компании не имеющие к открытому коду никакого отношения. Это отечественные коммерческие компании со специализацией на ПО с закрытым кодом и не присутствующих на рынке открытого кода ни коим образом. Большая часть лоббистов вокруг Минцифры также являются компаниями именно из этой среды, а не компании специализирующиеся на открытом коде.
Все вместе это формирует среду в которой одновременно находятся немногочисленные компании с бизнес моделями вокруг исходного кода и компании которые не имеют отношения к открытому коду, но активно вовлечённые в импортозамещение. При этом последние скорее преследуют цели защиты их бизнес моделей не связанных с открытым кодом (защитный GR) и попытки встроиться в повестку если государство начнёт раздавать деньги на открытый код/инфраструктуру для открытия кода.
При этом оказывается потеряна повестка открытости государства в которой открытый код должен был иметь место ещё 10-11 лет назад. Сейчас же речь идёт именно об экономическом эффекте от переиспользования кода другими госструктурами, но не говорится ничего о политической ответственности и открытом коде как части открытости госфинансирования (госконтрактов).
Таких нюансов и особенностей ещё немало, во всём этом я хочу обратить внимание что попытка придать внимания государства к этой теме сейчас - это совсем не то же самое чем инициативы в других странах.
Краткий итог
Как вы понимаете озвученные мной ранее направления не зависят друг от друга.
Поддержка open source компаний - это про долгосрочный экономический эффект. Для него нужно использовать уже имеющиеся механизмы грантовой и субсидиарной поддержки. Для этого можно и нужно разговаривать с ИТ отраслью.
Контроль за исходным кодом господрядчиков - это про изменение баланса управления и предполагаемую экономия в закупках. Здесь необъходим диалог с госзаказчиками и подрядчиками по госконтрактам. Причём главные тут госзаказчики поскольку системные интеграторы подстроятся под любую госполитику, они не должны являтся стейкхолдерами в этом диалоге, даже если очень хотят таковыми быть.
Раскрытие кода в рамках научных работ - это про госполитику, в первую очередь, Минобрнауки РФ и Российской академии наук. Пока нет признаков системных изменений в этих структурах и чтобы они появились нужна позиция не Минцифры России, а Правительства РФ.
Открытый код госкоманд - это то что Минцифра может делать уже прямо сейчас ни с кем не советуясь и не особо спрашивая. Это имеет отдалённое отношение к open source сообществу и к господрядчикам, решается административно-командными мерами обязывающими госкомпании и ед. исполнителей раскрывать исходный код по регламентированному сценарию. Здесь Минцифра может разьве что посоветоваться с сообществом о том как это делать чтобы госкод использовался повторно не только в госпроектах и как внешние разработчики могут помогать в развитии таких проектов. Но тут я уже могу добавить что способ только один - хорошо их документировать и обеспечивать высокое качество кода.
Post Scriptum
Лично мне ситуация вокруг открытого исходного кода сейчас очень напоминает историю 10 летней давности вокруг открытых данных. От довольно бессмысленного ажиотажа к пассивному противодействию. То как сейчас идёт обсуждение открытого кода сейчас очень похоже на то какие опасения я слышал тогда. Общий настрой на то что “вокруг враги“ создаёт столько внутренних и внешних ограничений что, хотя и хочется надеяться на качественный прогресс в открытости, приходится учитывать и другие возможные сценарии. И важно помнить что открытый исходный код - это не про хайп, а про довольно большую системную работу, сложные сообщества и общественное благо. Поэтому PR и “движуха” закончатся достаточно быстро, через 2-3 года максимум, а скорее раньше. Вопрос в том получим ли мы какие-либо системные изменения в госполитике за это время?
—
Ссылки:
[1] https://ec.europa.eu/commission/presscorner/detail/en/ip_21_6649
[2] https://ec.europa.eu/transparency/documents-register/detail?ref=C(2021)8759&lang=en
[3] https://digital-strategy.ec.europa.eu/en/library/study-about-impact-open-source-software-and-hardware-technological-independence-competitiveness-and
[4] https://government.github.com/
[5] https://data.world/ibegtin/open-source-government-project
[6] https://begtin.tech/osgrating/
От души, Иван, большое спасибо за как всегда интереснейшую подборку и аналитику!
При этом надо понимать, что Иван вообще ничего не смыслит в открытом ПО, ка ки в программировании в принципе.
Если его спросить - без гугла - в каких, собственно, областях применения программ вообще есть открытый код - он не ответит. Он не знает, что СПО есть практичесик исключительно платформенных областях.
Но топит за "открытые данные" - которые так никто и не открыл, более того, закрывают по закону, и за "открытый код", про который он просто элементарно ничего не знает.
Дискуссия с Олегом Бартуновым - он пишется через "а", Иван, прикинь, да - показывает очень простую вещь: вся болтовня, что мол, "давайте больше коммитить в открытый код и приобретём влияние в сообществах" - враньё.
Бартунов с Сигаевым и Панченко коммитит в Постгрес больше 20 лет (в том числе два года работы в Рамблере) - и никакого влияния там не имеет, не входит в круг тех, кто решает. И никогда не войдёт. И Бартунов в разговоре с Натальей с этим согласился. И это наш лучший пример, других-то вообще и близко нет.
Попытка сделать СПО стержнем импортозамещения в нашей стане - это просто диверсия. Как и "открытые данные", "парадигма открытости государства". Здесь дело вообще не в экономике.