Open edX, plataforma para MOOC Javier Ortega Conde, Metauniversidad Notas del autor: Webs: http://metauniversidad.com y http://metamooc.com IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 455 Resumen Los MOOC están en auge, y si bien en Estados Unidos se han asentando ya, en Europa todavía hay mucho camino por recorrer. Tras una introducción sobre el concepto de MOOCs y un breve análisis sobre la elección de Open edX, este documento pretende acercar y facilitar la instalación de la plataforma de MOOC Open edX, tras la experiencia en nuestra empresa, para que otros puedan instalarla y probarla. Palabras clave: MOOC, Open edX, software libre Abstract MOOCs are booming, and while in the United States are already settled, in Europe there is still a long way to go. After an introduction to the concept of MOOCs and a brief discussion about choosing of Open edX, this paper aims to approach and facilitate installation of Open edX MOOC platform, after the experience in our company, so that others can install and try it. Keywords: MOOC, Open edX, free software, libre software IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 456 Open edX, plataforma para MOOC Introducción: ¿qué es un MOOC? Las siglas MOOC responden a “Massive Open Online Course”, que significa Curso Online Masivo y Abierto. Analicemos brevemente qué significado tienen estas palabras: - Curso: Debe estar orientado al aprendizaje y tener un sistema de evaluación del aprendizaje para acreditar el conocimiento adquirido. - Online: El curso se impartirá a distancia por internet, sin requerir asistencia presencial. Normalmente (aunque no es obligatorio) no se hacen sesiones en directo, dada la dificultad que supone la posible masividad. - Masivo: Se admiten matriculaciones en el curso sin restricciones, de forma ilimitada (mientras los recursos lo permitan) o al menos en cantidades mucho más altas a las de un curso tradicional. - Abierto: Se puede acceder a los materiales de forma gratuita en Internet. No obstante, tendrán sus licencias, que podrían restringirlos al uso del curso y no permitir el uso en otros sitios. Si bien en lo básico son similares a los cursos online tradicionales, sus características los hacen ligeramente diferentes y son actualmente otra vía de distribución de cursos, en auge dado su éxito. Es remarcable que en otoño del 2011, más de 160.000 personas se matricularon en un curso sobre Inteligencia artificial ofrecido por la Universidad de Standford. Eso supuso la explosión de los MOOC y despertó el interés por ellos de toda la comunidad educativa. La fórmula habitual es cobrar sólo por el certificado que acredita (previa prueba) el aprovechamiento del curso. Estadísticamente el porcentaje de inscritos que completan el curso suele ser menor al 13%, pero aún así dadas las cifras de inscripciones manejadas, la cantidad neta IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 457 suele superar a la de superación en cursos tradicionales equivalentes. ¿Qué plataformas de MOOC basadas en software libre existen? Entre las plataformas a usar decidimos escoger sólo aquellas que son software libre, por convicción propia de sus ventajas. Desestimamos Moodle y Chamilo, porque aunque podrían ser válidas para la impartición de MOOC, añaden complicación innecesaria, y por tanto no deseable, a los profesoras/es y alumnas/os. Google creó en 2012 su propia plataforma CourseBuilder, pero más adelante la abandonó para sumar sus esfuerzos a la plataforma Open edX. La UNED creó en 2012 la plataforma OpenMooc para su uso propio pensando en la incorporación de vídeos y la escabilidad. Peer to Peer University (P2PU) creó Lernanta en 2010, y la liberó siguiendo su filosofía de apertura y carencia de ánimo de lucro. La última a destacar es Open edX que si bien fue creada en 2011 en el MIT, fue liberada en 2013 bajo el apoyo añadido de la Universidad de Harvard. Todas ellas están desarrolladas en Python con Django (salvo CourseBuilder que usa el framework webapp2). ¿Por qué de entre todas escoger Open edX? Open edX ya tiene más funciones y capacidades que sus competidoras. En unos años la diferencia será más palpable y puede que no tenga rival. Open edX ofrece entre otras estas características51: posibilidad de mostrar lecciones grabadas en vídeo con subtítulos e indexación sobre los propios subtítulos (puedes buscar por palabras que aparezcan en los mismos y al pulsar sobre los resultados, ir directamente a la sección de vídeo que los contiene), posibilidad de añadir 51 Características de Open edX: http://diariolinux.com/2014/05/21/introduccion-a-open-edx/ IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 458 materiales de estudio (organizados como libros, notas o simples ficheros), diferentes tipos de tests y exámenes, laboratorio Virtual con interfaz interactivo (para problemas de electrónica), calendario/planificación del curso, soporte multi-idioma, foros de discusión, wikis, informes de progreso, sistema para implementar Learning Analytics, diferentes tipos de evaluación de tareas: evaluación entre pares, auto-evaluación, hetero-evaluación y evaluación automática, sistema de notificación de eventos por correo electrónico, emisión de certificados de completamiento, integración con Google Hangouts y está preparada desde el principio para ser escalable. Asimismo tiene algunas cualidades únicas o sólo compartidas con una de sus competidoras (OpenMOOC), a saber: Open edX y OpenMooc Evaluación entre pares y autoevaluación (también en OpenMOOC) Sólo Open edX Sistema de evaluación automática (usando técnicas de machine learning) Sólo Open edX Laboratorio virtual con interfaz interactivo de simulación. Open edX y OpenMooc Sólo Open edX Soporte de internacionalización (también OpenMOOC) Arquitectura de componentes (llamada Xblock), que permite construir componentes de material didáctico que pueden ser integrados en cualquier curso online que siga la especificación. IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 459 Viendo la tabla de comparaciones de colaboraciones al código de varias plataformas MOOC (Juanan Pereira, SilviaSanz ‐ Santamaría y Julián Gutiérrez ‐ CINAIC 2013) no es difícil ver que edX no sólo es un proyecto de más envergadura, sino que además su avance es mucho más rápido. Tabla 1: Comparación de colaboraciones al código de varias plataformas Si añadimos a su velocidad de crecimiento, el hecho de que al proyecto Open edX se han sumado a colaborar en su desarrollo Google (abandonando así su desarrollo propio en favor de Open edX), la Universidad de Stanford, la Universidad de Queensland, la Universidad de Tsinghua y la Universidad de Berkeley y también la están usando una decena de universidades estadounidenses y otras veinte de otros países, además de algunas empresas no relacionadas directamente con la educación. Es sin duda la que más futuro tiene. ¿Cómo instalar Open edX para impartir cursos? A la hora de instalar Open edX hay varias opciones52. En primer lugar debemos escoger 52 Manual de instalación: https://github.com/edx/edx-platform IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 460 entre instalar Devstack (versión de desarrollo, pensada para desarrolladores) o Fullstack (versión de producción, más estable, pensada para instalar la plataforma e impartir cursos). Nosotros queremos impartir cursos, no desarrollar, de modo que vamos a hacer la instalación de producción. Asimismo, es posible instalarla usando Vagrant y la máquina virtual Virtualbox, Amazon Web services o hacerla sobre una máquina (real o virtual) propia con Ubuntu 12.04server. En nuestro caso, quizás con ganas de complicarnos la vida, quizás por optimizar nuestros recursos disponibles, optamos por hacerlo sobre una máquina virtual que montamos con el sistema en auge KVM, en la que pusimos la necesaria Ubuntu 12.04. Los pasos de instalación son: 1. Actualizar Ubuntu y reiniciar: sudo apt-get update -y sudo apt-get upgrade -y sudo reboot 2. Instalar los paquetes necesarios para que la plataforma disponga de las librerías y herramientas necesarias: sudo apt-get install -y build-essential software-properties-common pythonsoftware-properties curl git-core libxml2-dev libxslt1-dev python-pip python-apt python-dev 3. Preparamos el entorno para la plataforma: sudo pip install --upgrade pip sudo pip install --upgrade virtualenv 4. Descargamos la configuración para la plataforma: cd /var/tmp git clone -b release https://github.com/edx/configuration IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 461 5. Open edX al instalarse modifica muchas cosas. Entre otras la configuración del servidor ssh. Si queremos poder entrar a nuestro servidor por ssh con contraseña (y no sólo por certificado) antes de proceder a la instalación, deberemos cambiar la opción “COMMON_SSH_PASSWORD_AUTH” a "Yes” en el archivo /edx/app/edx_ansible/edx_ansible/playbooks/roles/common/defaults/main.yml 6. Creamos un archivo en la carpeta del usuario root “/root/.my.cnf” con los datos de acceso como administrador a mysql: [client] user=root password=ContraseñaDelAdministrador 7. Instalamos los requerimientos de ansible: cd /var/tmp/configuration sudo pip install -r requirements.txt 8. Por último instalamos la plataforma en sí: cd /var/tmp/configuration/playbooks sudo ansible-playbook -c local ./edx_sandbox.yml -i "localhost," Este último comando realiza muchos procesos necesarios por lo que tarda, y en ocasiones falla alguno de esos procesos. Normalmente el problema es ocasionado por no poder conectarse a alguno de los servidores, quizás por saturación de los mismos. En caso de fallar, el mismo proceso nos indicará al final que ejecutemos el comando de nuevo añadiendo ciertos parámetros que nos indica para continuar desde donde lo había dejado. O podríamos preguntar en la lista de correo general de Open edX.53 53 Lista de correo de Open edX: https://groups.google.com/forum/#!forum/edx-code IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 462 9. Como paso extra vamos a crear un usuario administrador, para lo cual sólo necesitaremos un email (que pondremos en el primer comando y después en los siguientes sólo la parte hasta antes de la arroba) y decidir una contraseña: sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings aws create_user -e Email@Escogido.com sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings aws changepassword EmailSinArrobaYDemás Nos pedirá una contraseña y confirmación de la misma. sudo -u www-data /edx/bin/python.edxapp ./manage.py lms --settings aws shell Y dentro de la consola que se nos abre escribimos estás líneas: from django.contrib.auth.models import User me = User.objects.get(username="EmailSinArrobaYDemás") me.is_superuser = True me.is_staff = True me.save() exit() Como resultado tendremos instalada la plataforma con el servidor web nginx, con la web del LMS (para los estudiantes) en el puerto 80 y la del CMS (también llamada Studio, para que los profesores creen contenidos) en el puerto 18010 y tendremos un usuario con capacidades de administración con el email que hayamos escogido. Además en la subcarpeta /admin de ambas webs tenemos un panel de administración de Django donde configurar algunas cosas. Para instalar la traducción54 al castellano deberemos hacer unos pasos extras: 54 Manual de internacionalización: https://github.com/edx/edx-platform/wiki/Internationalization-and-localization IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 463 1. Entramos al entorno virtual de edx: cd /edx/app/edxapp/edx-platform sudo -- su edxapp -s /bin/bash source /edx/app/edxapp/edxapp_env 2. Nos creamos una cuenta en http://www.transifex.com, que es donde se están haciendo colaborativamente las traducciones, y nos damos de alta en el proyecto de traducción de edxplatform55. Luego creamos el archivo ~/.transifexrc con estos datos: [https://www.transifex.com] hostname = https://www.transifex.com username = TuUsuarioDeTransifex.com password = TuContraseñaDeTransifex.com token = 3. Editamos en los archivos “lms/envs/common.py” y “cms/envs/common.py” la variable “LANGUAGE_CODE” de forma que quede igualada al idioma por defecto deseado para las plataformas LMS Y CMS. Junto a la variable, como comentario, hay un enlace con un listado de códigos de lenguaje. Hay que usar el formato de Django para esto, que es con las letras en minúsculas y en el caso de las variantes idiomáticas, con un guión normal. Así por ejemplo, para el castellano sería: LANGUAGE_CODE = 'es-es'. De paso podemos aprovechar para cambiar la variable “TIME_ZONE” para tener bien la hora en la web. En nuestro caso concreto es 'Europe/Madrid'. 4. Ejecutamos este comando para descargar, instalar y configurar las traducciones de transifex: 55 https://www.transifex.com/projects/p/edx-platform/ IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 464 rake i18n:robot:pull 5. Reiniciamos el LMS y CMS y los Workers: /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp: /edx/bin/supervisorctl -c /edx/etc/supervisord.conf restart edxapp_worker: 6. Finalmente vamos al panel de administración de Django en http://TuWeb.TuDominio/admin y añadimos los idiomas que queremos habilitar para que puedan escoger los usuarios dentro “Dark Lang configs”, pinchando en “Añadir dark lang config” y poniendo los idiomas deseados al estilo Django, separados por comas. Por ejemplo para castellano, euskera e inglés usaríamos: “es-es,eu-es,en” (sin las comillas). Así a cada usuario le saldría a la izquierda la opción de editar su idioma preferido. Imagen 1: Añadida configuración de idiomas Imagen 2: Resultado para el usuario de añadir idiomas IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY 465 No se recoge en este documento la instalación de un tema, puesto que el sistema de temas está en actual migración a un sistema mejor, y el actual tiene varios problemas, que dada dicha migración dudo que se resuelvan. IKASNABAR 2014 - OPEN EDUCATION AND TECHNOLOGY Referencias Pereira, Juanan. Comparación de diferentes plataformas de código abierto http://edx.asmoz.org/pdf/estudio_comparativo.pdf (Consultado en 2014-Mayo-30) Manual de instalación de Open Edx en producción sobre Ubuntu 12.04 https://github.com/edx/configuration/wiki/edX-Managing-the-Production-Stack (Consultado en 2014-Marzo 20) Manual de manejo de entorno de producción de Open edX https://github.com/edx/configuration/wiki/edX-Managing-the-Production-Stack (Consultado en 2014-Marzo-20) Manual de comandos adicionales de manejo de Open edX https://github.com/edx/edxplatform/wiki/Shell-commands (Consultado en 2014-Marzo-20) Manual de internacionalización de Open edX https://github.com/edx/edxplatform/wiki/Internationalization-and-localization (Consultado en 2014-Marzo-22) Manuales de Open edX de la fundación Asmoz http://edx.asmoz.org/ (Consultado en 2014Mayo-30) 466