Presione esto: ¿Sus complementos de WordPress son compatibles con GPL?

Publicado: 2023-10-06

Bienvenido a Press This, el podcast comunitario de WordPress de WMR. Cada episodio presenta invitados de toda la comunidad y debates sobre los problemas más importantes que enfrentan los desarrolladores de WordPress. La siguiente es una transcripción de la grabación original.

Desarrollado por RedCircle

Doc Pop : Estás escuchando Press This, un podcast comunitario de WordPress sobre WMR. Cada semana destacamos a los miembros de la comunidad de WordPress. Soy tu anfitrión, Doc Pop. Apoyo a la comunidad de WordPress a través de mi función en WP Engine y mis contribuciones en TorqueMag.io. Puede suscribirse a Press This en RedCircle, iTunes, Spotify o su aplicación de podcasting favorita, o puede descargar episodios directamente desde WMR.fm.

Si alguna vez ha contribuido a un proyecto de código abierto, sabrá que se trata de colaboración e innovación, pero existe un desafío poco conocido que muchos desarrolladores podrían enfrentar para garantizar que sus complementos permanezcan en el lado correcto de GPL, GNU, Licencia publica general. No es sólo una cuestión de cumplimiento. Se trata de preservar el espíritu del código abierto.

Así que hoy tenemos un invitado especial, Jeff Paul, director de código abierto de 10up, quien compartirá una solución revolucionaria que presentó en WordCamp US este año. Imagine tener una herramienta que escanea su código base automáticamente para garantizar la compatibilidad GPL de su complemento, incluso cuando agrega nuevas funciones y dependencias.

De eso es de lo que vamos a hablar hoy. Pero antes de profundizar en ello, Jeff, ¿puedes contarnos tu historia del origen de WordPress?

Jeff Paul : Claro. No sé si tengo el año exacto. Probablemente fue a principios de la década de 2000. Tenía un sitio personal que estaba en un CMS anterior, creo que se llamaba Geeklog. Y entre eso y mi proveedor de alojamiento en ese momento, y quién sabe cuántos otros factores, hubo un colapso del contenido en el CMS.

Entonces estaba buscando algo con lo que reemplazar eso en ese momento. Encontré WordPress y funcionó para lo que necesitaba. Ya sabes, yo no tomé el camino de crear un CMS, lo que parece ser una buena historia de origen para mucha gente. Pero eso fue, llámelo, no sé, del 2004 al 2007, en algún lugar en ese rango, pero no crucé la división para contribuir hasta el lanzamiento de WordPress 4.7 cuando me uní al equipo de lanzamiento allí con Helen Hou-Sandi y Aaron Jorbin. Entonces, pasé muchos años siendo consumidor del proyecto, y no fue hasta bastante tiempo después que me convertí en colaborador y he continuado en ese camino desde entonces. Bueno, ya sabes, doble consumidor y contribuyente en este momento.

DP : Y también has sido un colaborador muy activo del núcleo de WordPress. 10up mantiene docenas de complementos en el repositorio de complementos, incluidos ElasticPress, Distributor, ClassifAI. Todos ellos están disponibles en el repositorio de wordpress.org y se mantienen en GitHub, de forma pública y utilizando prácticas de código abierto.

Estás muy familiarizado con el tema en el que vamos a profundizar. ¿Por qué no comenzamos con el repositorio de WordPress, como el repositorio de complementos de WordPress? Cuéntanos rápidamente, ¿qué es el repositorio de WordPress y cuáles son las reglas para poder subir cualquier cosa al mismo?

JP : Claro. Por lo tanto, el repositorio de WordPress está alojado en WordPress.org, el proyecto de código abierto, separado de WordPress.com, separado de cualquier otro host en el ecosistema, separado de empresas o distribuidores de complementos de terceros. Y es lo que está directamente vinculado o vinculado a cada instalación de WordPress que existe. Cuando alguien está en el administrador de WordPress y busca un complemento o tema, esas búsquedas se realizan a través del repositorio de complementos y el repositorio de temas de WordPress.org, disponibles en el administrador de WordPress. Y de manera similar en WordPress.org. Efectivamente, allí está disponible la misma búsqueda y el mismo contenido.

En términos de incluir algo allí, el equipo de revisión de complementos de wordpress.org tiene un conjunto de pautas detalladas sobre lo que los desarrolladores de complementos deben y no deben hacer. Y luego hay que seguir un flujo de trabajo de envío real para realizar ese envío inicial al repositorio de complementos de wordpress.org. Una vez que se aprueba, se crea un repositorio SVN para su complemento. Y, ya sabes, cualquier actualización, lanzamiento, etc. se envía allí a SVN. Y ahí es donde actualmente vive y respira todo lo que está disponible para buscar en WordPress.org o dentro del administrador de WordPress.

DP : Creo que una de las primeras reglas es que todo lo que coloques en el repositorio de WordPress debe cumplir con la GPL, incluidas las fuentes y las imágenes, no solo el código. ¿Es eso correcto?

JP : Correcto. Bien. Literalmente, la primera regla del equipo de complementos es que los complementos en su totalidad deben ser compatibles con GPL. Esa es la misma licencia que sigue WordPress y, como mencionaste, el código, las imágenes y las bibliotecas de terceros deben ser compatibles con GPL. No tiene que ser necesariamente la licencia GPLv2 real, ya sabes, hay otras que son compatibles con GPL, pero sí, fuentes, imágenes, bibliotecas de terceros, dependencias, todo eso tiene que ser compatible con GPL y no solo la código que escribe un desarrollador de complementos, ¿verdad? Todas esas otras cosas también deben ser compatibles con GPL.

DP : Y para no hacer esperar a los oyentes, podríamos simplemente lanzarnos a ello. Su charla fue sobre cómo poder verificar la compatibilidad con GPL mediante acciones de GitHub. ¿Puedes guiarnos a través de ese proceso?

JP : Sí, esto se debe en parte a mi papel como director de código abierto en 10Up. Quizás no sea algo que un autor de complementos cotidiano, ya sabes, de un solo complemento o incluso de varios, pueda conocer o molestar. Pero creo que en algún momento me desperté casi literalmente en medio de la noche pensando: "No sé si estoy seguro de que sabes todas las imágenes, todas las dependencias de terceros, todas las fuentes". , etcétera, son compatibles con GPL y estamos tratando de encontrar una manera a escala para nosotros en 10up donde tenemos, como mencionaste, docenas de complementos que están disponibles en el repositorio de wordpress.org o también en GitHub. La fuente ahí.

No quería tener que pasar por todo eso con un peine de dientes finos y tener que verificar las dependencias ascendentes que estábamos usando para los complementos y descubrir, ya sabes, cómo se licencian. Eso podría ser un dolor de cabeza para un solo complemento, y mucho menos para varios. Y a través de algunas búsquedas en línea, identifiqué que había algunas herramientas, algunas acciones de GitHub que podrían usarse para ayudar a automatizar efectivamente ese proceso para que, ya sabes, no solo un escaneo único de un repositorio para decir, sí, eres compatible o no, no lo eres, pero continúas explorando para que cualquier futura corrección de errores, mejoras, etc., puedan agregar una nueva dependencia o tal vez eliminar una dependencia en tu complemento que tal vez haya cambiado cómo era algo. con licencia, poder verificarlo continuamente y hacer ese tipo de paso por primera vez era algo que estaba tratando de descubrir para que no se convirtiera en un proceso manual e intensivo y en una especie de pesadilla continua para garantizar que , esa compatibilidad.

Entonces, sí, quiero decir, creo que la preocupación inicial que tuve fue que no lo sabía; no tenía forma de saber que alguna característica que agregamos, si incluimos una nueva dependencia, era compatible con GPL. , y luego me di cuenta de que podría haber habido un escenario aún peor en el que teníamos complementos que se habían lanzado y que ya tenían incompatibilidades dentro de su software.

Y ese fue el primer problema que quería intentar resolver. Ese primer escaneo inicial, ¿verdad? ¿Nuestros complementos individuales y todos los que admite 10up son realmente compatibles con la licencia que declaramos? Y con suerte, cruzaremos los dedos para que así sea. Y luego, ya sabes, a partir de ahí, esa verificación continua para garantizar que los futuros RP, ya sean de mi equipo y de la práctica de código abierto en 10up, en general con otros 10upers que contribuyen a los proyectos, o simplemente cualquiera en la comunidad, garanticen que mantuvieron la licencia que indicamos en los propios complementos.

DP : Y solo para aclarar aquí, si no lo hizo, si descubrió a través de esto, que había, eh, alguna dependencia existente o algo ahí que, que no cumplía, es la ramificación simplemente, una especie de vergüenza por parte del comunidad o existe posiblemente un daño punitivo que usted podría sufrir por no seguir las reglas?

JP : Entonces no soy abogado, ¿verdad? Entonces, ya sabes, no tengo un sombrero de abogado para dar este comentario, entonces, ya sabes, no es un consejo legal válido, pero el enfoque que tomé mientras ejecutaba estos análisis en nuestros complementos, porque nuevamente, no Sabes, en realidad estaba bastante nervioso al ejecutar todo esto, cuáles serían los resultados.

Mi plan era que si descubría que había un complemento que estaba usando algo que no era compatible con GPL, el mejor enfoque sería eliminar esa dependencia, cambiarla por otra cosa y eliminarla de manera efectiva, cualquiera que fuera el problema. fue y lanzar rápidamente una nueva versión, ¿verdad?

Sentí que no había mucho que se pudiera hacer por lo que ya se había publicado y difundido. Desde mi punto de vista, nada de esto se habría hecho de manera intencionada para intentar eludir la licencia. simplemente habría sido, ya sabes, en algún momento, un error humano, algo parecido a un problema de seguridad que se informa al autor de un complemento. Por ejemplo, el mejor enfoque que existe es trabajar en una solución y publicar rápidamente una versión para que las personas que se mantienen al día con los complementos estén en ese estado más seguro, ya sea un problema de seguridad o, en este caso, un problema de licencia. Ciertamente, si hubiera un complemento que generara ingresos significativamente, y si tal vez pudiera haber razones para demostrar que fue un error conocido tener algo sin licencia, aparte, no creo que nadie en el espacio lo está haciendo a propósito, pero creo que los únicos que potencialmente estarían en riesgo legal serían aquellos que generan ingresos significativamente, que serían un objetivo para la concesión de licencias.

Así que sí, en pocas palabras, si alguien ejecuta un escaneo y encuentra un problema en su código base existente, creo que el mejor enfoque es emitir un lanzamiento, una versión actualizada, ya sabes, mencionarlo en el registro de cambios. mencione en las notas de la versión qué se cambió y por qué, sea transparente al respecto. Pero en ese punto, creo que eso es realmente lo mejor que puede hacer un autor de complementos en ese caso. Afortunadamente para los complementos de 10up, no nos encontramos con ese escenario. Afortunadamente, todo era compatible y espero que la gran mayoría de las personas que sigan este camino y configuren alguna automatización para brindarles ese nivel de comodidad tengan una experiencia similar.

Puede ser una espera un poco nerviosa y ansiosa durante un par de segundos o un minuto hasta que se ejecuten las acciones de GitHub. Pero, ya sabes, una vez que se demuestre que todo pasa, creo que la mayoría de la gente probablemente terminaría en ese estado.

DP : Hablando de ponernos cómodos, vamos a tomar un breve descanso. Así que siéntate y relájate, y volveremos después de la breve pausa comercial con más de nuestra entrevista con Jeff Paul, director de iniciativas de código abierto de 10up, sobre cómo mantener tus complementos compatibles con GPL. Estén atentos para más información después de este breve descanso.

DP : Bienvenido de nuevo a Press This, un podcast comunitario de WordPress. Soy doctor. Estoy hablando con Jeff Paul sobre el uso de acciones de GitHub para garantizar que su código y sus complementos cumplan con la GPL. Antes del receso, nos sumergimos un poco en esto y hablamos sobre las ramificaciones si no se cumple plenamente. Y supongo que quería volver a este tema específico. Hay acciones de GitHub que cualquiera puede crear. Pero Jeff, mencionaste en tu charla de WordCamp que usas la acción oficial de GitHub, creo, con algunos pequeños cambios. ¿Puedes decirnos cuál es el nombre de la acción que la gente debería buscar para poder hacer esto?

JP : Claro. Esa es una acción de revisión de dependencia. Entonces, GitHub.com, acciones de barra diagonal, dependencia de barra diagonal, revisión de guión, acción de guión. Con suerte, la transcripción lo entiende correctamente. Si hay algún problema, tengo notas sobre esto en mi sitio, en una publicación que cubre la charla. Por lo tanto, hay enlaces disponibles, pero si busca una acción de revisión de dependencias en el mercado de acciones de GitHub, con suerte encontrará el oficial que utilicé, y hace más que solo verificar las dependencias de los complementos. Verificará más que solo las licencias. También puede buscar vulnerabilidades y otras cosas en las dependencias de sus complementos. Pero lo único para lo que lo uso, lo principal para lo que lo uso, es para verificar si hay licencias no válidas en las dependencias dentro de nuestros complementos.

DP : Y esta es una acción que puedes configurar qué tipo de GPL quieres seguir. Puede incluir una licencia y se verifica con ella. Y también existe la posibilidad, si mantienes, digamos, docenas de complementos, que aún puedas obtener lo mismo. Puede tener todos esos complementos que mantiene todavía viniendo a ese directorio, por lo que no tiene que ir y actualizarlo cada vez, ¿verdad?

JP : Correcto. Sí. Veo que asististe a mi charla en WordCamp US, te felicito por estar entre la audiencia y estar despierto y escuchando, o lo captaste en YouTube o WordPress.tv, pero sí, hay dos flujos estándar que esperaría, amigos. para seguir aquí.

Uno, un autor de complementos que es responsable de uno o un número muy pequeño de complementos, o alguien que tiene más en la escala de uno a n, tiene esa cantidad de complementos que admite. Entonces, para las personas que solo tienen una, la acción de GitHub, tal como la definió, puede efectivamente dentro de ese archivo de flujo de trabajo donde efectivamente está llamando a esa acción de revisión de dependencia y haciendo que escanee su repositorio, hay dos variables ambientales. o parámetros que puedas proporcionar. Esa acción es permitir licencias y el corolario es negar licencias. No puedes hacer ambas cosas al mismo tiempo. y el enfoque que tomé fue permitir licencias en lugar de denegarlas. La idea era... Preferiría tener un caso en el que me olvidara de incluir una licencia compatible con GPL en la lista de licencias permitidas y obtuviera efectivamente un falso positivo, ¿verdad? Por ejemplo, marcar una dependencia como no compatible con mis licencias porque su licencia fue algo que olvidé agregar en la lista, en lugar de usar la lista de denegar licencias y olvidé denegar una licencia que no quiero, entonces eso podría habría significado que una dependencia pasaría y no quedaría cubierta por este control.

Entonces, mi recomendación extremadamente fuerte es seguir esa lista de licencias permitidas. Y en el caso de que alguien mantenga un único complemento, debe usar simplemente ese parámetro y esa lista de licencias en sus archivos de flujo de trabajo. Entonces, para 10up, para nuestros complementos, ese es el directorio dot GitHub y luego el subdirectorio de flujos de trabajo allí. Y luego tenemos el flujo de trabajo de revisión de dependencia que llama a esa acción de revisión de dependencia, tiene la lista de licencias permitidas, pueden ver mi presentación en mi sitio o encontrar la charla en línea y ver la lista de licencias que tenemos. También puedes explorar cualquiera de los repositorios de 10up en GitHub y ver las licencias que exploramos.

Nuestros archivos de flujo de trabajo están bastante bien documentados y explican cómo llegamos a identificar las licencias que consideramos compatibles con nuestros complementos. Entonces la gente sería bienvenida a usar la lista que tenemos, sería bienvenida a usar un subconjunto de esa lista, sería bienvenida a hacer su propia investigación, tal vez para sentir ese nivel de comodidad. Pero hicimos una investigación bastante extensa para asegurarnos de que lo que estábamos usando en nuestra lista de licencias permitidas realmente fuera compatible con lo que declaramos. Y prácticamente de forma predeterminada para 10up usamos GPLv2 o posterior, por lo que todas las licencias que enumeramos son compatibles con GPLv2, específicamente.

Ese es el caso, nuevamente, del autor del complemento con un único complemento que mantiene. Como mencionó, en el caso de que alguien tenga más de una, varias, puede tener un archivo de política de licencia separado que efectivamente tenga todas esas licencias declaradas. Y luego hace referencia a ese archivo de configuración, ese archivo de política de licencia, en el flujo de trabajo de sus complementos, de modo que, como mencionó, en ese momento realmente solo tiene un lugar donde necesita mantener la lista de licencias compatibles. Si resulta que hay, ya sabes, una nueva licencia de código abierto aprobada por iniciativa que sea compatible con GPLv2 para nosotros, ¿verdad? Si aparece uno nuevo en escena, entonces podría agregarse a la lista, o tal vez si es necesario eliminar uno por cualquier motivo, no es necesario hacerlo en docenas de ubicaciones. Lo hace en una ubicación y luego todos los archivos de flujo de trabajo que hacen referencia a esa configuración se actualizan inmediatamente, utilizando esa nueva lista de licencias.

DP : Todo esto está automatizado, por lo que si alguien realiza una solicitud de extracción, lo hará solo por usted. ¿Bien?

JP : Correcto, correcto. Entonces, a medida que creamos nuestros archivos de flujo de trabajo en nuestros repositorios, tenemos un disparador en una solicitud de extracción. Entonces, quizás también podrías configurarlo para que se ejecute según un cronograma CRON, podrías ejecutarlo semanalmente o mensualmente, pero en realidad, una vez que haces la primera ejecución, escaneas todo el código base de las dependencias y realmente funciona. En adelante, en realidad solo necesita verificar las solicitudes de extracción que llegan. Probablemente también podría verificar las confirmaciones individuales si no está utilizando un sistema bastante estricto que requiera relaciones públicas en cualquiera que sean sus ramas predeterminadas o estables para sus complementos.

Por lo tanto, podría haber desencadenantes adicionales que la gente quiera utilizar. Para 10up, tendemos a exigir de manera bastante estricta a los RP que desarrollen y troncalicen ramas para que podamos usar esta acción de manera confiable y saber que cualquier cambio en las dependencias que introduzca una nueva o elimine una versión que cambie la licencia quedará atrapado por esto. . Entonces, sí, usamos, giramos o activamos solicitudes de extracción, pero dependiendo de qué tan estrictas sean las personas, tal vez pueda verificar los compromisos individuales en una rama específica, o incluso ejecutarlo en un cronograma diario, semanal, mensual, solo tener la tranquilidad de saber que su código aún se está transmitiendo, que no hay ninguna licencia que sea incompatible con, en este caso, GPLv2 para 10up.

DP : Vamos a tomar otro breve descanso aquí. Cuando regresemos, concluiremos nuestra conversación con Jeff Paul sobre las licencias GPL y tal vez retomemos cualquier cosa que no hayamos mencionado antes. Así que estad atentos para más información después de este breve descanso.

DP : Bienvenido de nuevo a Press This, un podcast comunitario de WordPress. Estamos terminando el espectáculo y vamos a cambiar un poco de velocidad. Últimamente se ha hablado un poco sobre el proceso de revisión en el repositorio de complementos y, básicamente, se afirma que es un poco más lento que en el pasado.

Algunas personas dicen que saben que se necesitan meses para revisar algo, y creo que he visto un pico de tal vez cuatro semanas en la mayoría de mis años en WordPress. Entonces, Jeff, sé que han hablado sobre tal vez algunos cambios que harán al respecto. ¿Puedes decirnos en qué está trabajando el equipo ahora?

JP : Claro. Sí. Y, ya sabes, amplifico lo que dijiste. Creo que históricamente he visto que todas las cosas que he enviado han sido en menos de dos semanas y han sido mucho más rápidas de lo que normalmente se informa. Y es alrededor de 88 días o algo desafortunado para todos los involucrados.

Creo que ha habido algunos cambios en ese equipo. Se perdieron algunos conocimientos de alto nivel con mucha experiencia. Y creo que las personas que gentilmente han intervenido para ayudar a llenar ese vacío todavía están llegando al punto en el que pueden tener el mismo tipo de rendimiento al procesar complementos y revisar esos envíos iniciales. Y están trabajando para intentar automatizar parte de eso. Entonces, algunas de las cosas en las que, ya sabes, las computadoras son mejores y los humanos tal vez no, tal vez como ejecutar estándares de codificación de WordPress y perfeccionar dónde se informan errores realmente críticos, ¿verdad? En lugar de que un humano tenga que revisar y procesar esas cosas, tener un verificador de complementos que se ejecute y verifique las cosas que se pueden automatizar y ayudar al equipo de revisión de complementos a hacer una pausa inicial rápida, ¿las cosas que se automatizan pasan? Si es así, entonces, está bien, sumérgete en tu revisión humana y acelera las cosas. Si se han informado cosas, que son de naturaleza automatizada y que no pasan, entonces creo que es una respuesta más rápida al desarrollador del complemento: oye, hemos identificado estas cosas iniciales en nuestro análisis, ya sabes, por favor, resuélvelas. y luego envíe un archivo zip actualizado para que todo vuelva a su curso.

Así que sé que están trabajando para agregar algo de automatización, creo que cuanto más puedan hacer para ayudarlos en ese camino, mejor, simplemente porque en este punto, más de mil complementos, el trabajo pendiente es largo, y nuevamente , sin ayudar a nadie allí. Entonces sí, están trabajando en automatizaciones. Sé que quieren hacer más, y creo que si esa es un área en la que alguien tiene un talento especial para las automatizaciones y quiere contribuir, creo que al equipo de revisión de complementos le encantaría recibir ayuda en ese frente. Así que, si ese es el caso, comunícate con Slack.

DP : Y hablando de comunicarse, si la gente tiene preguntas sobre la charla que diste en WordCampUS, o simplemente algunos de los proyectos en los que 10uP está trabajando en el espacio de código abierto, ¿cuál es la mejor manera para que la gente se comunique contigo? ?

JP : Claro. Entonces mi sitio web es jeffpaul.com. Tengo mi presentación ahí arriba, si solo busca GPL, probablemente será una de las primeras publicaciones en cualquier caso. De lo contrario, mi correo electrónico es [email protected] , mi correo electrónico del trabajo, um, y luego prácticamente todas las redes sociales. WordPress.org, GitHub, Twitter, barra X, y soy @Jeff Paul, y todos pueden encontrarme en las redes sociales de esa manera.

DP : De manera similar, si los oyentes quieren encontrar ejemplos de cómo funciona 10uP en GitHub, ¿supongo que es solo 10up en GitHub?

JP : Correcto, sí, github.com/10up. Todos los repositorios de nuestros complementos son públicos. Nuestro equipo sigue de cerca los nuevos problemas y las relaciones públicas. Todo eso se canaliza a nuestro canal de Slack, por lo que cualquier cosa, cualquier pregunta que la gente tenga, cualquier discusión, se abre allí. Nuestro equipo debería responder bastante a ellos, pero si no, ya sabes, contáctame en WordPress Slack, en Twitter por correo electrónico, cualquiera de esos funciona. Siempre estoy feliz de charlar sobre código abierto con gente de la comunidad.

DP : Bueno, muchas gracias por acompañarnos hoy, Jeff, ha sido fantástico hablar contigo y aprendí mucho sobre las acciones que tiene GitHub para las solicitudes de extracción y la automatización de esa experiencia. Eso es muy útil.

Si te perdiste el episodio de Press This de la semana pasada, hablamos con Carmen Johnson sobre los pasos que puedes seguir para preparar tu sitio para el final de la vida útil de MySQL 5.7 y cómo prepararte para MySQL 8. Así que ese es un episodio realmente bueno. Puedes comprobarlo y tenemos mucho más. Puede encontrarlos en TorqueMag.io si desea encontrar versiones transcritas. Gracias por escuchar Press This, un podcast comunitario de WordPress sobre WMR. Puedes seguir nuestras aventuras en Twitter, en Torque Mag.

Puede suscribirse a Press This en RedCircle, iTunes, Spotify o su aplicación de podcasting favorita, o puede descargar episodios directamente desde WMR.fm. Soy su anfitrión, Dr. Popular. Apoyo a la comunidad de WordPress a través de mi función en WP Engine y me encanta destacar a los miembros de esa comunidad todas las semanas en PressThis.