¡Hola! Esta es la documentación de los Componentes Mumuki, un ecosistema de piezas de software libre diseñado para construir herramientas educativas basadas en tres principios:
Este ecosistema presenta una arquitectura híbrida en torno a bibliotecas, aplicaciones HTTP y frameworks para el lenguaje Ruby. Además tiene excepcional soporte para ejercicios de programación y pensamiento computacional, al posibilitar la ejecución y evaluación de código, provisto en parte por la herramienta Mulang, desarrollada en Haskell.
Los componentes son desarrollados por el Proyecto Mumuki y una comunidad docente y programadora, y son la base de la Plataforma Mumuki.
Todo el código (incluida esta misma documentación) se encuentra bajo la organización Github Mumuki, distribuido bajo licencias libres GPL versión 3 o bien MIT, según el componente.
Por otro lado, el contenido, también libre y distribuido bajo licencia CC BY-SA, se encuentra distribuido a lo largo de varias organizaciones Github, como MumukiProject, sagrado-corazon-alcal, pdep-utn, 10pines-mumuki entre otras.
Finalmente, esta documentación, al igual que la Plataforma Mumuki y el Proyecto Mumuki, se encuentra en continuo crecimiento.
Es probable que encuentres errores y omisiones; en tal caso no dudes en comunicarte con nosotros a través de nuestra cuenta info@mumuki.org, de nuestro grupo devs@mumuki.org, o de nuestras cuentas en Facebook y Twitter
Los cuatro servicios principales el ecosistema Mumuki están modelados como Engines para el framework Web Ruby on Rails
mumuki-laboratory
): provee funcionalidades de code-assesment que permite a un estudiante acceder a explicaciones y ejercicios, e interactuar con ellos a través del envío de soluciones a problemasmumuki-bibliotheca-api
): es un repositorio headless de contenido didáctico (guías, ejercicios, capiítulos, libros), capaz de replicar dichos contenidos en repositorios GIT.mumuki-classroom-api
): es una herramienta headless de seguimiento de estudiantes que permite a los docentes de un curso navegar las soluciones de sus estudiantes, obtener estadísticas y proveer feedback manual.mumuki-domain
): modelo de dominio y persistencia del ecosistema MumukiEstos tres componentes interactuan entre sí a través de tres medios de comunicación:
Y todo esto se apoya en:
mumukit-*
): gemas reutilizables ruby (gems) que proveen funcionalidades comunes a toda la platormamumuki-*-runner
): servidores http (también distribuidos mediante gemas) que permiten la ejecución de códigobibliotheca-api
)Es un servidor HTTP escrito en Ruby. Utiliza como motor de persistencia una base de datos Mongo. La sincronización con un repositorio GIT es opcional, configurable mediante variables de entorno. Expone sus operaciones mediante un API REST.
La interfaz grafíca de la biblioteca (Editor) es una aplicación de cliente pesado escrita utilizando el framework para SPA (Single Page Applications) Angular.js
laboratory
)Es el servicio más visible: una plataforma web de autoestudio que presenta al estudiante ejercicios para que resuelva, y corrige automáticamente utilizando runners. Está desarrollada en Ruby, utilizando el framework Rails.
classroom-api
):warning: TODO
mulang
)A diferencia de los componentes anteriores, mulang, es un ejecutable y está desarrollada en Haskell.
Todas nuestras bibliotecas (gemas de ruby, todas publicadas en rubygems siguiendo estricto versionado semántico) tienen el prefijo mumukit
Los runners son componentes que capaces de ejecutar y probar porciones de código en un cierto lenguaje.
/test
: permite probar el código, lo cual normalmente involucra los siguientes pasos:
/query
: permite ejecutar consultas, de forma similar a cómo lo hace un intérprete interactivo/info
: provee información introspectiva sobre el runner: su versión, información de ambiente, versiones del lenguaje y framework de test que ejecuta, íconos, editores ACE recomendados, etc.Para contribuir al desarrollo de la Plataforma Mumuki sólo necesitás una cuenta en Github y las ganas de ayudarnos. No importa si sos una programadora Ruby, un diseñador Web o un docente que tiene propuestas de mejoras: todo suma.
Hay dos formas fundamentales de colaborar: subiendo pedidos de cambios y mejoras (issues), o haciendo commits.
Subir issues es fácil, aunque a veces puede no ser obvio en qué repositorio github subirlo:
¡Y prestá atención a las guías de contribución específicas de cada proyecto! Ya Github te las senñalará cuando subas un issue :wink:
El proceso para contribur con aportes de código es simple:
git commit -am 'Add some feature'
La idea de trabajar con Pull Requests es que sea fácil que cualquiera pueda proponer un cambio o mejora; si bien se pueden hacer PRs desde branches de los proyectos en la organización mumuki, eso implica tener que darle permisos especiales de collaborator a cada contribuidor, por cada repositorio, lo cual es lento, burocrático, y si no se tiene cuidado, un riesgo de seguridad. Por eso es que te pedimos hacer tu propio fork.