Está en la página 1de 3

Moodle es un ambiente educativo virtual (VLE) desarrollado inicialmente por Martin

Dougiamas con la intencin de ayudar a los educadores a crear cursos en lnea pensando
en todo momento en la colaboracin del contenido y su evolucin continua. Por supuesto,
Moodle es Software Libre bajo el amparo de la GPL.
Es la plataforma educativa ms extendida del mundo con ms de cuarenta millones de
usuarios y cuatro millones de cursos alrededor del globo. Est programada
en legacy PHP (esto es que la prctica totalidad del core de Moodle no soporta clases) y por lo
tanto no est orientado a objetos.
Realmente Moodle mezcla un poco de programacin orientada a objetos con mucha
programacin estructurada. Tampoco utiliza ningn sistema de encapsulacin de datos ni
separa la vista de la lgica de la aplicacin. Si pienso en implementar el patrn de
diseo MVC en Moodle me entra la risa y una flojera interesante.
Arquitectura de Moodle
Moodle se basa en un ncleo (conocido como el Moodle core) del sistema rodeado de una
gran cantidad de plugins que proveen de funcionalidad especfica a la plataforma.
Los plugins en Moodle pueden ser de varios tipos distintos, autenticacin, bloques,
matriculacin, temas, actividades, etc.
Todos los mdulos comparten funcionalidad especfica entre si y el core. La distribucin
estndar de Moodle incluye el core del sistema y un nmero de mdulos de todos los tipos
que proveen de la funcionalidad base del sistema y con el cual se puede empezar a funcionar
sin carencias ni problemas de ningn tipo.
La estructura de los mdulos en Moodle es muy simple, un directorio con archivos PHP,
JavaScript,XML y/o CSS y puntos de entrada definidos en varios archivos clave
como locallib.php,db/install.xml o lib.php que permiten la comunicacin con el
core.
El Core
El core de Moodle proporciona todos los mecanismos necesarios para implementar la
plataforma educativa. Implementa todos aquellos mecanismos que luego los plugins utilizan
para desarrollar su funcin. Es por lo tanto el core la parte ms importante del sistema
Moodle y sus componentes principales son los siguientes.
Cursos y Actividades
Moodle define un curso como una secuencia de actividades agrupadas en secciones.
Existen actividades de todo tipo y son muy flexibles. Los cursos se organizan en categoras
jerrquicas dentro de la plataforma educativa.
Usuarios y Grupos
Cada curso puede tener un nmero indeterminado de alumnos y un nmero indeterminado de
grupos que acoja a esos alumnos. Los alumnos tienen un perfil de usuario que pueden editar y
opciones especficas por curso en el que estn matriculados. Los cursos cuentan con
histricos, roles, permisos, etc.
Matriculacion
En Moodle los tipos de matriculacin disponibles en la plataforma se definen a travs de
mdulospor lo que podemos definir nuevos tipos de matriculacin con sus peculiaridades de
forma bastante sencilla a travs de mdulos externos. Cada tipo de matriculacin puede
implementar sus propios mecanismos al margen del core.
Los mdulos principales
Como ya he dicho anteriormente, Moodle viene con una serie de mdulos principales o
estndar que adems le son necesarios para su correcto funcionamiento. A parte, al estar tan
extendida, moodle cuenta con una base de datos de mdulos ingente donde buscar algo a
veces puede ser un poco exasperante.
Algunos de los ms importantes tipos de mdulos en Moodle son:
Actividades y Recursos: Componen los objetos individuales del curso. Existen
actividades de todo tipo, colaborativas, foro, wiki, cuestionarios, etc. Es de largo el tipo de
mdulo ms desarrollado y se instalan en el directorio mod dentro de la raz de Moodle
Bloques: Los bloques son cajas con contenido aadido en columnas a los lados del
contenido principal que ofrecen funcionalidades varias. Residen en el directorio blocks
Matriculacin: Aunque este tipo de plugin no es muy comn, voy a hablar mucho de l
en esta serie puesto que la experiencia que tengo en el desarrollo de mdulos de Moodle
incluye uno de estos, Los plugins de matriculacin residen en el directorio enrol
Temas: Los estilos se desarrollan dentro de mdulos que residen (efectivamente, lo has
adivinado) en el directorio theme

Existen muchos otros tipos de plugins pero su completa enumeracin y definicin excede de
sobremanera el propsito de este artculo.
La base de datos
Moodle integra ms de doscientas tablas en su base de datos incluyendo las necesarias por
el core y las de los mdulos principales. La estructura de las tablas de los mdulos se definen
en el archivoinstall.xml dentro del directorio db en el directorio principal de los mdulos.
La base de datos puede ser editada y revisada a travs del men de administracin de la
plataforma.
En Moodle no usamos un objeto para interactuar con la base de datos (aunque existe, es una
de las pocas cosas que si cuenta con orientacin a objetos en Moodle) sino con funciones al
estilo de la programacin estructurada que interactan con un objeto ODBC.
Tampoco existe un ORM propiamente dicho pero si una capa de abstraccin sobre la base
de datos llamada XMLDB
Organizacin del cdigo
Moodle sigue un enfoque de transaction script para organizar el cdigo apoyado por
elementos de unmodelo de dominio puesto que al empezar a programar Moodle, lo orientacin
a objetos no estaba soportada en PHP, o al menos esa es la excusa oficial expuesta en la
documentacin para desarrolladores del proyecto.
El cdigo del core y los mdulos principales de Moodle se estn regulando y refactorizando
para soportar el paradigma orientado a objetos a una velocidad similar a las obras del escorial,
pero la esperanza es lo ltimo que se pierde.
Otra cosa que Moodle no soporta es hooks por lo que la funcionalidad del core solo puede ser
extendida a travs de parches modificando el mismo y convirtiendo nuestro desarrollo en algo
complicado de mantener que impide la normal actualizacin de la plataforma.
Pongmonos en situacin
Desde hace aproximadamente un ao he estado desarrollando un mdulo muy ambicioso que
aadefuncionalidad extra al core de Moodle sin modificar el cdigo del mismo ni aplicar
parches posibilitando la actualizacin completa de la plataforma. El mdulo sigue una poltica
de no intromisin en el core del sistema aadiendo funcionalidad extra, capas y entidades
superiores.
En prximas entregas de esta nueva serie narrar los problemas a los que me he enfrentado a
la hora de desarrollar dicho mdulo y los xitos cosechados.

También podría gustarte