// the find
chamilo/chamilo-lms
Chamilo is a learning management system focused on ease of use and accessibility
Chamilo is a full-featured, self-hosted LMS that has been in production since 2010 and claims 40M+ users. The v2 branch is a Symfony/Vue.js rewrite still in RC, while v1.11 is the stable production track. It covers the full institutional e-learning stack: courses, learning paths, gradebooks, quizzes, skills, sessions, SCORM/xAPI/LTI compliance, and attendance — the kind of feature breadth you'd normally pay for with Moodle hosting.
- Standards coverage is real: SCORM 1.2, QTI, LTI, xAPI CMI5, and Aiken are all listed and have been baked in through multiple versions, not bolted on as plugins
- The v2 modernization is genuinely ambitious — Symfony backend with API Platform, Vue 3 component library (40+ base components in assets/vue/components/basecomponents/), JWT auth, and a Behat + PHPUnit CI pipeline with Psalm type coverage tracking
- 60+ fully-translated languages including RTL is not a small effort; for international deployments this beats almost every open-source LMS alternative
- The .claude/ directory with slash commands for migrating legacy PHP to Vue suggests the team is actively managing the legacy-to-modern transition in a structured way, which is rare for a codebase this size
- v2.0 is not production-ready — the README says 'validation phase' and explicitly recommends installing 1.11.x; no load testing has been done, and the install notes warn it runs in dev mode by default, which is considerably slower
- The codebase is a dual-track migration mess: assets/js/legacy/ lives alongside Vue components, old PHP templates mix with Twig, and you'll hit the seams constantly when customizing anything non-trivial
- MySQL/MariaDB only — no PostgreSQL support mentioned for v2, which limits hosting options and rules out managed PG services many teams prefer
- Installation complexity is high and not containerized by default: the quick-start is a wall of apt-get and Apache vhost config, with no Docker Compose or similar for local development mentioned in the README