OU blog

Personal Blogs

New blog post

Visible to anyone in the world
Edited by Sam Marshall, Friday, 26 June 2009, 17:35

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

I've got about half-way through the display of single posts, which is obviously a key part of this, 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. smile]

Share post

Forum start discussion

Visible to anyone in the world
Edited by Sam Marshall, Friday, 26 June 2009, 17:35

Here's another forum update, but first, an apology - yes these posts are getting old, but it is what I'm working on, so I'm hoping it's of interest to someone... somewhere... somehow...

I could write an amusing anecdote instead... but then I can't post it here because the wrong people might read it! Bad enough that I said in one meeting this week 'this feature is absolutely insane, I'm not doing it, just no' and only then found out that the person who requested it was sitting opposite... smile

So, forum. Well, here's the 'start new discussion' screen. In a refrain which has become depressingly familiar, it looks exactly like the old one.


This form basically works now, except for all the features I haven't tested. Hey, those might work too! (Not testing code is sort of the equivalent of sticking your fingers in your ears and shouting LA LA LA I'M NOT LISTENING!!!! - it's great.)

I don't think I mentioned the technical architecture yet. While it doesn't affect the screenshot above (as you may have guessed, I created the code for this form by copying and pasting all the code from the old version then changing it about), the architecture is quite a lot different.

  • This is a slightly object-oriented design: the main system is contained in classes forum, forum_discussion, and forum_post. All the back-end behaviour is handled in these classes (oh, and forum_cron).
  • Forum types are now plugins and also object-oriented. Types entirely control the display of the 'view' (discussion list) and 'discussion' [not yet implemented] page, although it's expected that they will do this by using base class methods rather than really changing it too much.

One piece of good news this week, if anyone's considering switching to this forum once it's developed: Jenny (the OpenLearn lead developer) told me she's hoping to implement the conversion code so that you can convert a standard forum with all its messages into a ForumNG. Yay!

That's it for now. I'm hoping to start work on the discussion page next week (after I deal with umpteen critical bugs) and brace yourself - it's actually going to look different!

Share post

More tedious forum progress

Visible to anyone in the world
Edited by Sam Marshall, Friday, 26 June 2009, 17:34

Given the amount of time I had to spend fixing bugs and attending meetings and doing support this week, it's not surprising I didn't get that much done on the new OU forum. Still, here's another 'oh look! It's just like the old version!' screen:


As you can see, it does indeed look just like the old version - though OU users may notice we've put back user pictures, which are already in this screen on standard Moodle.

On this screen, the 'mark unread' buttons are currently non-functional, as are the links to view discussions (I haven't done that screen yet) and the 'Add a new discussion topic' button (ditto). But paging works. Woohoo! Woohoo indeed.

New features that will be on this screen, most of which also don't work yet:

  • Sorting - the default sort is by 'Last post' date (newest first). You'll also be able to click on the other column headings to sort by 'Discussion' (alphabetical), 'Started by' (alphabetical), and possibly by 'Replies' (biggest first) - not sure about this one. This will be a proper database sort, so you can use it even if there are multiple pages. Note: This feature is already in the OU's customisation of old forum.
  • Sticky discussions - this is sort of half-done. These will display at the top of the list regardless of sort (if there are multiple sticky posts, they will show in the selected order). These may look different in some way (eg pin icon) and there will be a dividing line between sticky posts and normal ones.
  • Locked discussions - again half-done. There will be an icon (eg lock icon) indicating when posts are closed for further discussion.
  • Deleted discussions - not sure if that will be at the bottom of this page, or on a linked separate page, but there will be a way for admins to view the list of deleted discussions in the forum. [In ForumNG, nothing is 'really' deleted straight away - only marked as deleted, so admins can still see it. It can be really-deleted after 30 days, or not at all if you're feeling flush with DB space.]

Another exciting progress update next week! Maybe.

Permalink 4 comments (latest comment by Sam Marshall, Tuesday, 30 June 2009, 16:19)
Share post

New blog post

Visible to anyone in the world
Edited by Sam Marshall, Monday, 8 June 2009, 12:14

From the standard Moodle forum configuration:

'Long post: Any post over this length (in characters not including HTML) is considered long.'

Soooo.... er.... longpost is long?

Share post

Hawthorn chat

Visible to anyone in the world
Edited by Sam Marshall, Friday, 5 June 2009, 17:00

Two posts for the price of one today - I wanted to plug Hawthorn chat.

Hawthorn is a personal project of mine - it wasn't developed in work time. It's an open source (GPL) text chat system designed to be unbelievably simple (to use, not to install) with virtually no features and high performance. It doesn't work on its own; you need to integrate it with an existing website that has an authentication/logon system.

Here's some of the reasons you might be interested in it if you want to add text chat to a website that you run:

  • Hawthorn has no features except text chat (group chat, one box). There's nothing for users to learn.
  • It is, hopefully, extremely fast; and doesn't place any load at all on your existing server.
  • No browser plugins are required; it's all JavaScript. (The server-side runs in Java, but users don't need to have Java installed.)
  • It can be integrated into JSP or PHP web applications using the provided libraries, or into virtually any other platform if you do it 'from scratch'.

And last but not least...

  • It comes with built-in support for Moodle! This installs as a course block and allows either coursewide chat, or group chat, or both. Supports groupings, too.

Check out the PDF that comes with the download if you want to learn more; the documentation's quite extensive.

Although I didn't develop this as a work project, we're evaluating this for possible use here. At present though I don't think anyone has tested this on any kind of scale so be a bit cautious if you do try it. smile

PS Google Wave? Screw that noise... smile

Share post

New blog post

Visible to anyone in the world
Edited by Sam Marshall, Friday, 5 June 2009, 17:06

I'm making some progress on the forum, in between bugfixing and eating licquorice all-sorts (thanks James!). Here's the index.php:


If you squint, you'll see that it is basically the same as the current forum's index screen. (Of course, if you're an OU user, you may realise that we don't actually use the forum index screen here!) There are three notable changes:

  1. The 'unread' count is given as a number of discussions containing unread messages, rather than a number of posts. (This was easier to compute and makes more sense since it's next to the total number of discussions, not posts.)
  2. Feeds are available in both Atom and RSS format (like our blog). These don't actually work yet.
  3. The 'general / learning forums' dichotomy isn't present. This forum doesn't integrate with the latest course news block etc, so there isn't really any such thing as a 'general' forum.

Clicking on the links to the forum takes you to the forum discussion list, which isn't done yet either... smile In fact this is the first 'finished' main UI screen (the global settings page is finished too, but that's not very exciting).

Share post

New forum - start!

Visible to anyone in the world
Edited by Sam Marshall, Friday, 29 May 2009, 14:46

Okay, it's not really the start. I did a lot of back-end implementation before. But I've just begun the serious development phase for the new Moodle forum we're developing, 'forumng'.

(Just to clarify for anyone not aware of the situation: we are developing a new forum independently, for our Moodle 1.9-based system. This is not going to be included directly in standard Moodle. However there is a prospect that our new forum might be considered for inclusion somewhere in the Moodle 2.x series.)

Since the 'basic' part of the back-end was done, this week I've been focusing on the next task on the list: getting email (subscription) support to work. It turns out that this is a pain in the backside to test when you have literally no user interface. smile However, I've managed to do this using the utility I built for load testing which creates forums, discussions, etc.

I've been taking lots of code from the existing forum, and then changing it to fit in with my new infrastructure. That leaves the code almost entirely different, but should still mean that behaviour is rather similar to the current forum. The worst bit was digests where all my assumptions were wrong. Yay!

  • I assumed digests were sent out at an arbitrary time per-forum. They're not, the time is specified and it is done across the system.
  • I assumed this time would be the same for everyone. In fact, in the current system, if digest time is 17:00 then it is sent out at 17:00 in each individual's timezone. Because this would be a right pain in the backside to implement, I decided not to bother; in forumng it always uses server time. I didn't see that much extra value in the current behaviour, especially as most sites relate to only one timezone.
  • I assumed digests were sent per-forum. They're not, they're sent per-course. (They do only include forum messages though and not anything from other activities! Phew.)

As a result I had to change my data model in this area, although the good news is that I was able to throw away one table altogether.

Anyhow it all appears to work now, but I guess I wanted to post because (a) this is what I've been doing for most of the week, and (b) there's a moral to the story: I don't personally use digest mode. That means I don't know how it works and any assumptions I make are liable to be wrong! And they were.


PS I'd be interested in stats for how many people actually use digest mode. Here's a query that works in Postgres:

select 100.0 * (select count(1) from mdl_user where maildigest<>0) / (select count(1) from mdl_user) AS percentage

Our percentage is... drum roll... 0.1%! Ho hum. But to be fair, we don't exactly make it easy for people to edit their user profile options.

Share post

Angelic, er, alternatives?

Visible to anyone in the world
Edited by Sam Marshall, Friday, 22 May 2009, 17:43

Last week I wrote a blog post about how crazy we must have been to make so many changes to the quiz system, causing it to become buggy because we couldn't reliably merge changes from new core Moodle versions.

This week I thought I'd write the opposite post explaining why we did this crazy thing... and why we might be doing more.

Basically it's quite simple - we're a huge institution and we have many existing procedures and policies when it comes to assessment. If we only used Moodle Quiz for formative quizzes, that would be fine. But we're trying to use it to replace the old paper-based multiple choice tests, too. Those count toward marks - so all the usual policies apply.

Data protection law is also a big deal. We have to make sure that the wrong people don't get to see student marks. For example, I just had to fix a panicky last-minute bug in our upcoming release. We have these custom quiz reports (which are part of the 'sort of in Moodle 2.0' work I mentioned last time). It turned out that one report didn't properly support groups, meaning that a tutor in one group could see the marks of students in other groups - not just their own. Oops! Apparently, that's a data protection issue.

(Personally, I get to see everyone's Moodle Quiz marks across the whole system, should I choose! Insert evil laughter here.)

In addition to the law, and university policies, there are also expectations involved with the fact that we've been doing things a certain way for a very long time. The Open University was a pioneer of computer-marked assessment. (And that's not an overstatement - I worked on a previous system that interacted with the assessment results from the current paper-based system; a student's results were, and quite possibly still are, represented as ASCII text files... with characters that have to be in specific positions in each line... because these files are exact representations of the punched cards used in a previous version of the system. Yes, really*.)

* ...well, probably. And it's a fun story.

When we've always done something one way, it's kind of hard to tell people 'nope, you have to do it differently now' - especially in the cases where 'differently' is actually 'worse'. Nobody's complaining that we got rid of punched cards, but pretty much anything else is open for argument.

The next looming challenge is double-marking of essay questions. Moodle quizzes can include human-marked questions. That's great! Unfortunately, University rules say that these questions have to be double-marked (marked independently by two different people who each can't see what the other gave it, and I guess with some procedures if the marks are significantly different). This isn't possible within Moodle. At present we solve this by... errr....

...printing out the answers and sending them to the two markers, who write down the marks (like, with a pen) and send them back (like, in the post) to the relevant department here, who work out the correct mark (like, with a calculator) and type it back into the Moodle gradebook (like, literally a person typing them in one by one).

As you can see that can't continue and drastically reduces the chances that we can use this kind of question at all. So there's a worrying prospect that we may have to make more, scarier custom changes to Moodle quiz in the future!

Key word, though: 'future'. Yep, I'm still waiting for Tim to get back. smile

Permalink 2 comments (latest comment by Sam Marshall, Wednesday, 3 June 2009, 13:38)
Share post

Devilish differences

Visible to anyone in the world
Edited by Sam Marshall, Friday, 15 May 2009, 17:50

(I thought I'd start with a long technical post just to scare off any non-geek readers! Well, maybe that wasn't the reason, but.)

My advice for any organisation that has developers working on customisations to Moodle code is to keep your changes to a minimum. Completely new code that plugs in - new modules, new admin reports, new blocks - is fine, go crazy. But try as hard as possible not to change existing Moodle core code, even if that means telling your users 'no we can't do that'.

Here's where it came up this week - our quiz module. Oh, dear gods, our quiz module. I'm not particularly enamoured of the fact that we've renamed it 'iCMA' (obviously somebody thinks that's a much snappier name than 'quiz') but hey, that was a local language file, so it didn't cause a difference from Moodle core code. Great!

Unfortunately the eighteen million other things we've changed in quiz did cause a difference from Moodle core code. We have custom navigation, custom statistics, custom reports, custom interface, custom question banks, custom grade calculation, custom ARGH. Some of this is kind of based on work which we were sort of hoping would go into Moodle 2.0 and become standard. But what's actually ended up in Moodle 2 is probably going to be a bit different, won't cover all of it, and is still at least a year away! (From becoming the OU's Moodle platform, that is. I'm not speculating on the public Moodle 2 release date. If you need more information on that, please see this definitive reference.)

The changes to our quiz module are so significant that - unlike every other area of code - we've given up merging bugfixes and other modifications from the Moodle 1.9 'stable' branch - there are so many changes it's impossible to merge without somebody completely expert in the system. While the rest of our platform is just moving to 1.9.4, I don't know where the quiz is, 1.9.1 with bits of 1.9.4? Nightmare.

In this particular case somebody was a little bit over-eager when merging in the 1.9.4 changes. They noticed that one file in quiz actually didn't have any OU custom changes! What an opportunity! So they merged the core changes for that file.

Unfortunately, that file turned out to call a function in another file - which had been newly added in 1.9.4, but hadn't been merged in, because the myriad OU changes already in that file made it too complicated.

For now I have fixed this by de-merging the changes and going back to the older version, which presumably means that we are again suffering from a bug which is fixed in standard Moodle. Yay.

So in summary, this is what we did. Don't do it.

Oh and the solution above might sound a bit short-term, but no worries - I have a long-term plan too. It is 'Wait for Tim to get back here and let him fix it'. smile

Share post

About this blog

Visible to anyone in the world
Edited by Sam Marshall, Friday, 15 May 2009, 00:38

Hi! I'm sam marshall and I work for the Open University as a 'leading technical developer' on our Moodle-based virtual learning environment.

I work on some of the student-facing parts of the system. Occasionally I make contributions to core Moodle code, but more often I'm working on some of our extensive customisations or features.

This blog will probably be updated rather rarely, maybe once a week, with chat about stuff I'm doing: technical problems, new features, annoyances, and so on.

If you want to know what ghastly crimes the OU is committing with our modifications to Moodle, this blog might possibly be of interest!

Note: Due to limitations of the current system, only those with an OU login can comment here. Apologies.

Permalink 2 comments (latest comment by Sam Marshall, Friday, 15 May 2009, 00:37)
Share post

This blog might contain posts that are only visible to logged-in users, or where only logged-in users can comment. If you have an account on the system, please log in for full access.

Total visits to this blog: 249374