Нажмите сюда: совместимы ли ваши плагины WordPress с лицензией GPL?
Опубликовано: 2023-10-06Добро пожаловать в Press This, подкаст сообщества WordPress от WMR. В каждом выпуске участвуют гости со всего сообщества и обсуждаются самые важные проблемы, с которыми сталкиваются разработчики WordPress. Ниже приводится транскрипция оригинальной записи.
При поддержке RedCircle
Док Поп : Вы слушаете Press This, подкаст сообщества WordPress на WMR. Каждую неделю мы освещаем членов сообщества WordPress. Я ваш ведущий, Док Поп. Я поддерживаю сообщество WordPress своей ролью в WP Engine и своим вкладом в TorqueMag.io. Вы можете подписаться на Press This на RedCircle, iTunes, Spotify или в вашем любимом приложении для подкастов или загружать выпуски прямо с WMR.fm.
Если вы когда-либо участвовали в проекте с открытым исходным кодом, вы знаете, что все дело в сотрудничестве и инновациях, но есть малоизвестная проблема, с которой могут столкнуться многие разработчики, пытаясь обеспечить, чтобы их плагины оставались на правильной стороне GPL, GNU, Генеральная общественная лицензия. Это не просто вопрос соблюдения. Речь идет о сохранении духа открытого исходного кода.
Итак, сегодня у нас есть специальный гость, Джефф Пол, директор по открытому коду в 10up, который поделится революционным решением, которое он представил на WordCamp в США в этом году. Представьте себе, что у вас есть инструмент, который автоматически сканирует вашу кодовую базу, чтобы гарантировать совместимость вашего плагина с лицензией GPL, даже когда вы добавляете новые функции и зависимости.
Именно об этом мы и поговорим сегодня. Но прежде чем мы углубимся в это, Джефф, можешь ли ты рассказать нам историю своего происхождения WordPress?
Джефф Пол : Конечно. Я не знаю, есть ли у меня точный год. Это было, наверное, начало 2000-х. У меня был личный сайт на бывшей CMS, кажется, он назывался Geeklog. И между этим, моим тогдашним хостинг-провайдером и неизвестно сколькими другими факторами произошел коллапс контента в CMS.
И поэтому в то время я просто искал, чем бы это заменить. Я нашел WordPress, и он сработал для того, что мне было нужно. Знаете, я сам не пошел по пути создания CMS, что многим кажется хорошей историей происхождения. Но это было, назовите это, я не знаю, с 2004 по 2007 год, где-то в этом диапазоне, но я не пересекал границу, внося свой вклад, до выпуска WordPress 4.7, когда я присоединился к команде разработчиков там с Хелен Хоу-Санди и Аарон Джорбин. Итак, я провел много лет, будучи потребителем проекта, и только через некоторое время я стал его участником и, вы знаете, с тех пор продолжаю идти по этому пути. Ну, вы знаете, на данный момент двойной потребитель и участник.
ДП : И вы также внесли очень активный вклад в ядро WordPress. 10up поддерживает десятки плагинов в репозитории плагинов, включая ElasticPress, Distributor, ClassifAI. Все они доступны в репозитории wordpress.org и поддерживаются на GitHub публично и с использованием методов открытого исходного кода.
Вы хорошо знакомы с темой, в которую мы собираемся углубиться. Почему бы нам просто не начать с репозитория WordPress, например, с репозитория плагинов WordPress? Расскажите нам быстро, что такое репозиторий WordPress и каковы правила загрузки в него чего-либо?
ДП : Конечно. Таким образом, репозиторий WordPress размещается на WordPress.org, проекте с открытым исходным кодом, отдельно от WordPress.com, отдельно от любого другого хоста в экосистеме, отдельно от сторонних компаний или дистрибьюторов плагинов. И это то, что напрямую связано с каждой установкой WordPress. Когда кто-то находится в администраторе WordPress и ищет плагин или тему, этот поиск осуществляется через репозиторий плагинов WordPress.org и репозиторий тем, доступный в администраторе WordPress. И то же самое на WordPress.org. По сути, там доступен тот же поиск, тот же контент.
Что касается внесения чего-либо в список, группа проверки плагинов wordpress.org имеет набор подробных рекомендаций, что можно и чего нельзя делать для разработчиков плагинов. А затем необходимо выполнить фактический рабочий процесс отправки, чтобы выполнить эту первоначальную отправку в репозиторий плагинов wordpress.org. Как только это будет одобрено, для вашего плагина будет создан репозиторий SVN. И, знаете, любые обновления, релизы и т.п. перекидываются туда в SVN. И именно здесь в настоящее время все живет и дышит для вещей, доступных для поиска на WordPress.org или в панели администратора WordPress.
Д.П .: Я считаю, что одно из первых правил заключается в том, что все, что вы помещаете в репозиторий WordPress, должно соответствовать лицензии GPL, включая шрифты и изображения, а не только код. Это верно?
ДП : Верно. Верно. В буквальном смысле первое правило команды разработчиков плагинов заключается в том, что плагины в целом должны быть совместимы с GPL. Это та же лицензия, которой следует WordPress, и, как вы упомянули, код, изображения и сторонние библиотеки должны быть совместимы с GPL. Знаете, это не обязательно должна быть настоящая лицензия GPLv2, есть и другие, совместимые с GPL, но да, шрифты, изображения, сторонние библиотеки, зависимости, все это должно быть совместимо с GPL, а не только код, который пишет разработчик плагина, верно? Все остальное также должно быть совместимо с GPL.
ДП : И просто для того, чтобы мы не заставляли слушателей ждать, мы могли бы просто приступить к делу. Ваш разговор был о том, как проверить совместимость GPL с помощью действий GitHub. Можете ли вы провести нас через этот процесс?
ДП : Да, это отчасти связано с моей ролью директора по открытому исходному коду в 10Up. Возможно, это не то, о чем обычный автор плагинов, одного или даже нескольких плагинов, может знать или беспокоить их. Но я думаю, что в какой-то момент я почти буквально проснулся посреди ночи с мыслью: «Я не знаю, знаю ли я наверняка, что вы знаете, все изображения, все сторонние зависимости, все шрифты и так далее, совместимы с GPL и пытаются найти способ масштабирования для нас в 10up, где у нас есть, как вы упомянули, десятки плагинов, которые доступны в репозитории wordpress.org или на GitHub. Источник там.
Я не хотел проходить через все это тщательной расческой и проверять все исходные зависимости, которые мы использовали для плагинов, и выяснять, ну, знаете, как они лицензируются. Это может быть головной болью для одного плагина, не говоря уже о нескольких. И через некоторые поисковые запросы в Интернете я обнаружил, что существуют некоторые инструменты, некоторые действия GitHub, которые можно использовать для эффективной автоматизации этого процесса, чтобы, вы знаете, не было просто однократного сканирования репозитория, чтобы сказать: да, совместимы вы или нет, но это не так, но продолжайте сканирование, чтобы любые будущие исправления ошибок, улучшения и т. д., которые могли либо добавить новую зависимость, либо, возможно, увеличить зависимость в вашем плагине, что, возможно, изменило то, как что-то было. Имея лицензию, я пытался понять, что это происходит, и сделать такой первый проход, чтобы это не стало просто ручным, интенсивным процессом и чем-то вроде постоянного кошмара, чтобы гарантировать, что , эта совместимость.
Так что да, я имею в виду, я думаю, что первоначальное беспокойство, которое у меня было, заключалось в том, что я этого не знал - у меня не было возможности узнать, что какая-то функция, которую мы добавляем, если мы включаем новую зависимость, совместима с GPL. , а затем поняли, что мог быть еще худший сценарий, когда у нас были выпущенные плагины, которые уже были несовместимы с программным обеспечением.
И это была своего рода первая проблема, которую я хотел попытаться решить. Это первое первоначальное сканирование, верно? Являются ли наши отдельные плагины и все ли те, которые поддерживает 10up, действительно совместимыми с заявленной нами лицензией? И, надеюсь, скрестим пальцы. А затем, вы знаете, дальше идет постоянная проверка того, чтобы будущие пиарщики, будь то из моей команды и практики открытого исходного кода в 10up, в целом с другими сотрудниками 10up, вносящими свой вклад в проекты, или просто кем-то из сообщества, обеспечивающим что они поддерживают лицензирование, которое мы указали в самих плагинах.
ДП : И просто чтобы прояснить здесь, если вы этого не сделали, если вы обнаружили благодаря этому, что существовала какая-то существующая зависимость или что-то там, что не соответствовало требованиям, это просто своего рода разветвление, позор со стороны сообщество или возможно ли, что вам грозит штраф за несоблюдение правил?
ДП : Значит, я не юрист, верно? Итак, вы знаете, я не имею права юриста давать этот комментарий, так что, вы знаете, это не действительная юридическая консультация, а подход, который я использовал, когда запускал эти сканирования наших плагинов, потому что, опять же, я не Знаете, на самом деле я очень нервничал, выполняя все это, из-за того, какими будут результаты.
Мой план заключался в том, что если я обнаружу, что существует плагин, который использует что-то, не совместимое с GPL, лучшим подходом будет либо удалить эту зависимость, заменить ее на что-то другое, эффективно устранить это, какова бы ни была проблема. было и побыстрее выпустить новую версию, да?
Я чувствовал, что мало что можно сделать для того, что уже было опубликовано и выпущено. С моей точки зрения, ничто из этого не было бы сделано с намеренной попыткой обойти лицензирование. Знаете, в какой-то момент это была бы просто человеческая ошибка, что-то вроде проблемы безопасности, о которой сообщается автору плагина. Мол, лучший подход — поработать над исправлением и быстро выпустить релиз, чтобы люди, которые следят за плагинами, находились в более безопасном состоянии, будь то проблема безопасности или, в данном случае, проблема лицензирования. Конечно, если бы существовал плагин, который приносил бы значительный доход, и если бы, возможно, могли быть причины показать, что иметь что-то нелицензионное было известной ошибкой, кроме того, я не верю, что кто-либо в этой области делает это намеренно, но я думаю, что единственные, которые потенциально могут подвергаться юридическому риску, - это те, которые приносят значительный доход и которые станут объектом лицензирования.
Так что да, я думаю, короче говоря, если кто-то запускает сканирование и обнаруживает проблему в существующей базе кода, я думаю, что лучший подход - это выпустить выпуск, обновленную версию, вы знаете, вызвать в журнале изменений, укажите в примечаниях к выпуску, что было изменено и почему, и будьте откровенны в этом. Но на данный момент, я думаю, это лучшее, что может сделать автор плагина в данном случае. К счастью для плагинов 10up, мы не столкнулись с таким сценарием. К счастью, все было совместимо, и я надеюсь, что подавляющее большинство людей, идущих по этому пути и настраивающих некоторую автоматизацию, чтобы обеспечить такой уровень комфорта, получат аналогичный опыт.
Ожидание запуска действий GitHub в течение пары секунд или минут может оказаться немного нервным и тревожным. Но, знаете, как только окажется, что все проходит, я думаю, большинство людей, вероятно, окажутся в таком состоянии.
Д.П .: Говоря о том, чтобы устроиться поудобнее, мы собираемся сделать небольшой перерыв. Так что расслабьтесь и расслабьтесь, а после короткой рекламной паузы мы вернемся к нашему интервью с Джеффом Полом, директором по инициативам открытого исходного кода в 10up, о том, как поддерживать ваши плагины в соответствии с GPL. Оставайтесь с нами, чтобы узнать больше после этого короткого перерыва.
ДП : Добро пожаловать обратно в Press This, подкаст сообщества WordPress. Я Док. Я говорю с Джеффом Полом об использовании действий GitHub, чтобы убедиться, что ваш код и ваши плагины соответствуют GPL. Перед перерывом мы немного углубились в эту тему и поговорили о последствиях, если вы не будете полностью соблюдать требования. Думаю, мне хотелось вернуться к этой конкретной теме. Есть действия GitHub, которые может создать каждый. Но Джефф, в своем выступлении на WordCamp вы упомянули, что используете официальное действие GitHub, я думаю, с некоторыми небольшими изменениями. Можете ли вы сказать нам, как называется действие, которое люди должны искать, чтобы иметь возможность это сделать?
ДП : Конечно. Это действие по проверке зависимостей. Итак, GitHub.com, действия с косой чертой, зависимость с косой чертой, проверка дефиса, действие с дефисом. Надеюсь, в стенограмме это правильно отражено. Если возникнут какие-либо проблемы с обнаружением, что у меня есть заметки об этом на моем сайте, в сообщении, освещающем это выступление. Итак, ссылки доступны, но если вы ищете действие по проверке зависимостей на рынке действий GitHub, вы, надеюсь, найдете официальную ссылку, которую я использовал, и она делает больше, чем просто проверяет зависимости плагинов. Он будет проверять не только лицензии. Он также может проверять наличие уязвимостей и других вещей в зависимостях вашего плагина. Но единственное, для чего я его использую, и основная цель, для которой я его использую, — это проверка недействительных лицензий в зависимостях наших плагинов.
ДП : И это действие, с помощью которого вы можете указать, какой тип GPL вы хотите соблюдать. Вы можете включить лицензию, и она проверит это. И есть также возможность, если вы поддерживаете, скажем, десятки плагинов, которые вы все равно сможете использовать в качестве источника того же самого. Вы можете разместить все эти плагины, которые вы поддерживаете, в одном каталоге, так что вам не придется каждый раз приходить и обновлять его, верно?
ДП : Верно. Ага. Я вижу, что вы выслушали мое выступление на WordCamp в США, спасибо вам за то, что вы были в аудитории, не спали и слушали, или вы видели это на YouTube или WordPress.tv, но да, есть два стандартных потока, которых я ожидал, ребята следить здесь.
Во-первых, автор плагина, который отвечает за один или очень небольшое количество плагинов, или кто-то, у кого их больше в масштабе один к n, у него есть столько плагинов, которые он поддерживает. Таким образом, для людей, у которых есть только один, действие GitHub, как вы его определили, может эффективно работать в этом файле рабочего процесса, где вы фактически вызываете это действие проверки зависимостей и сканируете его в своем репозитории, есть две переменные среды. или параметры, которые вы можете предоставить. Первым действием является разрешение лицензий, а следствием этого является отказ в лицензиях. Вы не можете делать то и другое одновременно. и мой подход заключался в том, чтобы использовать разрешающие лицензии, а не запрещающие лицензии. Мысль была… Я бы предпочел случай, когда я забыл включить GPL-совместимую лицензию в список разрешенных лицензий и фактически получил ложное срабатывание, верно? Например, получить зависимость, помеченную как несовместимую с моими лицензиями, потому что ее лицензия была просто чем-то, что я забыл добавить в список, в отличие от того, если я использую список запрещенных лицензий и забыл отклонить лицензию, которая мне не нужна, тогда это может означало, что зависимость пройдет и не будет обнаружена этой проверкой.
Итак, я настоятельно рекомендую использовать этот список разрешенных лицензий. А в случае, когда кто-то поддерживает один плагин, нужно просто использовать этот параметр и этот список лицензий в файлах вашего рабочего процесса. Итак, для 10up для наших плагинов это каталог GitHub с точкой, а затем подкаталог рабочих процессов. И затем у нас есть рабочий процесс проверки зависимостей, который вызывает это действие проверки зависимостей, имеет список разрешенных лицензий. Вы можете просмотреть мою презентацию либо на моем сайте, либо найти обсуждение в Интернете и просмотреть список имеющихся у нас лицензий. Вы также можете изучить любой из репозиториев 10up на GitHub и просмотреть лицензии, которые мы изучаем.
Наши файлы рабочего процесса достаточно хорошо документированы и как бы объясняют, как мы определили то, что, по нашему мнению, было совместимым с нашими плагинами лицензиями. Таким образом, люди могли бы использовать список, который у нас есть, могли бы использовать часть этого списка, могли бы провести собственное исследование, возможно, чтобы почувствовать такой уровень комфорта. Но мы провели довольно длительное исследование, чтобы убедиться, что то, что мы использовали в нашем списке разрешенных лицензий, действительно совместимо с тем, что мы заявляем. И почти по умолчанию для 10up мы используем GPLv2 или новее, поэтому все лицензии, которые мы перечисляем, в частности, совместимы с GPLv2.
То же самое относится и к автору плагина, который поддерживает только один плагин. Как вы упомянули, в случае, если у кого-то есть более одной или нескольких лицензий, вы можете иметь отдельный файл политики лицензий, в котором фактически объявлены все эти лицензии. А затем вы ссылаетесь на этот файл конфигурации, этот файл политики лицензирования в рабочем процессе своих плагинов, так что, как вы упомянули, на данный момент у вас действительно есть только одно место, где вам нужно поддерживать список совместимых лицензий. Если вдруг появится новая инициативно одобренная лицензия с открытым исходным кодом, которая окажется для нас совместимой с GPLv2, верно? Если на сцене появится новый, то его можно будет добавить в список, а возможно, если его по каким-то причинам придется удалить, не обязательно делать это в десятках локаций. Вы делаете это в одном месте, а затем все файлы рабочего процесса, ссылающиеся на эту конфигурацию, немедленно обновляются с использованием этого нового списка лицензий.
ДП : Это все автоматизировано, поэтому, если кто-то делает запрос на включение, он делает это только для вас. Верно?
ДП : Верно, верно. Итак, когда мы создаем файлы рабочего процесса в наших репозиториях, у нас есть триггер для запроса на включение. Таким образом, вы также можете настроить его для запуска по расписанию CRON, вы можете запускать его еженедельно или ежемесячно, но на самом деле, как только вы сделаете этот первый запуск, вы сканируете всю кодовую базу зависимостей, и это действительно работает. вперед, вам действительно нужно проверять только те запросы на включение, которые поступают. Вероятно, вы также можете проверить отдельные коммиты, если вы не используете довольно строгую систему требования PR для любых ваших веток по умолчанию или стабильных для ваших плагинов.
Таким образом, могут существовать дополнительные триггеры, которые люди могут захотеть использовать. Для 10up мы, как правило, довольно строго требуем от PR разработки и создания ветвей, чтобы мы могли надежно использовать это действие и знать, что любые изменения в зависимостях, которые вводят новую или повышают версию, которая меняет лицензию, будут перехвачены этим действием. . Так что да, мы используем, разворачиваем или запускаем запросы на включение, но в зависимости от того, насколько строгие люди, вы можете, возможно, проверить отдельные коммиты в определенной ветке или даже запускать по расписанию ежедневно, еженедельно, ежемесячно, просто чтобы чувствовать себя комфортно, зная, что ваш код все еще проходит, что не существует каких-либо лицензий, несовместимых, в данном случае, с GPLv2 для 10up.
ДП : Мы собираемся сделать еще один небольшой перерыв. Когда мы вернемся, мы завершим наш разговор с Джеффом Полом о лицензиях GPL и, возможно, обсудим все, чего не затронули ранее. Так что следите за новостями после этого короткого перерыва.
ДП : Добро пожаловать обратно в Press This, подкаст сообщества WordPress. Мы завершаем шоу и собираемся немного переключить передачу. В последнее время были некоторые разговоры о процессе проверки репозитория плагинов, и, по сути, констатируя тот факт, что он немного медленнее, чем был в прошлом.
Некоторые люди говорят, что они знают, что на то, чтобы что-то было рассмотрено, уходят месяцы, тогда как, я думаю, я видел, что пик этого процесса составлял, может быть, четыре недели за большую часть моих лет в WordPress. Итак, Джефф, я знаю, что они обсуждали, возможно, какие-то изменения, которые они собираются внести в это. Можете ли вы рассказать нам, над чем сейчас работает команда?
ДП : Конечно. Ага. И я, знаете ли, усиливаю то, что вы сказали. Я думаю, что исторически я видел, что все, что я отправлял, длилось менее двух недель и было намного быстрее, чем обычно сообщается. И это около 88 дней, или что-то неудачное для всех участников.
Я думаю, что в этой команде произошла некоторая текучесть кадров. Некоторые очень опытные старшие знания были потеряны. И люди, которые любезно вмешались, чтобы помочь заполнить эту пустоту, я думаю, все еще доходят до того момента, когда они могут иметь такую же производительность при обработке плагинов и проверке этих первоначальных материалов. И они пытаются автоматизировать некоторые из этих процессов. Итак, некоторые вещи, в которых, как вы знаете, компьютеры справляются лучше, чем люди, возможно, нет, например, использование стандартов кодирования WordPress и оттачивание тех случаев, когда сообщается о действительно критических ошибках, не так ли? Вместо того, чтобы человеку приходилось проходить и обрабатывать эти вещи, иметь программу проверки плагинов, которая запускается и проверяет вещи, которые можно автоматизировать, и помогает группе проверки плагинов просто получить быструю начальную паузу, например, являются ли вещи автоматизированными? Если да, то хорошо, погрузитесь в свой человеческий обзор и ускорьте процесс. Если сообщалось о вещах, которые по своей природе автоматизированы и не проходят, то, я думаю, это более быстрый ответ разработчику плагина: эй, мы определили эти первоначальные вещи в нашем сканировании, вы знаете, пожалуйста, разрешите эти а затем отправьте обновленный zip-файл, чтобы вернуть все в норму.
Итак, я знаю, что они работают над добавлением некоторой автоматизации, я думаю, что чем больше они смогут сделать, чтобы помочь им на этом пути, тем лучше, просто потому, что на данный момент имеется более тысячи плагинов, отставание огромно, и снова , никому там не помогая. Так что да, они работают над автоматизацией. Я знаю, что они хотят сделать больше, и я думаю, что если это область, в которой кто-то особенно одарён в автоматизации и хочет внести свой вклад, я думаю, что группа проверки плагинов хотела бы получить некоторую помощь в этом направлении. Так что, если это так, обязательно обратитесь в Slack.
ДП : И если говорить об общении, если у людей есть вопросы о вашем выступлении, которое вы сделали на WordCampUS, или просто о некоторых проектах, над которыми 10uP работает в пространстве с открытым исходным кодом, как лучше всего людям связаться с вами? ?
ДП : Конечно. Итак, мой сайт — jeffpaul.com. У меня там есть моя презентация. Если вы просто ищете GPL, это, вероятно, в любом случае будет одним из первых постов. В противном случае моя электронная почта [email protected] , моя рабочая электронная почта, гм, а затем почти все социальные сети. WordPress.org, GitHub, Twitter, косая черта X, и я @Jeff Paul, и вы сможете найти меня в социальных сетях таким образом.
ДП : Точно так же, если слушатели хотят найти примеры работы 10up на GitHub, я предполагаю, что это всего лишь 10up на GitHub?
ДП : Верно, github.com/10up. Все репозитории наших плагинов находятся в открытом доступе. Наша команда внимательно отслеживает новые выпуски и PR. Все они передаются на наш канал Slack, поэтому все, что у людей возникает, любые вопросы, любые обсуждения, они открываются там. Наша команда должна хорошо реагировать на них, но если нет, вы знаете, свяжитесь со мной в WordPress Slack, в Твиттере по электронной почте, любой из них сработает. Я всегда рад пообщаться об открытом исходном коде с людьми из сообщества.
ДП : Что ж, большое спасибо, что присоединился к нам сегодня, Джефф, было действительно здорово поговорить с тобой, и я много узнал о действиях, которые GitHub предлагает для запросов на включение и автоматизации этого процесса. Это очень полезно.
Если вы пропустили выпуск Press This на прошлой неделе, мы поговорили с Кармен Джонсон о шагах, которые вы можете предпринять, чтобы подготовить свой сайт к концу жизни MySQL 5.7 и о том, как подготовиться к MySQL 8. Так что это действительно хороший эпизод. можете проверить, и у нас есть еще много чего. Вы можете найти их на TorqueMag.io, если хотите найти расшифрованные версии. Благодарим за прослушивание Press This, подкаста сообщества WordPress на WMR. Вы можете следить за нашими приключениями в Твиттере, в журнале Torque Mag.
Вы можете подписаться на Press This на RedCircle, iTunes, Spotify или в вашем любимом приложении для подкастов или загружать выпуски прямо с WMR.fm. Я ваш ведущий, Доктор Популярность. Я поддерживаю сообщество WordPress посредством своей роли в WP Engine, и мне нравится каждую неделю освещать членов этого сообщества на PressThis.