Moodle is a learning management system for producing Internet-based course Web sites. It is written in PHP and is easy to install and use on Linux, Windows, Mac OS X, SunOS, BSD, and Netware 6. It has been designed to support modern pedagogies based on social constructionist theory, and includes activity modules such as forums, chats, resources, journals, quizzes, surveys, choices, workshops, glossaries, lessons, and assignments. It has been translated into over 70 languages, with more on the way, and supports the popular SCORM standard for content packaging. Moodle offers a free alternative to commercial software such as WebCT or Blackboard, and is being used by a growing number of universities, schools, and independent teachers for distance education or to supplement face-to-face teachin

Journal Entries

Avatar

Think different Today I'm going to be completely innovative and will skip any reference to our favourite LMS. So, apart from Moodle... uhm... oh, no! I did it... again! :-( Will try to achieve this tomorrow, grrr! :-P :-D :-P stronk7 — 15 days ago

Avatar

History and Stories I've felt really nostalgic today. Two reasons: the first, I reviewed in the cvs history my first commit ever to Moodle, it was one tiny change to moodle/course/teacher.php (non-existing nowadays), see MDL-261, more than 6 years ago!. The second, I attended to the worldwide avant premiere :-P of some cool Moodle stories by Helen, amazing! What a day, marvellous! Ciao :-) stronk7 — 28 days ago

Avatar

Aiming to the XMLDB Editor META Next 1-2 days I want to spend some time fixing / improving the XMLDB Editor (that tiny toy used to create Moodle DB structures). So, if you have any idea / suggestion or if I've missed your existing bug when collecting them under the META umbrella... now it's time to add them ASAP to http://tracker.moodle.org/browse/MDL-19303 Ciao :-) stronk7 — about 1 month ago

Avatar

Enums are good, enums are out Following the idea commented in http://tinyurl.com/d39pm2, enums are 100% out from Moodle 2.0 core. If your code is using them, it's a good moment to visit http://tinyurl.com/odaqxr and tell them, once and forever, "Bye, dear enums". Really easy to achieve, ciao :-) stronk7 — about 1 month ago

Avatar

Olé and Olala, Java! Has been refreshing to play with Java again after one year. And also I learned al lot about Maven2, cool!. Here it's the result, applied to Jira Moodle Tracker: http://tracker.moodle.org/browse/MDLSITE-706 stronk7 — 3 months ago

See All Journal Entries


Ratings & Reviews

Community Rating
4.3/5.0

Based on 40 user ratings.

Your Rating

Click to rate this project.

Links

3 links submitted so far. Submit your own links.

News

Edit RSS feeds.

    Sam Marshall

    It's not a Friday, but it is way too hot (about 30C in our office) and I need a break, so here's a blog post.

    This time it's about accessibility. I had a think (and discussed with one of our in-house experts) what to do about screenreader ... [More] accessibility for forums. Turns out nobody really knows.

    Here's my best shot at it - this is a screenshot of a ForumNG discussion with 'View / Page Style / No Style' in Firefox, which is a convenient way to approximate what screenreader users 'see'. (Yes, there are extensions etc. that do it more accurately - or you could actually use a screen reader, but last time I installed JAWS it did horrid things to my computer, so not going there again. Anyhow.)

    Here are the accessibility points in the above screenshot:

    Each post has a level-2 heading (which is not visible to sighted users). This means that screenreader users can skip through posts by pressing the H key. [If the post has a subject, that'll be a level 3 heading.]
    The level-2 heading gives each post a number (not visible to sighted users). Numbers are in date order of posting.
    The heading tells you which post (by number) the current one is a reply to. (That's also a link, should it be necessary to skip back up to the parent post.) This is important because screenreader users likely don't have access to the visual information that indicates it - indents to indicate which post replies to which.
    Also in the heading is information about the category of the post that is otherwise only available visually - whether it is 'summarised' (showing only the first few words) or not, whether it is 'unread' or not.
    All the links that are copied for each post (Reply, Edit, Expand, etc) contain the post number so that the links are unique. [Having lots of links with identical titles is an accessibility problem.] Again, the post numbers do not display to sighted users, there it just says 'Reply'.
    There is some use of appropriate XHTML: in addition to headings (as mentioned), the per-reply commands have been formatted as an unordered list.
    I'm sure we can do better but I think this is a good start and it illustrates a few tricks and issues so I thought it might be useful for other people.

    If anyone has easy-to-implement suggestions about improving accessibility further over this layout, please add them here. Difficult-to-implement suggestions will probably be ignored. :) [Less]

    Helen Foster: MoodleMoot hash tags

    Having read the article Cannot Get to a Conference? Get on Twitter (thanks to my twitter mentor for the link), I've just checked that all the upcoming events in the moodle.org calendar include a hash tag, and have updated the list of tags in use in ... [More] Standard Moodle tags.

    If you can't manage to attend one of our upcoming MoodleMoots, you can always get live news reports instead by monitoring the event's hash tag! [Less]

    Helen Foster: Rating useful forum posts

    Have you ever considered rating any useful forum posts in Using Moodle? Here are my reasons for doing so:

    Ratings make useful posts easily identifiable for others browsing the forums.
    Ratings provide feedback for forum posters.
    ... [More] Particularly helpful Moodlers are calculated based on forum ratings.
    Useful posts are highlighted in the recently rated posts block on the Using Moodle course page (which uses the RSS feed from http://moodle.org/useful).

    Useful posts are shared via http://twitter.com/moodle. (As a recent twitter convert, I especially appreciate the value of this!) [Less]

    Dan Poltawski: Turning my iPhone into a Moodle Server

    Having ended up with a spare iPhone from a recent upgrade I decided to try jail-breaking the old one and see what software was out there away from the restrictions of the app store. I discovered that lighttpd, php and sqlite were all available from ... [More] the software repositories for download - these three combined are enough to run a Moodle server. So out the window went cleaning my flat and sensible tasks - I had to make my phone into a Moodle server!

    Getting the software for moodle installed and configured was relatively painless, the 'cydia' software installer appears to use dpkg under the hood, so I installed openssh server and apt through the gui installer and then sshed onto the phone to do the work with a full size keyboard and the moodle server was up and running quite quickly. (More details for configuration below).

    Sqlite is a really interesting technology which seems to be making its way into a lot of software and I was quite interested to see Moodle support for lightweight testing sorts of applications and it has made its way into Moodle thanks to the great work of Andrei Bautu in his GSOC project last year. It only exists in the highly unstable Moodle 2.0 development branch so I needed to install this on my iPhone. Development is moving incredibly fast in the Moodle 2.0 branch so I was not at all suprised to see that the sqlite driver was not working. It took a bit of time to find out what the major issue with the driver as it was a silent error. But I eventually found and fixed the major issue.

    Sadly, despite successfully installing and passing most of the database unit tests on my development machine with sqlite, some database queries were continuing to cause the iPhone server issues. I spent some bit of time improving the sqlite driver to show more debugging information and get to the bottom of the issue.

    After a lot of debugging and irritation, it seems that the sqlite library version (3.3.7) linked to from php has a bug/incompatibility which means it does not like queries like:

    SELECT student.id FROM mdl_user student JOIN (SELECT ra.userid FROM mdl_role_assignments ra) roles ON student.id = roles.userid

    It'll report: SQLSTATE[HY000]: General error: 1 no such column: roles.userid
    Where as it will work fine with something like:

    SELECT student.id FROM mdl_user student JOIN (SELECT userid FROM mdl_role_assignments ra) roles ON student.id = roles.userid

    (That was a simple example to try and find the problem - the SQL we have in moodle is a lot more complex that that).

    To confuse matters, the sqlite command line tool I was using to test on the phone itself was a newer version (3.6.12), which works absolutely fine with both queries. The same was true on my development machine, which meant that I could install with sqlite succesfully everywhere but the iPhone itself. I assume the php version has been linked to the iPhone OS version - but I am too lazy to check/do something about it!

    While I don't yet have a working moodle server install running on the phone itself, the exercise in improving the sqlite driver has been really useful. I've updated the driver in CVS, on recent sqlite versions it is only currently failing 9 of 1298 tests. (CEIL and SUBSTR being the major issues - but they are only used for stats and the admin healthcheck) so its really looking like a really useful option for those situations where a full-grown database server is overkill.

    I've put a video of the (disapointing) install on youtube and you can find details of the various bits of configuration below.

    Configuration Details
    I love apt

    apt-get install lighttpd php sqlite3 git

    I've never configured lighttpd before, but a quick search for configuring with php and I made a very simple config with /etc/lighttpd/lighttpd.conf and /etc/lighttpd/mod_fastcgi.conf

    JB-Phone:~ root# cat /etc/lighttpd/lighttpd.conf
    include "mod_fastcgi.conf"
    server.document-root = "/htdocs/moodle"
    server.port = 80
    server.tag ="lighttpd"
    server.errorlog = "/htdocs/log/error.log"
    accesslog.filename = "/htdocs/log/access.log"
    server.modules = (
    "mod_access",
    "mod_accesslog",
    "mod_fastcgi",
    "mod_rewrite",
    "mod_auth",
    "mod_fastcgi"
    )

    index-file.names = ( "index.html", "index.php" )

    # cat /etc/lighttpd/mod_fastcgi.conf
    fastcgi.server = ( ".php" =>
    ( "localhost" =>
    (
    "bin-path" => "/usr/bin/php-cgi",
    "socket" => "/tmp/php.socket"
    )
    )
    )

    And started the webserver manually with:

    lighttpd -f /etc/lighttpd/lighttpd.conf

    I created the /htdocs/ directories - and git cloned moodle into /htdocs/moodle and created the moodle config file as mentioned in the sqlite moodle docs:

    $CFG->prefix = 'mdl_'; // prefix to use for all table namesV
    $CFG->dbtype = 'sqlite3';
    $CFG->dblibrary = 'pdo';
    $CFG->dbhost = 'localhost';// leave dbhost to localhost (or blank) to store the database file in Moodle data directory

    Oh and I was also naughty and made the 'zip' php extension an optional item (as it wasn't in the packed php version):

    diff --git a/admin/environment.xml b/admin/environment.xml
    index e15a33b..94ed8f2 100644
    --- a/admin/environment.xml
    +++ b/admin/environment.xml
    @@ -262,7 +262,7 @@
    <ON_ERROR message="ctyperequired" />
    </FEEDBACK>
    </PHP_EXTENSION>
    - <PHP_EXTENSION name="zip" level="required">
    + <PHP_EXTENSION name="zip" level="optional">
    <FEEDBACK>
    <ON_ERROR message="ziprequired" />
    </FEEDBACK>

    Enjoy! [Less]

    Sam Marshall

    By today I'd hoped to have the ForumNG discussion display working in the basic non-JavaScript version, but that was not to be :(

    I've got about half-way through the display of single posts, which is obviously a key part of this ... [More] , but.

    On the plus side, the forum view page is pretty well complete now (the sorting options work, mark read works, etc).

    As for why that discussion code isn't done yet, well, out of five days this week I've recorded 1.25 days of development. The rest is code review and otherwise assisting the other developers on my team; fixing problems with our live system, and analysing a performance question (we've just made a 3% performance improvement, woohoo); providing support for users of our existing stuff; etc. I sincerely hope next week is better, otherwise I may need to go into hiding in order to get anything else done.

    Oh, and I've now seen a document sent by aggrieved FirstClass users. For non-OU people: FirstClass is the existing commercial conferencing system we use; it's being phased out in favour of Moodle forums, which is basically why I'm writing an updated Moodle forum version.

    They seem to be rather concerned about bandwidth usage! I'll have to make sure ForumNG is reasonably efficient in that regard... now I'm wondering whether I should change all my CSS class names that begin 'forumng-' to 'fng-', which would save a whole 5 bytes each time...

    [Conclusion: Er, no.]

    Or, maybe if we turn on gzip transport compression they will be perfectly happy with getting rid of FirstClass...?

    [Conclusion: Hell no. :)] [Less]

Read all Moodle articles…

Download Page
167 downloads

Who uses Moodle?

Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar

Who contributes to Moodle?

Avatar Avatar Avatar Avatar Avatar Avatar Avatar Avatar
I'm a contributor

Who manages Moodle?

Avatar
I'm a manager

Where in the world?



Related Projects by Tags

Claroline, ILIAS, LAMS, OLAT, Trellis LMS


People who use Moodle also use:

NoseRub pChart Work Request Management System


Project Cost

This calculator estimates how much it would cost to hire a team to write this project from scratch. More »
Include
Codebase 721,518
Effort (est.) 197 Person Years
Avg. Salary $ year
$ 10,850,473