{"id":4588,"date":"2026-05-06T10:48:33","date_gmt":"2026-05-06T08:48:33","guid":{"rendered":"https:\/\/davidperezgar.com\/?p=4588"},"modified":"2026-05-06T10:51:06","modified_gmt":"2026-05-06T08:51:06","slug":"3-anos-en-el-plugins-team-de-wordpress-org","status":"publish","type":"post","link":"https:\/\/davidperezgar.com\/es\/3-anos-en-el-plugins-team-de-wordpress-org\/","title":{"rendered":"3 a\u00f1os en el Plugins Team de WordPress.org"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ayer, 5 de mayo de 2026, cumplo <strong>3 a\u00f1os<\/strong> como parte del <a href=\"https:\/\/make.wordpress.org\/plugins\/handbook\/the-team\/\" target=\"_blank\" rel=\"noopener\">Plugins Team de WordPress.org<\/a>. Y este \u00faltimo a\u00f1o, el tercero, ha sido sin duda el m\u00e1s intenso, el m\u00e1s bonito y el que m\u00e1s me ha cambiado la forma de entender lo que significa contribuir a un proyecto open source de esta escala.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a ver qu\u00e9 ha pasado todo este a\u00f1o. No tanto por hacer cuentas (aunque las hay), sino porque cuando est\u00e1s metido en el d\u00eda a d\u00eda revisando plugins, programando herramientas y respondiendo a la cola, a veces se te olvida mirar hacia atr\u00e1s y ver lo lejos que has llegado. Y este a\u00f1o hemos llegado lejos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El contexto que cambia todo: los env\u00edos se han disparado<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1275\" height=\"475\" src=\"\/wp-content\/uploads\/2026\/10\/captura-de-pantalla-2026-05-02-a-las-13-30-03.png\" alt=\"Captura De Pantalla 2026 05 02 A Las 13.30.03\" class=\"wp-image-5771\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/captura-de-pantalla-2026-05-02-a-las-13-30-03.png 1275w, https:\/\/davidperezgar.com\/wp-content\/uploads\/captura-de-pantalla-2026-05-02-a-las-13-30-03-596x222.png 596w, https:\/\/davidperezgar.com\/wp-content\/uploads\/captura-de-pantalla-2026-05-02-a-las-13-30-03-768x286.png 768w, https:\/\/davidperezgar.com\/wp-content\/uploads\/captura-de-pantalla-2026-05-02-a-las-13-30-03-1082x403.png 1082w\" sizes=\"auto, (max-width: 1275px) 100vw, 1275px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Hay un dato que pone todo en perspectiva. Si miras el hist\u00f3rico de env\u00edos nuevos por semana al directorio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">En <strong>2022, 2023 y 2024<\/strong> la media estaba en torno a <strong>100-150 env\u00edos semanales<\/strong>, bastante estable.<\/li>\n\n\n\n<li class=\"\">En <strong>2025<\/strong> subimos a <strong>200-330 env\u00edos por semana<\/strong>.<\/li>\n\n\n\n<li class=\"\">En lo que llevamos de <strong>2026<\/strong>, ya estamos en <strong>400-560 env\u00edos semanales<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Es decir, en dos a\u00f1os los env\u00edos al directorio se han multiplicado por <strong>4-5 veces<\/strong>. Y el equipo no ha crecido al mismo ritmo. Esto explica por qu\u00e9 este a\u00f1o ha tenido el foco que ha tenido: si segu\u00edamos haciendo las cosas como siempre, el sistema colapsaba. Hab\u00eda que cambiar de marcha en herramientas, en automatizaci\u00f3n, en IA y en procesos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las cifras del a\u00f1o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Entre el 5 de mayo de 2025 y hoy, en este tercer a\u00f1o he dedicado al Plugins Team:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>6.335 plugins revisados<\/strong> entre nuevos y respuestas a autores (3.161 nuevos + 3.174 seguimientos)<\/li>\n\n\n\n<li class=\"\"><strong>1.482 plugins aprobados<\/strong> y publicados en el directorio<\/li>\n\n\n\n<li class=\"\"><strong>144 plugins rechazados<\/strong> por no cumplir las directrices<\/li>\n\n\n\n<li class=\"\"><strong>165 d\u00edas dedicados al desarrollo de herramientas<\/strong> internas para el equipo<\/li>\n\n\n\n<li class=\"\"><strong>M\u00e1s de 911 horas<\/strong> de trabajo registrado en estos 12 meses<\/li>\n\n\n\n<li class=\"\"><strong>337 d\u00edas activos<\/strong> en el equipo (pr\u00e1cticamente todos los d\u00edas del a\u00f1o)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cada uno de esos 6.000+ plugins lleva detr\u00e1s un autor, un correo, un informe completo, y a veces una conversaci\u00f3n para que el plugin pueda salir adelante de forma segura para los millones de personas que usan WordPress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Plugin Check (PCP): de 1.5 a 1.9, y la 2.0 a la vuelta de la esquina<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aparte de revisar, el proyecto que m\u00e1s me he enfocado este a\u00f1o ha sido <strong>Plugin Check<\/strong>, la herramienta oficial que ayuda a desarrolladores a comprobar si su plugin cumple las directrices del directorio antes de enviarlo. Empezamos el a\u00f1o en la versi\u00f3n 1.5 y hemos llegado a la <strong>1.9.0<\/strong>, pero lo m\u00e1s importante est\u00e1 justo ahora delante: <strong>PCP 2.0 con IA integrada para autores<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En las versiones de este a\u00f1o hemos a\u00f1adido:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\">Comprobaciones nuevas: detecci\u00f3n de readmes en idioma incorrecto, verificaci\u00f3n de nonces, detecci\u00f3n de funciones prohibidas, an\u00e1lisis de URLs externas, validaci\u00f3n de nombres de archivo, comprobaci\u00f3n de licencias de terceros, detecci\u00f3n de archivos duplicados, validaci\u00f3n de directivas de privacidad, y muchas m\u00e1s.<\/li>\n\n\n\n<li class=\"\"><strong>Plugin Check ejecut\u00e1ndose en actualizaciones<\/strong>: hasta entonces solo corr\u00eda en env\u00edos nuevos. Ahora tambi\u00e9n valida las actualizaciones, lo cual cubre un agujero importante.<\/li>\n\n\n\n<li class=\"\"><strong>Modo CTRF<\/strong> y formato de salida est\u00e1ndar para integraci\u00f3n con CI\/CD.<\/li>\n\n\n\n<li class=\"\"><strong>Primera integraci\u00f3n de IA<\/strong> (versi\u00f3n 1.8) para detectar nombres de plugins que infringen marcas registradas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Y ahora viene lo gordo. <strong>PCP 2.0<\/strong> llevar\u00e1 la IA a la revisi\u00f3n completa para todos los autores. La idea es que cualquier desarrollador, antes de enviar el plugin, pueda pasarle PCP en local y recibir feedback inteligente sobre todo lo que un revisor humano le dir\u00eda: posibles problemas de seguridad, malas pr\u00e1cticas, incompatibilidades con las directrices, sugerencias de mejora. Un primer filtro inteligente, accesible, gratuito y disponible para cualquiera del ecosistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si pones PCP 2.0 en el contexto del crecimiento de env\u00edos que comentaba antes, se entiende todo: es <strong>la \u00fanica forma de que el directorio siga funcionando<\/strong> con esta escala. Y es, tambi\u00e9n, lo que m\u00e1s ilusi\u00f3n me hace en este momento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">UN BACKDOOR EN 22 plugins y un potencial de 180.000 webs que podr\u00edan ser comprometidas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En abril de este a\u00f1o vivimos uno de los episodios m\u00e1s comprometidos este a\u00f1o: <strong>22 plugins infectados con un backdoor afectando a m\u00e1s de 182.000 webs<\/strong>. La cadena de suministro hab\u00eda sido comprometida \u2014<a href=\"https:\/\/anchor.host\/someone-bought-30-wordpress-plugins-and-planted-a-backdoor-in-all-of-them\/\" target=\"_blank\" rel=\"noopener\">plugins comprados en Flippa con c\u00f3digo durmiente<\/a> que se activ\u00f3 meses despu\u00e9s\u2014.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este incidente nos hace pensar que debemos estar cada vez m\u00e1s pendiente de las actualizaciones de los plugins. Efectivamente llevamos un tiempo trabajando en ello desde el a\u00f1o pasado con diferentes reuniones en la pasada WordCamp Europe. Y actualmente ya corre Plugin Check en las actualizaciones, a <strong>falta de que el informe se env\u00ede a los autores<\/strong>. Esto ser\u00eda el inicio para que los propios autores puedan revisar sus plugins y actuar en su seguridad. <\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-medium\"><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"447\" src=\"\/wp-content\/uploads\/2026\/10\/img_0251-596x447-1.png\" alt=\"Img 0251\" class=\"wp-image-4984\" title=\"\" srcset=\"https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/img_0251-596x447-1.png 596w, https:\/\/davidperezgar.com\/wp-content\/uploads\/2026\/10\/img_0251-596x447-1-300x225.png 300w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\">De hecho este fue uno de los proyectos que comentamos con Matt en la pasa WordCamp Europe.<\/p>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">El cambio de nombre: de Plugin Review Team a Plugins Team<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En julio publicamos un muy simb\u00f3licos: el cambio de nombre del equipo. Pasamos de <strong>Plugin Review Team<\/strong> a <strong>Plugins Team<\/strong>. Parece un detalle, y lo es, pero tambi\u00e9n refleja algo importante: el equipo ya no solo revisa plugins. Mantiene el directorio, desarrolla herramientas, define pol\u00edticas, gestiona ownership, responde a ciertos incidentes de seguridad, y forma a nuevos contribuyentes. El nombre ten\u00eda que adaptarse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las herramientas internas: Plugin Team Tools y el Reviewer Dashboard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una parte muy importante del trabajo este a\u00f1o ha sido construir herramientas para el resto del equipo. Cosas como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>PT Tools \/ PRT Stats<\/strong>: un plugin con dashboards para que cada revisor vea sus propias estad\u00edsticas y el equipo entero pueda hacer seguimiento.<\/li>\n\n\n\n<li class=\"\">Ayudar a las <strong>Extensi\u00f3n de Chrome<\/strong> para HelpScout (la herramienta donde gestionamos los correos con autores), con botones para copiar enlaces, gestionar issues de ownership, contar plugins, configurar tiempos de espera personalizados, y m\u00e1s.<\/li>\n\n\n\n<li class=\"\">Un <strong>Reviewer Dashboard<\/strong> para automatizar parte del flujo de trabajo y dar visibilidad de la cola en tiempo real.<\/li>\n\n\n\n<li class=\"\"><strong>Stats automatizadas<\/strong> que se ejecutan en cron para ver tendencias del directorio (env\u00edos diarios, plugins publicados, ratios de aprobaci\u00f3n).<\/li>\n\n\n\n<li class=\"\"><strong>Importaci\u00f3n de stats hist\u00f3ricos<\/strong> para tener una serie temporal completa del equipo.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Las uso yo y las usa el resto del equipo a diario. Es un trabajo invisible pero que ayuda a revisar el esfuerzo del equipo es suficiente y si se necesita m\u00e1s miembros. Y con el nivel actual de env\u00edos, sin estas herramientas no llegar\u00edamos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Las skills para agentes: la nueva frontera<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A finales del a\u00f1o, ya en 2026, hemos abierto otra l\u00ednea: las <strong>skills para agentes de IA<\/strong>. Empezamos creando la <a href=\"https:\/\/github.com\/WordPress\/agent-skills\/tree\/trunk\/skills\/wp-plugin-directory-guidelines\" target=\"_blank\" rel=\"noopener\">skill <code>wp-plugin-directory-guidelines<\/code><\/a> en el repositorio oficial de WordPress, y luego a\u00f1adimos la skill de <strong>WPORG compliance<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La idea es sencilla pero potente: que cualquier desarrollador que use un agente de IA para programar plugins pueda cargar estas skills y conseguir que el agente conozca las directrices de WordPress.org desde el primer prompt. Que el vibecoding para WordPress salga bien por defecto, no por casualidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es la otra cara de la misma moneda que PCP 2.0: si no podemos revisar todo a mano por la escala, lo que s\u00ed podemos hacer es que el c\u00f3digo llegue mejor desde el origen. La IA al servicio del autor, no contra \u00e9l.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Posts publicados en make.wordpress.org\/plugins<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Durante el a\u00f1o hemos publicado bastante en el blog del equipo. Algunos posts en los que he trabajado:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><em>More plugins submitted this year<\/em> (mayo 2025)<\/li>\n\n\n\n<li class=\"\"><em>Doubled submissions this year<\/em> (mayo 2025) \u2014 ya entonces se ve\u00eda la tendencia que ahora se ha disparado<\/li>\n\n\n\n<li class=\"\"><em>New Plugins Team name<\/em> (julio 2025) \u2014 el cambio de nombre<\/li>\n\n\n\n<li class=\"\"><em>Readme in English required<\/em> (julio 2025) \u2014 un cambio de pol\u00edtica importante<\/li>\n\n\n\n<li class=\"\"><em>WCUS Plugin Stats<\/em> (agosto 2025) \u2014 para llevar a Portland<\/li>\n\n\n\n<li class=\"\"><em>PCP running on updates<\/em> (octubre 2025)<\/li>\n\n\n\n<li class=\"\"><em>Automated Tests for Developer Blog<\/em> (diciembre 2025) \u2014 colaboraci\u00f3n con el Developer Blog<\/li>\n\n\n\n<li class=\"\"><em>Plugins Team Recap 2025<\/em> (diciembre 2025)<\/li>\n\n\n\n<li class=\"\"><em>22 plugins infected, 182k webs compromised<\/em> (abril 2026) \u2014 el incidente del backdoor<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Eventos: cuatro WordCamps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Este a\u00f1o he estado en cuatro eventos como contribuyente:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>WCEU 2025<\/strong> (Basel) \u2014 Contributor Day y reuni\u00f3n con Matt Mullenweg<\/li>\n\n\n\n<li class=\"\"><strong>WordCamp Madrid<\/strong> \u2014 Contributor Day y workshop sobre plugins<\/li>\n\n\n\n<li class=\"\"><strong>WordCamp M\u00e1laga<\/strong> \u2014 Contributor Day<\/li>\n\n\n\n<li class=\"\"><strong>WordCamp Galicia<\/strong> \u2014 Contributor Day<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Cada uno con su sabor, pero los cuatro con la misma sensaci\u00f3n: la gente del open source que viene a estos sitios es lo mejor que tiene este proyecto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reclutar y formar al equipo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Otro frente este a\u00f1o ha sido <strong>incorporar nuevos miembros<\/strong>. El equipo ha crecido, y eso significa entrevistar gente, formar, hacer onboarding, dar feedback, y trabajar codo con codo con desarrolladores nuevos. Trabajo que no aparece en los n\u00fameros pero que es b\u00e1sico para que el equipo sea sostenible \u2014especialmente con el volumen de env\u00edos que tenemos ahora\u2014.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gracias, Hostinger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Y aqu\u00ed quiero parar para dar las gracias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todo este trabajo \u2014las 911 horas, los 6.335 plugins, los desarrollos, los posts, los eventos\u2014 no habr\u00eda sido posible sin el patrocinio de <strong><a href=\"https:\/\/www.hostinger.com\/es\" target=\"_blank\" rel=\"noopener\">Hostinger<\/a><\/strong>, que lleva ya tiempo apoyando mi tiempo dedicado al proyecto. En el modelo \"Five for the Future\" de WordPress, los patrocinios son lo que hace que la gente como yo podamos dedicar horas reales y consistentes al proyecto, en lugar de robarle tiempo a las noches y los fines de semana.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hostinger no solo ha financiado mi tiempo: ha entendido que contribuir a WordPress.org es contribuir al ecosistema entero, y al final tambi\u00e9n es bueno para sus clientes y para la web abierta. Gracias de verdad. Sin vosotros, ni el proyecto Proactive, ni Plugin Check 1.9, ni la 2.0 que viene, ni ninguna de las herramientas internas habr\u00edan existido en el calendario que existieron.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Y al equipo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Y por supuesto, gracias al <strong>Plugins Team<\/strong>. Trabajar con un grupo de gente repartida por todo el mundo, con horarios imposibles, que se cubre las espaldas, que debate las decisiones dif\u00edciles con respeto, y que tiene paciencia infinita con los autores de plugins, es un privilegio que no se ve todos los d\u00edas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A por el cuarto a\u00f1o. Y a por la 2.0.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ayer, 5 de mayo de 2026, cumplo 3 a\u00f1os como parte del Plugins Team de WordPress.org. Y este \u00faltimo a\u00f1o, el tercero, ha sido sin duda el m\u00e1s intenso, el m\u00e1s bonito y el que m\u00e1s me ha cambiado la forma de entender lo que significa contribuir a un proyecto open source de esta escala. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":9,"footnotes":""},"categories":[39],"tags":[],"class_list":["post-4588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comunidad-wordpress"],"_links":{"self":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/comments?post=4588"}],"version-history":[{"count":1,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4588\/revisions"}],"predecessor-version":[{"id":5975,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/posts\/4588\/revisions\/5975"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media\/4748"}],"wp:attachment":[{"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/media?parent=4588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/categories?post=4588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidperezgar.com\/es\/wp-json\/wp\/v2\/tags?post=4588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}