I’ve been really excited about the progress I’ve been able to make with the ELMS distribution for the latest version. To most, it will seem that this has to do with adding functionality and additional stability to the platform. Those are great, but there’s something far more subtle that I’ve been able to establish in the platform with this version: Something not specific to education.
As I’ve written before, I believe fully that better technologies / frameworks breed better, more sustainable solutions. As such, it may seem counter-intuitive to put all this effort into something that is inherently non-educational. I’ve done this to maximize the impact and eyes that can get on the code at all levels. If this was just something that worked for educators (like Moodle is) then I’d be more or less barring 80% of the community from caring.
While previous versions of ELMS were mired in the context of Courses and Offerings of courses, as of Alpha 6 I’ve been able to break free of these connotations at a code level. Everything you see with ELMS that makes you think it is specific just to education has been abstracted. Here’s how:
- Install Cores – ELMS ships with two install cores as of Alpha 6. This is mostly just to showcase that it is possible to install the system towards very different purposes off 95% of the same code-base. The Instructional CMS (ICMS) is what was originally being developed towards solely, this will now enable me (or anyone) to develop towards a more collaborative learning environment (CLE) while reusing almost all of the work I’ve done for ICMS.
- String Overrides – All language that references Courses, Versions, Offerings, and things specific to the ICMS have been written back to a single variable in the database. The module providing this is called String Overrides and essentially allows you to alter the context of the system’s language globally with a simple form. ICMS alters this language a little different from CLE, and suddenly we start to have two very different systems.
- No required Theme – This is a major difference between ELMS and all the current distributions out there. ELMS has no required theme. While it ships with a theme called Cube enabled for the system layer, this and any theme from drupal.org should be able to be used in the mini-sites that are created. Most of what a system is to people is in the theme layer so this is critical in my mind.
- Regions – ELMS as a system layer is more of a wrapper on top of traditional Drupal. This wrapper (provided by a project called Regions) enables the user to do one very important thing: Never have to touch Drupal pages. I think this will take some getting used to for some devs but ultimately it provides much more consistent, touch friendly interface elements that keep people focused on the site without detracting from it.
- Kit Compliant Features – if functionality works one place it works many. That’s what Kit packaged Features in Drupal allow you. It’s like modules and configuration of how to use them all rolled into a simple enable button. Because ELMS features are kit compliant they will work in the various implementations of ELMS that are going to come down the pipe (ICMS and CLE are the beginning)
It is for these reason that I’m so excited about the potential for the types of systems that ELMS can create. It also puts my mind to rest knowing that I can swap out the entire connotation of the system on install. This vision is of a picture I’ve had in my head for the better part of a year, driving me slowly to madness .
I’ll be presenting at Drupalcamp Baltimore Friday on this concept of using one distribution to mutate into many. I think you could reduce the development time of many complex systems as a result of the ELMS code-base. The code / feature set allows for anything that meets these requirements:
- There is a wrapper of some kind (parent, or course) that has micro-sites associated to it
- There is a micro-site (site, or version) that can function also to the same level of flexibility as a full Drupal site
Here are some concepts that I think could be built with ELMS pretty quickly:
- Popular Blog site dot com – This web service has a User to Blog relationship (ELMS + blog theme + blog + simple aggregators)
- Popular Survey site dot com – This web service could have a User to Survey or Organization to Surveys relationship (ELMS + Webform)
- E Portfolio - 1 to 1 Student to slightly different kind of blogging platform (Popular blog site dot com + a few image views)
- Rubric Management service — Course to Instructor relationship (ELMS + Rubric)
- Student Club management — Club to website relationship (ELMS + a few themes + features from atrium / commons for collaboration)
- Asset Management System — Organization to Project relationship (ELMS + few content types to handle media implementation)
- Traditional LMS – While i wouldn’t recommend this, it’s certainly not far off (ELMS + Quiz + Gradebook + LTI)