Или Почему у вас должны быть сомнения относительно лицензионных соглашений с участниками.

В уголке экосистемы webpack живет небольшой, в основном незаметный модуль: webpack-log. webpack — это проект JavaScript Foundation, и вклады в webpack регулируются лицензионным соглашением участника JSF (CLA). В августе 2018 года администратор webpack-contrib скопировал код из одного из моих модулей в этот проект оптом, дословно и без сохранения лицензии. Это короткая поучительная история о моих попытках исправить это.

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

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

Обновление (3 ноября 2018 г., 23:12 UTC): после публикации и распространения этой статьи проект webpack предпринял шаги для исправления ситуации. Прискорбно, что эта статья потребовала принятия мер, но это ценно. Я не знаю, участвовал ли JSF в средстве правовой защиты. Эта статья по-прежнему должна служить предупреждением о лицензировании, авторском праве и лицензионных соглашениях с участниками.

Предыстория

Я хочу быстро поделиться некоторой предысторией, которой я ранее не делился публично, чтобы проблема, ситуация и ссылки, содержащиеся в этом посте, имели некоторый контекст для читателя.

В середине июня 2017 года руководство webpack связалось со мной, чтобы помочь с экстренным исправлением для довольно серьезной дыры в безопасности SSL в webpack-dev-server, потому что я уже внес кое-какой вклад в этот проект. Вскоре после этого меня пригласили в качестве сопровождающего, а затем администратора webpack-contrib и члена основной команды webpack. В то время я также познакомился с программой оплаты вкладчиков и активно участвовал в ней. Как новый муж с нашим первым ребенком на подходе, эта программа очень помогла в создании нашей новой семьи, и я извлекла из нее пользу.

Я создал кучу новых модулей для сообщества веб-пакетов в webpack-contrib и предпринял согласованные усилия, чтобы изменить статус-кво в проекте и в пользовательском опыте. Одним из этих модулей оказался webpack-log. Цитируя любимый фильм, «Борюсь за пользователей». Но я был наивен. Я нажимал слишком сильно, слишком быстро и сильно недооценивал глубокий кумовство и значительное поклонение героям, которые существуют в организации вебпака. Кульминация этого произошла в то же время, когда у организации начало заканчиваться финансирование, что вынудило изменить способ распределения и распределения пожертвований, с чем я категорически не согласен. Как член основной команды, я был обязан заявить о своем несогласии. Более поздняя, ​​злополучная попытка, которую я предпринял, чтобы заменить CLI по умолчанию для веб-пакета, привела к плохой коммуникации внутри основной команды и со стороны сопровождающих, неверным решениям руководства и, в конечном счете, стала соломинкой, которая убедила меня уйти из команды.

Связь с моей стороны не была идеальной. Я могу быть дерзким, страстным и иметь глубокое чувство гордости за код, который я пишу. Я признаю свои недостатки. Несмотря на 18 месяцев самоотверженной работы, несколько новых проектов на благо пользователей и огромный выигрыш в пользовательском опыте веб-пакета, впоследствии меня обвинили в нарушении несуществующего Кодекса поведения, обмане пользователей и в том, что проект был признан вором. плохой разработчик и токсичный для большинства членов организации. Те участники, которые не согласились, не выступали публично в мою защиту.

Меня избегали, изгоя — открытое несогласие не приветствуется в вебпаке.

Введите журнал webpack

Я увлекся вебпаком, потому что его начала использовать компания, в которой я работал в то время. Я был ошеломлен тем, насколько плохим был пользовательский интерфейс для веб-пакета. В декабре 2017 года я собрал webpack-log, чтобы попытаться обеспечить некоторую согласованность выходных данных журнала, которые генерируются веб-пакетом и инструментами экосистемы, и чтобы мои глаза немного меньше кровоточили при его использовании.

Незадолго до этого я создал loglevelnext, который в то время был ответвлением все еще очень любимого и дико популярного loglevel. Я сделал форк, потому что в то время я предлагал изменения в loglevel, с которыми сопровождающий не мог согласиться. (Я люблю открытый код за это!). loglevelnext был проектом, созданным для работы и используемым в основном коллегами внутри среды разработки. Я использовал loglevelnext в webpack-log в качестве зависимости. Набор функций был подходящим и соответствовал целям, которые я преследовал для webpack-log как в консоли, так и в браузере.

Итак, webpack-log продолжал использоваться в новых проектах webpack-contrib, которые я создал, модулях webpack, которые я поддерживал, и в нескольких сторонних модулях, и он тихо сидел в углу.

Любопытно скопированный код

Теперь, я не шлюха для подсчета загрузок, но я проверяю их время от времени из любопытства и по разным другим причинам. В сентябре, через месяц после фиксации копии в webpack-log, я заметил резкое падение уровня загрузок lognext, и этот webpack-log больше не зависел от модуля. Естественно; Я исследовал.

После того, как я поссорился с организацией webpack, почти все проекты, которые я вносил, были помечены как [DEPCRECATED], пользователи были уведомлены о том, что они больше не поддерживаются, а код, который я вносил, был стерт из истории git. » вообще. В том же месяце loglevelnext был полностью скопирован в webpack-log и удален как зависимость. Странно, но ок.

Но не ОК. Моя лицензия на loglevelnext не была сохранена. Мой код был фактически украден. Любопытное событие, учитывая ранее упомянутое устаревание и перезапись истории git.

Я сразу подумал о регистрации DCMA. Я имел полное право сделать это, но в конечном итоге это навредило бы пользователям. Вместо этого я съежился и решил открыть вопрос.

Проблема

Проблема Github началась достаточно просто. Удивительно, но члены организации даже не были в курсе того, как должна быть атрибутирована лицензия или можно ли использовать стандартную лицензию MIT с лицензионным соглашением JavaScript Foundation Contributor. Сопровождающий коммита копии пытался исправить это, добавив мое имя в файл LICENSE проекта, но провалил эту попытку. Добавив мое имя в этот файл лицензии таким образом, они предоставили мне (и другому лицу) авторские права на весь проект. Кто-то может подумать, что в этом нет ничего страшного, и, по большому счету, это, вероятно, не так, но это неправильное лицензирование. Вместо этого следовало бы включить файл LICENSE из loglevelnext в каталог скопированного кода. Это ограничило бы мои авторские права только моим кодом. В качестве альтернативы они могли бы вставить авторские права в качестве заголовка в рассматриваемый файл.

Суть ситуации сейчас в том, что, скопировав loglevelnext в проект webpack-log, фактически сделав хард-форк и внедрив проект в рамках принадлежащего JSF webpack-contrib, пользователь утверждал, что может обойти процесс внедрения JSF, скопировав код под лицензией MIT в проект и отправив код в соответствии с CLA.

Цитировать члена правления JSF в номере:

В JS Foundation есть процесс принятия проектов. Копирование кода в организацию, поддерживающую JSF, при удалении старой лицензии (или вставке лицензии JSF) — определенно не тот процесс. Чтобы гарантировать, что у нас есть законные права на программное обеспечение, нам нужно, чтобы автор(ы) передали право собственности.

Похоже, здесь произошло то, что большое количество чужого кода было скопировано из стороннего проекта в этот без указания авторства и без лицензии, указанной в их коде. Так что теперь де-факто кажется, что он имеет лицензию JSF (поскольку он находится в этом репозитории), но код не лицензирован для JSF. Вы не можете избежать принятия JSF чужого проекта, скопировав весь исходный код проекта в свой.

И именно здесь лицензия MIT и JSF CLA становятся очень, очень туманными. После этого проблема становится вспыльчивой.

Я признаю; Я был язвителен в своем последнем ответе, прежде чем проблема была закрыта. Я должен был сделать лучше там. У меня есть серьезные проблемы с принятием ложных заявлений о себе и с тем, что кто-то настолько наивный в отношении ситуации искажает мои намерения. К сожалению, после этого обмена мнениями последовало обзывание со стороны члена организации, и проблема была закрыта и заблокирована (в частности, без упреков). Результатом этой проблемы стал запрет на использование репозиториев организации webpack и webpack-contrib.

Однако проблема с авторскими правами сохраняется, и члены организации webpack/webpack-contrib больше не обращались к ней.

Юридические орлы

После того, как меня сразу же забанили как организации webpack, так и организации webpack-contrib, я обратился со своими жалобами к следующему логическому источнику: юридическому отделу JavaScript Foundation. Поскольку webpack — это проект JSF, я подумал, что их юридический отдел наверняка сможет исправить это, учитывая, что один из их членов поддерживает резолюцию.

Все, с кем я разговаривал в юридическом отделе JSF, были чрезвычайно вежливы, и общение было превосходным. На этом положительный опыт закончился. После месяца бездействия я связался с ними, чтобы сообщить о своем намерении написать эту статью. Чисто из любезности так и заявил. Через несколько дней со мной связался новый представитель их внешнего консультанта и сообщил, что некоторые обязанности перешли к другому. Они просили больше времени, и я с энтузиазмом предоставил его; Я думал, что дополнительной недели будет достаточно. Но после того, как прошло почти две недели без каких-либо видимых действий, ни резолюции, ни заявления о позиции со стороны JSF, я должен считать взаимодействие с JSF неудачным. К сожалению, разделенные опасения по поводу бездействия юридического отдела JSF, похоже, подтверждаются.

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

В заключение

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

С тех пор я перевел большинство своих личных проектов на Общедоступную лицензию Mozilla с авторским левом, что должно (надеюсь) помочь предотвратить подобный сценарий в будущем в любом проекте под управлением JavaScript Foundation.

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

Ваше здоровье!

Первоначально опубликовано на shellscape.org 3 ноября 2018 г.