Разработчики жалуются, что нейросетевой помощник программиста Copilot от GitHub порой слишком увлекается и начинает вместо нескольких строк нужного кода генерировать цитаты и комментарии строчка за строчкой из проектов с открытым исходным кодом. Фактически он занимается «отмыванием» GPL от кода, который теперь можно использовать, не подчиняясь первоначальной лицензии, так как новый код получается под лицензией Copyleft.
К примеру, Copilot выдает построчно код широко известной функции генерации обратного квадратного корня из игры Quake III Arena, код которой открыт под лицензией GNU GPL 2.0.
Разработчик культовых игр Джон Кармак пояснил по этому поводу, что ранее хотел выпускать исходный кода разработок ID Software под лицензией BSD, но его партнеры были против. Он считает, что у GPL отрицательная виральность, а под BSD код принес бы больше пользы сообществу.
Позиция GitHub по этому вопросу — модель машинного обучения Copilot создает производные работы из ранее полученных входных данных, что может считаться производным продуктом программного обеспечения фактически под лицензией Copyleft или AGPL. Также GitHub утверждает, что Copilot обычно не воспроизводит точные фрагменты кода. Компания приводит статистику, что как часто это происходит — в 0,1% случаев.
Принцип работы GitHub Copilot.
Также пользователи GitHub Copilot заметили проблемы с безопасностью проекта. Алгоритм подставляет реальные секреты безопасности. Сервис «второго пилота» выдает валидные ключи API из репозиториев с открытым исходным кодом. Фактически это вина владельцев этих проектов, так как они коммитили ключи API внутри репозиториев, а сервис «второго пилота» их нашел и транслирует. По информации одного из разработчиков в Twitter, генеральный директор GitHub Нат Фридман в курсе проблемы, но компания не останавливает закрытое тестирование сервиса.
29 июня 2021 года Microsoft и GitHub представили нейросетевого помощника программиста Copilot («второй пилот»). Система GitHub Copilot обучена работать с различными фреймворками и языками программирования. Текущая техническая предварительная версия сервиса больше всего заточена для работы с Python, JavaScript, TypeScript, Ruby и Go.
GitHub Copilot работает на базе OpenAI Codex. Решение OpenAI Codex генерирует код значительно более эффективно, чем GPT-3. Алгоритм обучали на датасете из терабайтов общедоступного кода.
Copilot вышел в виде плагина редактора Microsoft Visual Studio Code и функции браузерного редактора кода GitHub Codespaces после регистрации в программе тестирования техноческого превью сервиса.
ivanovdev
классная штука, не понимаю тех, кто выступает против — в этом же вся суть опенсорса — шарить свое решение проблемы со всеми.
Если так не хочется, то репозиторий можно сделать приватным и приглашать туда только тех, кому хотите показать свой код.
dartraiden
«Опенсорс» не равно «свободное ПО». И не всегда он направлен на то, чтобы «шарить решение». Например, разработчик может опубликовать исходники, чтобы параноидально настроенные пользователи могли убедиться в отсутствии закладок и самостоятельно собирать себе ПО. Но это не означает, что разработчик согласился позволить другим создавать производные произведения.
hiker
Есть даже термин «source-available software»: en.wikipedia.org/wiki/Source-available_software
leventov
Вы не чувствуете, что в вашей аргументации есть проблемы? Если человек пришел в ваш реп и глазами увидел код, а потом по памяти использовал тот же прием (или да, даже полностью скопировал у себя какую-то функцию), он нарушил вашу лицензию? Если да, в чем ваш подход отличается от патентов? На самом деле, ваш подход даже хуже патентов, потому что у патентов хотя бы есть срок протухания, а у вашего кода, в теории, нет.
Если человек сам мог вполне написать такой же код, как и вы, но случайно увидел ваш код, он больше не имеет права его написать, даже если код — объективно лучший для решения какой-то проблемы? А если он переименует переменные и поменяет пару несущественных деталей, то уже имеет? А Github Copilot имеет права применять тот же трюк, добавляя какие-то эквивалентные преобразования к своему выводу?
В сфере лицензирования ПО, патентов, копирайта, и т. д. очень много подобных проблем. Если вы — программист, вы почувствуете, что тут пахнет "плохими абстракциями", дырявыми системами которые не решают настоящую проблему, а только затыкают костылем какую-то дыру.
Ritan
А чем отличается сделанное Copilot от того, чтобы человек пришёл в существующий репозиторий и нажал Ctrl-C?
А если в буфере обмена флипнется один бит и при вставке название переменной изменится, то это уже будет производная работа или ещё нет?
leventov
Я считаю, что вся сфера лицензирования ПО и сопутствующий понятийный аппарат, вроде "производной работы" — это клубок из плохих абстракций. Это все должно быть упразднено.
Ritan
Ну допустим, что плохих. Есть предложения лучше? Причём не "всё взять и поделить" а что-то, что устроит всех участников процесса
ilammy
Тем, что машины не могут нарушать законы. Это только для людей. Поэтому возникает интересный казус. Это как «украл у одного — это плагиат, украл у многих — провёл мета-исследование». Нет какой-то чёткой линии.
pdragon
Правильно! Засудят не машинку а конечного пользователя что скопипастил через нее код ибо машинка инструмент а не субъект права, вот когда машинка будет разумна, тогда тоже будет субъектом и ее можно будет наказывать, например садить на электрический стул (условно)
Ritan
Ну так у Copilot есть пользователь. Т.е. нарушает лицензию он получается?
Тут как и у машины с автопилотом - в случае аварии кто-то в ней окажется виноват. И это будет либо пользователь либо производитель. Т.е. можно ещё попробовать доказать, что лицензию нарушает сам MS, ибо берёт код, не учитывая лицензию
ilammy
Так вот в том и дело, что скорее всего нет.
Насколько я помню то, что читал в интернетах, если AI берёт какой-то код и смотрит на него, то это fair use и исходная лицензия на результат не перетекает. Сгенерированный код — это произведение того, кто использовал AI (то есть Microsoft, потому что на их серверах крутится), и вы используете результат на условиях Microsoft.
Если AI генерирует ну прям совсем похожий код, который триггерит правообладателей обучающей выборки — то вы как пользователь, вероятно, сможете прикрыться тем, что «ничего не знаю, мне нейронка MS это выдала, с них спрашивайте».
Выдержит ли это проверку в суде — вопрос другой. Я не юрист.
zartarn
Тут наверно можно попытаться подтянуть аналогию с реверсом.
Отреверсил алгоритм и написал — плохо, нарушение копирайте.
Один отреверсился, написал документацию, а ты взял документацию и написал реализацию — хорошо, не нарушено.
С натяжкой можно и тут так же. Правда я не знаю как именно, но напрашивается именно такая логика.
ilammy
Какая там аргументация? Человек просто напоминает, что лицензия на код вовсе не обязана давать вам право его копировать или перерабатывать. Смотреть и восхищаться — сколько угодно. Копировать, дорабатывать, и перелицензировать другим — нет.
Не юридический прецедент, но есть случаи, когда вам не дадут работать над кодовой базой, если вы имели доступ к другой кодовой базе, покрытой патентами. Классический пример: Wine не принимает патчей, если вы когда-либо работали над Windows.
Повторюсь, это не юридический прецедент или правило, а просто практика «кабы чего не вышло». Какие только ритуалы не придумаешь, чтобы прикрыть попку от патентного преследования.
IIRC, судебная практика теж же США считает, что машинная обработка произведений — fair use, а копирайт на результат получает тот, кто пользуется инструментом.
Отсюда и куча интересных вопросов.