Skip to content

Latest commit

 

History

History
390 lines (274 loc) · 11.1 KB

File metadata and controls

390 lines (274 loc) · 11.1 KB

🚨 INFORME DE CUMPLIMIENTO CON POLÍTICAS DE WORDPRESS.ORG

Plugin: AI Widget by Workfluz
Versión: 1.0.0
Fecha de Revisión: 24 de Octubre de 2025
Estado: ❌ NO CUMPLE con requisitos para repositorio oficial de WordPress


⚠️ PROBLEMAS CRÍTICOS QUE IMPIDEN LA PUBLICACIÓN

🔴 1. LICENCIA INCOMPATIBLE (CRÍTICO)

Problema: El plugin usa una licencia propietaria, lo cual es INCOMPATIBLE con WordPress.org

Evidencia:

// Archivo: ai-voice-text-widget.php, líneas 9-10
License: Proprietary
License URI: https://workfluz.com/license

Requisito de WordPress.org:

"All plugins hosted on WordPress.org MUST be 100% GPL or compatible."

Impacto: ❌ RECHAZO AUTOMÁTICO - WordPress.org rechazará el plugin inmediatamente.

Solución Requerida:

// Cambiar a:
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

// O alternativamente:
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

🔴 2. readme.txt VACÍO (CRÍTICO)

Problema: El archivo readme.txt está completamente vacío.

Requisito de WordPress.org:

"A properly formatted readme.txt file is REQUIRED for plugin approval."

Impacto: ❌ RECHAZO AUTOMÁTICO

Solución Requerida: Crear readme.txt con formato estándar que incluya:

  • Contributors
  • Tags
  • Requires at least / Tested up to
  • Stable tag
  • Description
  • Installation
  • Frequently Asked Questions
  • Changelog
  • Screenshots (opcional)

🔴 3. DIVULGACIÓN INSUFICIENTE DE SERVICIOS EXTERNOS (CRÍTICO)

Problema: El plugin usa servicios externos (OpenAI, VAPI, ElevenLabs) pero NO lo divulga adecuadamente en readme.txt ni en la interfaz de usuario.

Servicios Externos Detectados:

  1. OpenAI API (https://api.openai.com/v1/chat/completions)
  2. VAPI SDK (https://cdn.jsdelivr.net/gh/VapiAI)
  3. ElevenLabs (mencionado en código)
  4. Workfluz License Server (https://app.workfluz.com/api/v1/licenses/validate)

Requisito de WordPress.org:

"Plugins that call external services MUST clearly disclose this in the readme.txt and provide links to Terms of Service and Privacy Policies."

Impacto: ❌ RECHAZO por falta de transparencia

Solución Requerida:

  • Agregar sección "External Services" en readme.txt
  • Incluir enlaces a términos de servicio y políticas de privacidad
  • Mostrar avisos en la UI antes de la primera conexión

🟡 4. RESTRICCIONES DE LICENCIA EN COMENTARIOS DEL CÓDIGO

Problema: El código contiene avisos de "licencia propietaria" y restricciones incompatibles con GPL.

Evidencia:

// Archivo: ai-voice-text-widget.php, líneas 17-36
LICENCIA PROPIETARIA Y CONFIDENCIAL
====================================

RESTRICCIONES:
- Este código es CONFIDENCIAL y PROPIETARIO de Workfluz
- Queda PROHIBIDA la redistribución, copia, modificación...

Requisito de WordPress.org:

"Plugin code cannot contain restrictions that contradict the GPL license."

Impacto: ❌ RECHAZO - WordPress.org no permitirá código con restricciones anti-GPL

Conflicto con GPL:

  • GPL permite redistribución → Tu licencia la prohíbe
  • GPL permite modificación → Tu licencia la prohíbe
  • GPL permite uso comercial → Tu licencia lo limita

Solución Requerida: Eliminar TODOS los avisos de licencia propietaria del código.


🟡 PROBLEMAS MODERADOS

🟡 5. FALTA DOCUMENTACIÓN DE APIs EXTERNAS

Problema: No hay explicación clara sobre qué datos se envían a servicios externos.

Requisito de WordPress.org:

"Users must be informed about what data is transmitted to external services."

Impacto: Posible rechazo durante revisión manual.

Solución: Agregar en readme.txt y en la UI de configuración:

  • Qué datos se envían (mensajes de usuario, audio, etc.)
  • A qué servicios se envían
  • Cómo se procesan
  • Enlaces a políticas de privacidad de cada servicio

🟡 6. TELEMETRÍA Y LLAMADAS A SERVIDOR PROPIETARIO

Problema: El plugin se conecta a app.workfluz.com para validar licencias sin consentimiento explícito.

Código Problemático:

// class-freemium.php, línea 434
$api_url = 'https://app.workfluz.com/api/v1/licenses/validate';

Requisito de WordPress.org:

"Plugins cannot 'phone home' or track users without explicit opt-in and disclosure."

Impacto: ⚠️ Posible rechazo por "phone home" sin divulgación

Solución:

  • Divulgar claramente en readme.txt
  • Hacer la conexión opcional (con opt-in)
  • O eliminarla completamente para la versión del repositorio

✅ ASPECTOS QUE SÍ CUMPLEN

✅ 1. Seguridad - Sanitización y Escapado

Estado: ✅ BIEN IMPLEMENTADO

Evidencia:

  • Uso correcto de sanitize_text_field()
  • Uso de esc_attr(), esc_html()
  • Uso de wp_kses_post() para SVG
  • Uso de sanitize_hex_color()

Ejemplo:

update_option( 'ai_widget_position', sanitize_text_field( $_POST['ai_widget_position'] ) );
update_option( 'ai_widget_logo_svg', wp_kses_post( $_POST['ai_widget_logo_svg'] ) );

✅ 2. Nonces y Verificación de Permisos

Estado: ✅ BIEN IMPLEMENTADO

Evidencia:

// Verificación de nonce
check_admin_referer( 'ai_widget_appearance' )

// Verificación de permisos
if ( ! current_user_can( 'manage_options' ) ) {
    return;
}

// AJAX nonce
check_ajax_referer( 'validate_license' );

✅ 3. Uso de APIs de WordPress

Estado: ✅ CORRECTO

  • Uso de wp_remote_post() en lugar de cURL
  • Uso de wp_enqueue_script() y wp_enqueue_style()
  • Uso de opciones de WordPress (get_option(), update_option())
  • Uso de tablas personalizadas con prefijo $wpdb->prefix

✅ 4. Estructura de Archivos

Estado: ✅ BIEN ORGANIZADO

ai-voice-text-widget/
├── admin/              ✅ Separación de admin
├── public/             ✅ Separación de frontend
├── includes/           ✅ Clases principales
├── languages/          ✅ Preparado para i18n
└── ai-voice-text-widget.php  ✅ Archivo principal

✅ 5. Text Domain y Localización

Estado: ✅ CONFIGURADO CORRECTAMENTE

Text Domain: ai-voice-text-widget
Domain Path: /languages

// Uso en código:
__( 'AI Widget', 'ai-voice-text-widget' )

📋 REQUISITOS ADICIONALES DE WORDPRESS.ORG

❌ 7. Falta "Tested up to" Actualizado

Requisito: Debe estar probado con las últimas 3 versiones de WordPress.

Solución: Agregar en readme.txt:

Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4

⚠️ 8. Código Ofuscado o Encriptado

Problema Potencial: Los comentarios sobre "protección" podrían hacer pensar que el código está ofuscado.

Requisito de WordPress.org:

"No obfuscated, encoded, or minified code is allowed (except for libraries)."

Estado Actual: ✅ El código NO está ofuscado, solo tiene comentarios de copyright.


⚠️ 9. Freemium Model con Licencias

Problema: El modelo de license keys puede ser problemático.

Preocupación de WordPress.org:

  • Los plugins freemium están permitidos
  • PERO no pueden estar "bloqueados" si no hay licencia válida
  • Deben funcionar con funcionalidad básica sin licencia

Estado Actual: ⚠️ El plugin funciona en modo "free" sin licencia (OK)


🔧 ACCIONES REQUERIDAS PARA PUBLICAR EN WORDPRESS.ORG

CRÍTICO (Bloquea publicación):

  1. Cambiar licencia a GPL-2.0-or-later

    • Modificar header del plugin principal
    • Eliminar TODOS los avisos de licencia propietaria
    • Crear archivo LICENSE con texto GPL
    • Actualizar todos los headers de archivos PHP
  2. Crear readme.txt completo

    • Usar formato estándar de WordPress
    • Incluir descripción detallada
    • Documentar instalación
    • Incluir changelog
    • Agregar sección de servicios externos
  3. Divulgar servicios externos

    • Documentar OpenAI API (con link a ToS)
    • Documentar VAPI (con link a ToS)
    • Documentar ElevenLabs (con link a ToS)
    • Documentar conexión a Workfluz (o eliminarla)
    • Agregar avisos en la UI

IMPORTANTE (Recomendado):

  1. Eliminar telemetría no divulgada

    • Hacer opcional la conexión a workfluz.com
    • O eliminarla para versión del repositorio
    • Agregar opt-in explícito
  2. Actualizar información de compatibilidad

    • Probar con WordPress 6.7
    • Actualizar "Tested up to"
    • Verificar PHP 8.0+ compatibility

💡 ALTERNATIVAS A WORDPRESS.ORG

Si prefieres mantener la licencia propietaria y el modelo actual:

Opción A: Distribución Comercial Privada

  • ✅ Mantener licencia propietaria
  • ✅ Control total del código
  • ✅ Sistema de licencias propio
  • ❌ Sin exposición de WordPress.org
  • ❌ Sin actualizaciones automáticas de WordPress

Opción B: Freemium Split

  • Versión Lite en WordPress.org: GPL, funcionalidad básica
  • Versión Pro en tu sitio: Propietaria, con licencias
  • ✅ Exposición en WordPress.org
  • ✅ Actualizaciones automáticas para Lite
  • ✅ Puedes vender Pro separately
  • Ejemplo: WooCommerce, Yoast SEO, etc.

Opción C: Marketplace de Terceros

  • Envato (CodeCanyon)
  • Freemius
  • WooCommerce.com
  • ✅ Permiten licencias propietarias
  • ✅ Sistema de licencias incluido
  • ❌ Comisiones (20-50%)

📊 RESUMEN EJECUTIVO

Categoría Estado Comentario
Licencia ❌ NO CUMPLE Debe ser GPL
readme.txt ❌ FALTANTE Archivo vacío
Servicios Externos ❌ NO DIVULGADO Falta documentación
Seguridad ✅ CUMPLE Bien implementada
Código ✅ CUMPLE Buena calidad
Estructura ✅ CUMPLE Bien organizado
APIs WordPress ✅ CUMPLE Uso correcto

🎯 RECOMENDACIÓN FINAL

Para WordPress.org:

Tiempo estimado: 8-16 horas de trabajo para hacer compatible

Prioridad de cambios:

  1. Cambiar a GPL-2.0-or-later (2 horas)
  2. Crear readme.txt completo (4 horas)
  3. Divulgar servicios externos (2 horas)
  4. Testing y ajustes (2-8 horas)

Para Distribución Privada:

Estado actual: ✅ LISTO PARA PRODUCCIÓN

El plugin está bien desarrollado para uso privado/comercial. Solo necesita:

  • Documentación de usuario final
  • Sistema de soporte definido
  • Proceso de actualización claro

📞 RECURSOS Y REFERENCIAS

Documentación Oficial:

Herramientas:


© 2024-2025 Análisis de cumplimiento - Workfluz AI Widget