I recently did a presentation to a large community college - essentially presenting in competition to BB and webCT. The client sent the following list of questions, and under a time deadline, I did my best to answer them without fudging, but in the absence of a lot of the technical specs that hitherto have not been my expertise.
Please if you have any time or inclination, point out discrepancies or add additional comments as follow-up replies. My hope is to add these to the adoption FAQ's at moodle docs.
In following up, it would be helpful to include the number of the relevant question, and maybe even the question itself. I won't be embarrassed if you take my replies and use the strikethru to show edits to them!
1.1 What platforms can the server run on
(Windows, Novell, Mac OS X, what varieties of Linux)? What platform is
most commonly used for the server, and which do you recommend?
Moodle is designed around the LAMP (Linux Apache mySQL PHP) platform, but can also run in WAMP (Windows Apache...) and in theory could run on WIMP (Windows IIS)... but why would you? I've installed and run the WAMP platform on a laptop, and use it for demonstration, but don't see why you'd ever want to burder a server with windows unnecessarily, since by definition, a lot of the overhead goes towards the GUI, which on a webserver is unnecessary.
1.2.What back-end databases does your solution
work with (e.g., Oracle, Microsoft SQL Server, BDB. PostGres, MySQL)?
What versions are allowable or required (e.g., Oracle 9 or 10)? Can the database backend run on the application
server, or does it require a separate machine?
Moodle is designer around the MySQL database. Due to some syntactical differences between the various RDBMS' it would involve some development and adjusting- the degree based on what the moodle community and others have already made available, and how large the differences are. Given the excellent performance of moodle with the default LAMP platform, I'd suggest that using anything else should warrant some justification. I have heard the PostGres may offer certain performance improvements, and is a solution that a large New Zealand based Moodle partner uses. I wouldn't understand, however, why someone would want to use Oracle (which is expensive) instead of mySQL (which is free) and go thru the necessary modifications as well. As with any
complex software, the cost of making custom changes also carries thru into future versions as each customization must be engineered into future versions. Where the default will suffice stick with it.
There are no indicators I've seen to suggest another database would benefit you in the least, but I suspect there is discussion of this on the moodle.org forums.
2. What are the minimum and recommended
hardware configurations for running your solution? How well does your
product work in a clustered environment (for example, two- or three-node blade configurations with physically attached SAN
storage)? What are the minimum disk requirements?
I'll give the classic consulting answer: "It depends." I've installed moodle on my 6-year-old laptop which is a PIII of some variety with only 256MB or RAM and a 6G drive. Anything from mid-range and up should be MORE than sufficient for the normal installation supporting a few hundred courses and thousands of users. The caveat is that concurrent loads are what matters - so 100 students all hitting "submit" on a quiz at the very same second might slow everything down, whereas thousands of users hitting a server over a few hours might not show up at all.
So to give some context, here are a couple of
examples (from 2004, when boxes were more expensive, but moodle was less
powerful) from http://moodle.org/mod/forum/discuss.php?d=13303:
".. for 100 students a P2-266 with 64 mb's ram is sufficient..."
"We running a clone server pentium 4, 1G of ram not even a dual processor about 5,000 students around 2,000 are active. Moodle is not only thing thats runs in our server but other hosted websites too (library and stuffs). Our server is also the DHCP server for our client, the busiest server ever. Server crash from time to time. "
We're running a dual 2.8 dell with 2GB, RedHat E, ~6600 students (but only ~400 currently in active classes) and several university wide postnuke sites in addition to Moodle, and have at most hit %5 system resources so far. "
With regards to the clustering, this is being done
in a few places, but moodle's performance is generally so good, it's not
usually necessary. There is also a healthy discussion with resources of
this at moodle.org, and open university will be
aggressivly working on this for an environment to support 130,000 students.
There is a relevant overview of this at
http://www.bath.ac.uk/dacs/cdntl/pMachine/morriblog_comments.php?id=312_0_4_0_C - of particular note, there are a number of things that usually work, includin moving up in number of CPU's, adding RAM, and in our particular case looking at the use of chat and the timing of the cron job (which is very processor intensive). I tend to agree with some of the others on these forums that organic growth is the way to go. Set yourself up with a solid affordable hardware solution, and then be ready to add to it IF and WHEN you need to, but not before. By the time you need to, Moore's law will have driven down the hardware costs, it'll be a new fiscal year, more code will be optimized and refactored, and you'll have a handle on current usage at your institution.
The SAN storage is not an issue- but again, the sizing issues are based largely on your estimates of the types of users you'll have and the work they'll do. Drive space needed is directly proportional to the file storage used in courses, as the code for the platform itself uses very little space. So if a user uploads 600MB of videos to their course, there better be that much (plus the standard extra of 10-30%) available. Courses without videos or substantive audio or graphics files tend to be very small- on the order of less than a MB. A course with 5-10 office documents attached per week for 16 weeks could quickly go up to 20 MB, and so you can do the math to figure out HD storage needs. It's more efficient to put huge media files on a specialized media server, but if you put them right into moodle, you'll need to account for that storage.
3. How well does your product integrate with
standard Student Information Systems (e.g., SCT Banner)? What products
are required for such integration? Is it possible to set up live links
(with two-way integration), or is the integration a
Moodle does not have built-in integration with current vendors, but it's entirely open- which means if your vendor has output (like course ID's and names) or input (like grades or instructor names) then any developer can talk to the database and move the data in or out or both. As more schools adopt moodle, more people will develop tie-ins and associated scripts. The biggest risk is that
4. How well does your product integrate with
portal products*either open-source solutions like uPortal and Plone, or
commercial solutions like SCT Luminis? Are any third-party products required to set up such integration? In your
experience, what resources (staff time, training, expertise) are required for
such a project?
At the simplest level, you can embed moodle within a frame of any application - so if the application has a frame, you can put moodle in it. For other tie-ins, moodle's open architecture lends itself to integration, particularly with other open-source tools. Obviously there are adjustments that need to happen to go from one platform to another (Plone is python on zope, for example, whereas uPortal is java) but the kind of integration you might want with a portal would be to have a student see a list of courses in moodle. This functionality is more dependent on the portal than the LMS actually, since the LMS would not normally have portal information in it, but the opposite is not the case. I can't comment on third-party, as we've done things in-house with Plone. I'm not yet happy with our internal solution, but our IT folks are making slow progress (with both uPortal and Plone). The resources needed - I hate to say this - are totally dependent on what you are trying to do, your environment, and the skills of your people. Our Plone deployment has been stalled for almost a year now- as the necessary team had to be created, and politics consistently interfere with developing a useful information architecture. In a related fashion, integrating such tools with your SIS is likely to be much more challenging than integrating them with moodle- and so that is probably a better question to address first.
5. How well does your product work with open
standards like LDAP and Kerberos for authentication? Is it possible for
an LDAP server to provide both authentication and course and registration data? If so, what schema
modifications are typically required to do this?
Moodle will tie directly to LDAP sources right out of the box. We use AD, whereas a school district I worked with uses NDS and their admin- with NO moodle experience - was able to connect moodle to their service with little effort.
6. Does your product allow for an independent
database of users for test purposes? For example, if LDAP authentication
is used to authenticate students and instructors against an external server, is it possible to enable additional,
local accounts that are not in that server, for test purposes?
The simplest way to do this would be to simply have another install that has different authentication, or to create dummy users with known generic ID's on your live system. If you want to combine authentication (say LDAP for some and email authentication for others) then you'd probably need to do some minor custom work. I'd be interested to know a bit more about this scenario to understand what you're wanting to accomplish. The overhead of running a (normally) dormant additional moodle instance on a server is pretty low.
7. Does your solution allow for live backup
of student and class data, or does the application have to be taken down for a
Courses typically default to backing up once a day, and this is done without outages. The only outages we've needed were for upgrades, and while we scheduled several hours they took place in far less time.
8. What command-line interfaces are available
for manipulating objects in this products database (e.g., are there ways to
script mass import of user and creation and deletion of classes, etc)? Can these tools be used while the application is
live, or must it be taken off-line?
The standard database is mySQL which has a command line interface. Many people prefer PHP myAdmin as it provides a friendlier interface to mySQL. Any SQL compatible programming language can have code written to do whatever you see fit, and for obvious reasons PHP is a common tool used for such activities. You can also easily generate mySQL scripts that could be run just like you would the equivalents with, say, Oracle and SQL+.
9. What provisions are there for moving user
and course databases from one server to another, in case the primary server
fails? Can we transparently back up the database on the primary server and restore it to a backup server?
They are actually one database, unless by user database you mean the directory you are using. You can back up the entire database at anytime, but it makes sense to take snapshot backups (say at 3 am each day) which could restore the entire site. You could also look at RAID options if this is a major concern. Moodle's built in tools and utilities are quite functional, and the fact that we think nothing much of putting in another instance whereas our BB install has been accumulating courses (and data) for 9 semesters.
10. If your product requires licensing or product
activation codes, must we purchase a separate license if we wish to keep a
near-line backup on a second machine that is running your application?
Moodle requires no licensing whatsoever, so this question is moot. This is one of the wonderful things about open-source software. It's free, and that gives you freedom.