A series of evaluation technical questions

A series of evaluation technical questions

by D.I. von Briesen -
Number of replies: 1

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!

D.I.


 

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 snap-shot system?
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

they won't find the time to contribute such work back to the community- usually not a result of being stingy, just not getting around to it. So the challenge is finding the people who've done the work. I believe you are a Banner school, and Michael Penney would be the go-to guy on that, as I believe Humboldt is a Banner School. I suspect there are many others as well. I've also spoken with many educators who simply do manual processes on a semesterly basis. While it seems kludgy, my own experience in doing a spreadsheet based enrollment suggests that doing such things is very fast and not all that tedious. So if your system can export a spreadsheet of thousands of courses, you could write a macro to create a compatible format, and then dump that right into moodle's database- and viola' - thousands of courses!

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 complete backup?
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.

Average of ratings: -
In reply to D.I. von Briesen

Re: A series of evaluation technical questions

by Visvanath Ratnaweera -
Picture of Particularly helpful Moodlers Picture of Translators
Hi

Your arguments makes perfect sense to me!

Here is my 2cents:

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.

I didn't have the chance to run Moodle on PostgrSQL. My belief is that Moodle runs out-of-the box on PostgreSQL. It is a matter of selecting the database type during installation.

... I have heard the PostGres may offer certain performance improvements, and is a solution that a large New Zealand based Moodle partner uses.

That's right. The NZ advice to use PostgrSQL for very large (> 20'000?) installation.

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.

The big database contenders like Oracle have their domain, financial institutes, governments, etc. Most of the public schools I know of have never seen such money sad

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?

Moving course _content_ amoung Moodle installations is a child's play.