Odoo · OCA · Opinión
Instalar un módulo de la Odoo Community Association (OCA) sin auditarlo, y escribir un módulo propio sin mirar antes si ya existe, son los dos extremos del mismo error: decidir por costumbre en vez de por criterio.
Antes de escribir nada
Buscar en OCA primero no es pereza, es criterio
La OCA agrupa módulos probados en cientos de instalaciones reales, mantenidos por una comunidad con revisión de código activa. Antes de escribir un módulo de cero para necesidades comunes (contabilidad, RRHH, calidad, gestión documental), merece la pena comprobar si ya existe algo maduro.
# Repositorios habituales a revisar antes de empezar
# https://github.com/OCA/server-tools
# https://github.com/OCA/account-financial-tools
# https://github.com/OCA/web
# https://github.com/OCA/reporting-engine
Criterios de decisión
Qué mirar antes de instalar un módulo de la comunidad
No todos los repositorios OCA tienen el mismo nivel de mantenimiento. Antes de añadirlo como dependencia de un proyecto en producción, conviene revisar un checklist mínimo.
| Señal | Qué indica |
|---|---|
| Último commit reciente y CI en verde | Mantenimiento activo, compatible con tu versión |
Tests (tests/) presentes | Menor riesgo de regresiones al actualizar |
| Issues abiertos sin respuesta durante meses | Posible abandono, revisa forks activos |
| Dependencias cruzadas con otros módulos OCA | Coste de mantenimiento oculto si luego los quitas |
Cuando no encaja del todo
Forkar vs. extender vs. escribir de cero
Si el módulo OCA cubre el 80% pero le falta algo específico del cliente, la primera opción no es forkarlo: es crear un módulo propio que lo extienda vi _inherit, manteniendo el original intacto y actualizable.
# mi_modulo_extension/models/account_move.py
class AccountMove(models.Model):
_inherit = "account.move" # viene de un modulo OCA
campo_especifico_cliente = fields.Char()
Forkar el repositorio completo solo se justifica cuando necesitas modificar el comportamiento central del módulo de forma incompatible con futuras actualizaciones, y aun así conviene documentar el fork y evaluar periódicamente si se puede volver a converger con upstream.
Resumen
Revisa OCA antes de escribir de cero, audita mantenimiento y tests antes de instalar, y extiende con _inherit en vez de forkar salvo que sea estrictamente necesario. La decisión correcta rara vez es "todo propio" ni "todo OCA": es un criterio caso por caso.