Doubting between Drupal and Moodle - Experiences/advice asked. We received a grant to develop an open learning platform on anatomy, that will contain both repositories for anatomical data and learning functionality using these data. The anatomical data comprises images, separate terms, coordinates, folders with Google-maps-like image tiles, video, 3D data, etc., all to be multi-tagged. The learning functionalities are for instance quizzes, flash cards, 'drawing on image'-assignments, peer-review, ranking, competition, serious games, etc.
We are considering either Drupal or Moodle to build the platform on, possibly supplemented with a repository system such as DSpace.
We are looking for companies or developers with extensive experience in creating educational applications preferably with both Drupal and Moodle, for advice and possibly for building this platform.
During our investigations so far we heard contradictory views. We would like to hear comments on these views:
- “Moodle is rigid and doesn’t allow developing such varied things as Drupal does”. Others deny this. If so, how does the rigidness of Moodle show? What kind of things cannot be made or done or require far more effort in Moodle, that would be possible (easier) in Drupal?
- “Updating Drupal is a headache, especially if you have a site that uses a lot of extensions. And developing in Drupal does require a host of extensions. Moodle handles updates better due to its stricter OO set-up”. Is this recognizable? Do you expect Drupal 8 to solve this?
- “Developing learning activities in Drupal is possible but requires 2-3x more development time than in Moodle, because there are far less educational possibilities/extensions in Drupal than Moodle has out of the box”. Is this correct?
- What are important differences in the programming architecture of Drupal vs Moodle?
Thank you for any information!
Paul Gobée
Leiden University Medical Center, dept. Anatomy & Embryology, Netherlands
Comments
We have a product that used
We have a product that used Moodle as an LMS backend and Drupal as a CMS for a while. Eventually we got rid of Moodle and were able to replace all the functionality with a Drupal L+CMS. So hopefully these answers are helpful and (mostly) unbiased since I've had experience in both products as an LMS.
"Moodle is rigid and doesn’t allow developing such varied things as Drupal does”
I agree and find the Drupal API/module system much easier to work with. For example if you want to add custom fields to anything in Moodle it absolutely requires custom schema work to add field storage (Drupal has a field storage API so you do not have to worry about this). This alone doesn't qualify Moodle as "rigid" but I believe customizing Moodle to your requirements takes much more code and work than Drupal. Because everything is an (should be an) Entity in Drupal they share the same controllers so it is easier to do just about everything. We've had several customer requests to add custom, sortable, filterable fields to individual questions and this would have been a massive task to undertake in Moodle, especially because we have multiple customers that will all have different fields to maintain.
Moodle has better reports for course activity out of the box, but again if you want to modify these reports it is not as easy as editing a View and adding your custom fields. Each object has it's own reporting engine, each with its own capabilities.
I could go on and on with examples but in general if you need to customize Moodle it is going to be more difficult to start and maintain. We had many modifications to Moodle and all of them required maintaining custom schema or adding custom code that doesn't survive a Moodle update.
The other part of being perceived as "rigid" is the community. Moodle is much slower to change as much of the functionality is core, and improving a built in Moodle module takes much longer than contributing to a Drupal module.
“Updating Drupal is a headache, especially if you have a site that uses a lot of extensions. And developing in Drupal does require a host of extensions. Moodle handles updates better due to its stricter OO set-up”
Our typical Drupal site uses 150+ active projects (around 250 active modules). With Drupal you can update all your modules via Drush. Moodle has a UI to do it as well. We do Drupal updates and deployments constantly through CI and the same goes for Moodle. Regarding module updates and maintenance I don't really feel there is enough of a difference here to warrant an opinion either way. I don't think OO has anything to do with it. Drupal will, by nature, have more module dependencies, but only because Drupal's core is lighter than Moodle. Drupal has a module dependency system so dependencies will be added automatically if you are using Drush. Drupal 8 core will contain things that were previously contributed modules like the Entity API and Views, but in my opinion this doesn't make it easier or harder to maintain updates.
“Developing learning activities in Drupal is possible but requires 2-3x more development time than in Moodle, because there are far less educational possibilities/extensions in Drupal than Moodle has out of the box”.
I believe this is half correct. Moodle definitely has more learning objects out of the box and contributed that are designed to be used in courses (https://moodle.org/plugins/browse.php?list=category&id=1). There are even 54 contrib question types compared to Drupal's Quiz module which only has 5 and a short list of contributed ones. The community of people who use Moodle for education is much larger than those who use Drupal. Recently Drupal's Quiz module got a push (from our company) because we needed to close the feature gap from Moodle -> Drupal. We have been able to replace Moodle's Quiz module with Drupal's Quiz and lose no functionality that our existing clients had.
I've found it takes less development, and in some cases, no development to add/change functionality. I think Drupal has more re-use even if it is not specifically designed for "learning" functionality. For example Moodle has a dedicated Questionnaire module for delivering evaluations. But we repurposed Drupal's Webform module and used it as a Course evaluation. We repurposed the Signup module so that we could use it as Course attendance. We used Ubercart to sell courses. We repurposed Book, Poll, other modules to use within Courses. We hooked into SMS for notifications because there's an SMS API in Drupal. When you combine the Entity API/Rules/Views you save so much code and maintenance from not having to write custom storage/events/actions or reports from scratch.
One thing to mention is that SCORM is not fully supported in Drupal yet. There are a few projects out there but it is not as mature as Moodle's SCORM module.
I think "repurpose" is the key here, Drupal already has so much to offer, and when you tie it all together you can coerce it into being an LMS. For example instead of having to build a payment gateway for just Moodle, we built it for Drupal so that it can be used for not only courses but products as well. We built a Certificate module so that PDFs can be generated for Course completion, or for any other purpose (Donation receipt, ticketing system, etc). In the end to build a decent Drupal-only LMS all we needed was "glue" to tie all this existing functionality together.
"What are important differences in the architecture of Drupal vs Moodle?"
Moodle is definitely designed for education in instructor led or massive online courses. One of the big differences in my mind is the context architecture - who can do what and where. For example in Moodle course managers create all the courses, then assign teachers to the courses who can manage only that course, then teachers can add students and other instructors and there are a few more "levels" of participation as well (graders, reviewers, etc). To get this done in Drupal you have to do a lot of work with roles, permissions, Organic Groups, Nodeaccess User Reference, OG roles, etc. to set up a similar "context" which grants permissions.
Moodle does use strict OO in practice more than Drupal, but both are not as OO as Java for example. Drupal's hook system is "object oriented" in design, but strict OO (classes, namespaces) is not really used unless you get deep into the Entity API. Drupal 8 will change this as more functionality is moved over.
Drupal uses a router-based system for URLs whereas Moodle uses individual PHP files for a lot of things. This would affect your SEO if you wanted to do things like create aliases (clean URLs) for courses and content.
For code comparison (Quiz, for example)
https://github.com/moodle/moodle/blob/master/mod/quiz
http://cgit.drupalcode.org/quiz/tree/
As for the Course and activities architecture we use http://drupal.org/project/course as our base and the architecture is similar to Moodle. You have a course with learning objects in it and each of those objects can be required/optional/conditional based on criteria etc.
As for everything else I believe it is pretty similiar, Moodle has an Access API, File API, Events API, Form API, webservices, etc. Overall I believe Drupal modules delegate more back to Drupal, which means less code in the individual modules.
In conclusion it really depends on what you want to do and how much time you want to spend building/customizing it - you can install Moodle, turn it on and start creating courses immediately because Moodle has a lot of functionality that will work well. For something more dynamic with lots of additional requirements and integrations I'd recommend investigating Drupal.
Resources to check out:
Nice list of modules & distributions: https://www.drupal.org/node/1688262
Projects I use quite often:
https://www.drupal.org/project/course
https://www.drupal.org/project/quiz
https://www.drupal.org/project/course_credit
https://www.drupal.org/project/course_relationships
https://www.drupal.org/project/certificate
https://www.drupal.org/project/rules
https://www.drupal.org/project/views
https://www.drupal.org/project/og
Also if you are interested in a commercially supported, already built Drupal solution, please visit the links in my signature.
MoodleCloud
Thanks for this great write-up, Devin! I've been involved both in the Drupal and in the Moodle community and I'd prefer Drupal over Moodle from a developer standpoint.
For anyone wanting to give Moodle a try, Moodle now offers a cloud-based service free of charge for small implementations: https://moodle.com/2015/07/06/moodle-launches-moodlecloud-free-hosting-f...
Frank
My LinkedIn profile
Thank you for your detailed reply!
THANK YOU Devin for the extensive and very on topic response. After a first quick read, I will re-read and study the links. Much appreciated!
Paul
Yeah Devin nailed it there on
Yeah Devin nailed it there on the Moodle vs Drupal comparison. You'll be building components but that's not a negative. If you want something that doesn't have to feel like an LMS, you'll never get that with Moodle.
As a edtech developer in the Drupal space for 8 years now, we picked Drupal over Moodle because we wanted full control over the experience in all facets. We wanted the architectural flexibility of Drupal as well as the fundamental assumption that the platform is for building the web, not the LMS experience. This allows us to leverage 1,000 upon 1,000s of web developers who are building websites, which then allows us to build (far less) tools then are available, leverage the larger community and use pedagogy to inform and build the technology instead of using pedagogical assumptions of the components that come out of the box.
In addition to Devin's list I'd definitely add H5P which ELMSLN recently adopted and we're starting to get integrated / showcased. It's another platform that just happens to integrate with Drupal which is more in the authorware vein and is really impressive so highly recommend checking out.
http://drupal.org/project/h5p
http://h5p.org
I'm the lead developer for a Drupal based edtech platform called ELMSLN which highlights the flexibility of building on top of Drupal instead of Moodle. Without pushing joining our community too much I'll say, you should join our community if it interests you and I'd be happy to answer questions related to what the grant / needs call for and what the platform allows / enables :).
Code / Videos / white papers can be found at http://elmsln.org/
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
Thanks for sharing h5p,
Thanks for sharing h5p, @btopro.
It seems like an alternative to Common Cartridge, but for applications that can be integrated directly into a learning platform.