Законно ли хранить код на GitHub?
Меня зовут Михаил, я юрист в сфере IT/IP и это моя первая статья на Хабре на юридическую тематику. Обычно я их публикую на своём сайте, но в этот раз она сильно затрагивает сообщество программистов, поэтому я решил поделиться ею и на Хабре тоже.
В заголовок своей очередной статьи я вынес весьма непростой и, отчасти, провокационный вопрос.
GitHub, как и другие ему подобные облачные сервисы, стал неотъемлемой частью процесса разработки программного обеспечения.
Исходный код в нём удобно хранить, удобно отслеживать изменения в нём, удобно делиться им с другими разработчиками, удобно передавать разработку другим командам. Очень много удобства. Но есть ли у такого удобного сервиса недостатки?
Я провел собственное исследование этого вопроса и представляю его результаты в этой статье. Более того, я уже успел применить его на практике, о чём расскажу в конце статьи (спойлер - если вы разрабатываете код под заказ, то хранение кода на GitHub лучше согласовывать с заказчиком письменно, или не хранить его там вообще).
Какие недостатки могут быть у GitHub?
Самый первый недостаток GitHub (здесь и далее имеется в виду именно онлайн-сервис https://github.com/, а не локальная платформа GitHub Enterprise Server) - это то, что он принадлежит совершенно посторонней американской компании GitHub Inc.
Это означает, что исходный код программы передаётся на хранение совершенно чужой компании, находящейся под юрисдикцией другого государства.
Нет никакой гарантии, что эта компания в определённый момент не отключит сервера, обеспечивающие работу GitHub и весь доступ к исходному коду просто накроется медным тазом.
И хорошо, если у вас будет бэкап, а если нет? А если бэкап достаточно старый? Это будет невероятной проблемой.
А есть ли юридические основание передавать такой код на хранение американской компании? Конечно есть. Но это и есть второй недостаток GitHub.
Хранение кода на GitHub - это передача ему лицензии на код
Не в отношении всех способов использования, конечно, но перечень достаточно широкий, что может вызвать массу проблем у разработчиков с заказчикам. Эти способы использования в законе называют правомочиями, а иногда (в частности в документах GitHub) также называют и правами.
Так, при регистрации на GitHub пользователю предлагается принять условия использования сервиса, изложенные в документе "GitHub Terms of Service" (перев. с англ. – "Условия использования GitHub") по ссылке https://github.com/site/terms.
Тут надо отметить, что сам GitHub представляет собой интернет-сайт, который законы РФ (и не только РФ) определяют как совокупность программ для ЭВМ, баз данных и информации, хранящейся и обрабатываемой при помощи них.
Правовое регулирование использования сервисов такого рода осуществляется при помощи условий использования, которые юридически представляют собой комбинацию лицензионного договора и, в некоторых случаях, договора об оказании информационных услуг.
В нашем случае условия использования сервиса GitHub представляют собой практически чистый лицензионный договор.
Какие правомочия получает GitHub на код?
Для ответа на этот вопрос обратимся к тексту условий использования GitHub.
Так в секции "D" условий использования GitHub определено следующее:
Английская версия:
"Short version: You own content you create, but you allow us certain rights to it, so that we can display and share the content you post. You still have control over your content, and responsibility for it, and the rights you grant us are limited to those we need to provide the service. We have the right to remove content or close Accounts if we need to."
Приблизительный перевод на русский язык:
"Краткая версия: Вы являетесь владельцем создаваемого вами контента, но предоставляете нам определенные права на него, чтобы мы могли отображать и делиться размещенным вами контентом. Вы по-прежнему контролируете свой контент и несете за него ответственность, а права, которые вы предоставляете нам, ограничены теми, которые нам необходимы для предоставления сервиса. Мы имеем право удалять контент или закрывать Учетные записи, если это необходимо."
В разделе 4 секции "D" условий использования GitHub определено следующее:
Английская версия:
"We need the legal right to do things like host Your Content, publish it, and share it. You grant us and our legal successors the right to store, archive, parse, and display Your Content, and make incidental copies, as necessary to provide the Service, including improving the Service over time. This license includes the right to do things like copy it to our database and make backups; show it to you and other users; parse it into a search index or otherwise analyze it on our servers; share it with other users; and perform it, in case Your Content is something like music or video.
This license does not grant GitHub the right to sell Your Content. It also does not grant GitHub the right to otherwise distribute or use Your Content outside of our provision of the Service, except that as part of the right to archive Your Content, GitHub may permit our partners to store and archive Your Content in public repositories in connection with the GitHub Arctic Code Vault and GitHub Archive Program."
Приблизительный перевод на русский язык:
"Нам нужно законное право делать такие вещи, как размещать ваш Контент, публиковать его и делиться им. Вы предоставляете нам и нашим правопреемникам право хранить, архивировать, анализировать и отображать ваш Контент, а также делать случайные копии, если это необходимо для предоставления Сервиса, включая улучшение Сервиса с течением времени. Эта лицензия включает в себя право делать такие вещи, как копировать его в нашу базу данных и создавать резервные копии; показывать его вам и другим пользователям; анализировать его в поисковом индексе или иным образом анализировать на наших серверах; делиться им с другими пользователями; и выполнять его, если ваш контент представляет собой что-то вроде музыки или видео.
Эта лицензия не дает GitHub права продавать ваш Контент. Это также не дает GitHub права иным образом распространять или использовать ваш Контент за пределами нашего предоставления Услуг, за исключением того, что в рамках права на архивирование вашего Контента GitHub может разрешить нашим партнерам хранить и архивировать ваш Контент в общедоступных репозиториях в связи с программами GitHub Arctic Code Vault и GitHub Archive Program."
В разделе 5 секции "D" условий использования GitHub определено следующее:
Английская версия:
"Any User-Generated Content you post publicly, including issues, comments, and contributions to other Users' repositories, may be viewed by others. By setting your repositories to be viewed publicly, you agree to allow others to view and "fork" your repositories (this means that others may make their own copies of Content from your repositories in repositories they control).
If you set your pages and repositories to be viewed publicly, you grant each User of GitHub a nonexclusive, worldwide license to use, display, and perform Your Content through the GitHub Service and to reproduce Your Content solely on GitHub as permitted through GitHub's functionality (for example, through forking). You may grant further rights if you adopt a license. If you are uploading Content you did not create or own, you are responsible for ensuring that the Content you upload is licensed under terms that grant these permissions to other GitHub Users."
Приблизительный перевод на русский язык:
"Любой Пользовательский Контент, который вы размещаете публично, включая вопросы, комментарии и вклады в репозитории других Пользователей, может быть просмотрен другими Пользователями. Устанавливая общедоступность ваших репозиториев, вы соглашаетесь разрешить другим Пользователям просматривать и "разветвлять" ваши репозитории (это означает, что другие могут создавать собственные копии содержимого из ваших репозиториев в репозиториях, которые они контролируют).
Если вы настроили публичный просмотр своих страниц и репозиториев, вы предоставляете каждому Пользователю GitHub неисключительную всемирную лицензию на использование, отображение и воспроизведение вашего Контента через Сервис GitHub, а также на воспроизведение вашего Контента исключительно на GitHub, как это разрешено функциональными возможностями GitHub (например, с помощью разветвления). Вы можете предоставить дополнительные права, если вы принимаете лицензию. Если вы загружаете Контент, который вы не создавали или не являетесь владельцем, вы несете ответственность за то, чтобы загружаемый вами Контент лицензировался на условиях, которые предоставляют эти разрешения другим Пользователям GitHub."
Таким образом, при регистрации пользователя на GitHub и принятии им условий использования GitHub» (https://github.com/site/terms) фактически между пользователем и компанией GitHub Inc. заключается лицензионный договор о предоставлении этой компании неисключительной (простой) лицензии на любой материал, который такой пользователь публикует в репозиториях сервиса GitHub, в том числе и исходный код компьютерных программ.
Такой лицензионный договор предоставил в отношении программного кода компании GitHub Inc. следующие права:
хранить, архивировать, анализировать и отображать программный код;
делать случайные копии программного кода;
копировать программный код в базу данных GitHub и создавать резервные копии;
показывать программный код пользователям;
анализировать программный код в поисковом индексе или иным образом анализировать на серверах GitHub;
делиться программным кодом с другими пользователями;
проигрывать графические, аудио и видео элементы, загруженные в GitHub.
Учитывая, что в большинстве случаев при разработке программного обеспечения на заказ все права на программный код принадлежат заказчику, то возникает вопрос - а на каком основании разработчик выложил уже не свой код на совершенно посторонний ресурс, заключив с его владельцем при этом лицензионный договор? Лицензионный договор, на минуточку, в отношении кода, которым разработчик больше не владеет.
На самом деле ни на каком основании. В том и проблема, что в отсутствие каких-либо прав на программный код разработчик просто не вправе заключать в отношении него лицензионные договоры, а потому, как следствие, он не вправе его выкладывать на GitHub.
Выгрузка программного кода на GitHub означает, что разработчиком произведена запись программного кода на электронный носитель (т.е. в хранилище данных сервера GitHub) с последующим предоставлением доступа к программному кода любому лицу из любого места и в любое время (т.е. предоставление доступа к коду любому пользователю GitHub, который имеет ссылку, в т.ч. сотрудникам самого GitHub) – всё это является и воспроизведением, доведением до всеобщего сведения и распоряжением исключительным правом на программный код. Незаконным.
Итого, сам по себе факт выгрузки программного кода на GitHub будет означать, что разработчик нарушил права заказчика на программный код.
Решают ли эту проблему закрытые репозитории на GitHub?
Совершенно нет, не решают. Обратимся снова к условиям использования GitHub.
В отношении так называемых "закрытых", "приватных" или "частных", репозиториев в разделе 3 секции "Е" условий использования GitHub определено следующее:
Английская версия:
"GitHub personnel may only access the content of your private repositories in the situations described in our Privacy Statement."
Приблизительный перевод на русский язык:
"Сотрудники GitHub могут получать доступ к содержимому ваших частных репозиториев только в ситуациях, описанных в нашем Заявлении о конфиденциальности."
Само именование репозитория, как или "закрытого", или "приватного", или "частного", никоим образом не влияет на факт размещения исходного кода на GitHub, поскольку придание репозиторию такого статуса является просто одной из функций GitHub, как компьютерной программы, при помощи которой реализуется доступность репозитория по ссылке или путём добавления пользователей в специальный список доступа.
Иными словами, именно пользователь решает, какой статус будет иметь его репозиторий. Он может сделать его в любой момент "закрытым" или открыть для всеобщего доступа, а также распространять специальные ссылки для доступа к репозиторию, что в принципе обесценивает статус "закрытого" репозитория при наличии неопределённого числа лиц, имеющих ссылки для доступа к нему.
Соответственно, закрытие репозитория не решает проблему, хотя и может её скрыть от посторонних глаз, если, конечно, это не всплывёт каким-то иным способом.
Какие могут быть последствия у публикации кода на GitHub?
Поскольку несанкционированная публикация исходного кода на GitHub является нарушением прав на этот код, которые уже принадлежат заказчику, то логично, что вся ответственность будет аналогичной той, какую несёт любой нарушитель авторских прав.
Самый популярный способ - это взыскание через суд компенсации в размере либо от 10 000 до 5 000 000 рублей, либо в размере двойной ставки лицензионного вознаграждения по договорам с аналогичными условиями, как у нарушения, либо двойной цены контрафактного программного кода.
Реже можно встретить уголовное преследование за нарушение исключительных прав. За публикацию кода на GitHub я пока такого не встречал, так как моё исследование - это новинка. И на практике мне такое удалось реализовать только один раз.
Так что там с судебной практикой?
Мне удалось применить результаты исследования на практике, поэтому я и написал эту статью, как предостережение всем разработчикам.
Фабула дела была такова. После завершения разработки компания разработчик передала все права на код заказчику, но вот сам код не передала. Как так получилось - не спрашивайте. Оставим этот вопрос за рамками статьи.
Я подключился уже на этапе, когда уже было ничего не сделать. Но сам код оказался выгружен на GitHub, так как в трёх экспертизах в предыдущем судебном деле эксперты знакомились с кодом именно на GitHub на аккаунте разработчика. Да только экспертизы эти были уже сильно позже даты официального перехода прав на код к заказчику.
Я провёл исследование и пришёл к выводу, что разработчик, не имея никаких прав на код (кроме очень ограниченной неисключительной лицензии по закону) загрузил его на GitHub.
Как я расписал выше загрузка кода на GitHub - это заключение лицензионного договора с американской компанией GitHub Inc., который наделяет её правами публиковать код, распространять его и так далее.
Поскольку заключение лицензионного договора и выгрузка кода на GitHub - это нарушение исключительных прав, то я обратился в интересах клиента с иском к разработчику в арбитражный суд и потребовал взыскать компенсацию в двойном размере от цены контрафактного кода.
При этом мне удалось доказать, что цена контрафактного кода равна цене его разработки, зафиксированной в договоре и впоследствии подтверждённой экспертом.
Итого, суд поддержал мою позицию, признал факт размещения кода на GitHub нарушением исключительных прав заказчика на код и взыскал двойную стоимость разработки.
В результате разработчик потерял денег в два раза больше, чем приобрёл.
Казалось бы я тут выгляжу очень коварным юристом, разработавшим план по отъёму денег у разработчика, но это не так. Разработчик повёл себя очень некрасиво - ему дважды писались письма о том, чтобы он передал код, но он на них так и не ответил, а устно сообщил, что ничего передавать он не намерен и мы можем судиться до побеления. Но вышло не так.
С самим делом вы можете ознакомиться по этой ссылке.
Есть рекомендации, как этого избежать?
Да, я уже упоминал об этом в статье. Во-первых, если очень хочется использовать GitHub, то пропишите это в договоре с заказчиком. И тогда, если у него будут претензии, то это вас защитит.
Во-вторых, после завершения разработки и сдачи работ заказчику удалите код из GitHub, ну или хотя бы закройте к нему доступ (но это не убирает нарушение, а только скрывает его).
В-третьих, будьте добросовестными разработчиками и не делайте ничего назло.