Nigel's profile picture Nigel


Nigel's profile picture

I used to be the lead developer of Mahara, from the beginning in 2006 through to 2009. I've left to found my own startup, writing a webapp to manage sporting competitions. But I'm still around from time to time, and still lurk in IRC in particular Wink

While not coding like crazy, I enjoy football and riding motorbikes.

Feel free to get in touch. I don't read my stuff.

Nigel's portfolios

Statistics Proposal

Statistics Proposal

A series of mockups showing our plans for adding some high level statistics to Mahara.
Web Page Manager Mockup

Web Page Manager Mockup

A suggested extra page that could be used to make moving/copying pages between one another an eas...

My Mahara-related blog posts RSS

Nigel McNie
Website and blog of Nigel McNie, entrepreneur and founder of Shoptime (prior: Mahara and GeSHi). Nigel writes about webapps and being remarkable. (Posts tagged with mahara)

Realtime Conversations Made Easy (my latest job)

Why is it so hard - technically - to have a realtime conversation with people all over the world?

"It's easy, just use Skype!". Not so fast. People need to install Skype - this is a task too hard for Grandma (unless you visit first and do it for her). And there's the whole contacts process. If you want to talk to me, we have to find each other and add contacts. After that, Skype will bother you when it's my birthday even though you only wanted to have one little chat. I could go on... [1]

"You're a geek, use IRC!". Of course, IRC is basically unusable by many people whom you'd like to talk to - some co-workers, your family, certainly not Grandma. At least there's no contacts to manage. But there's no audio/video, and you can't "drop in and out" of an ongoing conversation very smoothly - if you lose your connection to the chat, you lose the messages sent while you were gone [2].

"Use google chat/jabber!". Worst of both worlds. Low penetration, high complexity.

OK then, just use... hmm. Exactly.

Ad-hoc & Easy

There are two problems that current solutions have. One is that our conversations are ad-hoc, sometimes with people you've never met before and only have a fleeting connection to. Skype's contacts are not ad-hoc.

The other is that people need easy. Configuring IRC is hard. Heck, installing a damn program is hard for many people. Twitter and Facebook get close, but holding a decent conversation on Twitter is impossible, and Facebook is too autistic for people to use for ad-hoc communication. Besides, even signing up is often too hard. How many services do you not use because you would have needed to sign up first?

When I worked on Mahara, we used IRC. A few enthusiastic types joined us, but in large, IRC remains to this day inaccessable to many people. Not all users of Mahara are willing, or capable, of using it.

And when the Christchurch Earthquake hit this year, the response team that built used Skype - which was by most accounts a terrible solution. Skype chat simply has too many bugs when you get to rooms of more than a few people - and we had over a hundred. Richard wrote a post-mortem that lays out the issues for communicating in a crisis.

Introducing buzzumi

So it's been my great privilege to have worked on a new service that addresses these problems. With Richard (a fantastic webapp developer who happens to be my cousin), we've been the tech team behind buzzumi, which just launched (he's lead, I'm wingman). It's a webapp that lets you create ad-hoc discussions - text chat, audio and video (A/V is completely optional). Your chat is accessible to anyone who can click on a link, without them logging in [3]. It's simple, beautiful, and lightning fast.

The chat host can set the background, and it changes for everyone in the chat. There's no limit on participants, and up to six people can use A/V at once [4]. It's great for team meetings, one on one discussions, and even webinars with hundreds of guests watching a broadcast. There's nothing to install (except flash), and no barrier to entry. You don't have to know the other participants, and when you're done, you can close the chat and never see them again.

Perhaps one of the coolest features is that you can make a chat have a fee for entry. buzzumi handles all of the payments for you. So you could hold a webinar on a topic you're an expert in, charge $50 to enter, and simply collect your profits when you're done (buzzumi takes a 10% cut).

Please Try It Out!

If you're in education, how could you use this for your school/university? If you're in disaster response, can we please ditch Skype for this? And if you know me from somewhere else, I'd love to hear your thoughts about it, technical or otherwise.

Give it a try, and let me know what you think! I have created a chat which I'll hang out in for a while as well, come by and say hello if you have a second.

ps: Get Your Game On is still rolling, we are busy running much of the summer football around Wellington.

[1].. in this footnote :). Skype can suck bandwidth when you're not around, the new UI is crap, it promises encryption but has flaws including rumoured government backdoors, and it's now owned by Microsoft. Eew.
[2]Geeks have ways to get around this, through hax that allow them to use IRC on internet connections more reliable than their own. This is a workaround, not a true solution.
[3]To create chats, you do have to sign up - but your guests do not.
[4]Just quietly, the real limit is quite a bit higher, although we give no guarantees that it'll work properly beyond 6. I think the current record is 14. And note that this limit applies to people publishing their A/V, so you can have just one or two publishers with many more watching.

Removing the 'referer' part of PHP Error Messages from Apache Logs

This has always bugged me (scroll right to see the whole thing):

[Tue Apr 20 01:06:47 2010] [error] [client] [WAR] 7d (lib/web.php:916) Undefined variable: message, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client] Call stack (most recent first):, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22, referer: http://mahara-test/admin/extensions/test.php?
[Tue Apr 20 01:06:47 2010] [error] [client] , referer: http://mahara-test/admin/extensions/test.php?

I like using log files to display messages instead of the screen, but somewhere along the way somebody decided that the 'referer' (sic) was needed in the logs too, and that makes them totally unreadable.

Here's my fix, when tailing a log file:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | perl -pe 's/, referer:.*//'

And, instantly:

[Tue Apr 20 01:06:47 2010] [error] [client] [WAR] 7d (lib/web.php:916) Undefined variable: message
[Tue Apr 20 01:06:47 2010] [error] [client] Call stack (most recent first):
[Tue Apr 20 01:06:47 2010] [error] [client]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446
[Tue Apr 20 01:06:47 2010] [error] [client]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916
[Tue Apr 20 01:06:47 2010] [error] [client]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22
[Tue Apr 20 01:06:47 2010] [error] [client]

Much better! But we can do better again:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | perl -pe 's/\[error\]\s+\[client.*?\]\s+//; s/, referer:.*//'

And we end up with:

[Tue Apr 20 01:06:47 2010] [WAR] 7d (lib/web.php:916) Undefined variable: message
[Tue Apr 20 01:06:47 2010] Call stack (most recent first):
[Tue Apr 20 01:06:47 2010]   * log_message("Undefined variable: message", 8, true, true, "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916) at /home/nigel/src/mahara-test/htdocs/lib/errors.php:446
[Tue Apr 20 01:06:47 2010]   * error(8, "Undefined variable: message", "/home/nigel/src/mahara-test/htdocs/lib/web.php", 916, array(size 2)) at /home/nigel/src/mahara-test/htdocs/lib/web.php:916
[Tue Apr 20 01:06:47 2010]   * json_reply(false) at /home/nigel/src/mahara-test/htdocs/admin/extensions/test.json.php:22
[Tue Apr 20 01:06:47 2010]

Hooray! Readable PHP log files.

You don't want to have to remember to type all of that, so for best results, put it in a script, chmod +x and you have:

nigel@mahara-test:~$ sudo tail -f /var/log/apache2/mahara-test.error.log | phptail

You could even combine it with Monkeytail to make viewing the logs even easier ;).

I've trawled through the PHP codebase looking for where it adds the referer in a vain attempt to change it, or provide a patch to make it a configuration option. Sadly, I never found it. If anyone finds out, please let me know!

Thanks to Martyn for the original idea, and assisting with the arcane perl stuff.

Mahara Book

In case you missed the announcement, the Mahara book has been published. I helped review the content, and I think it's a great way learn about the Mahara system. Most of Mahara 1.2's features are covered well by Derrin and his team, so if you're a Mahara user I recommend you check it out.

Note: the book covers the user features, not the administration side - I understand that's coming in another book that will be a great companion to this one.

Why did I quit my cushy job? (aka: Being Remarkable)

If you asked the average coder what a cool job might be, apart from "not mine!!", you'd likely hear a few common suspects cropping up - game development, working at Google, or working on an OSS project full time. So you would think that I would be crazy to leave my job as the lead developer of Mahara, a job that sits firmly in the third category. So why did I?

I'm going to explain my situation and motives, because I think my current situation is quite similar to yours. And at the end, maybe you'll see how in the same situation, you might do the same.

Situation: Normal

I might be making blind assumptions here, but the average reader of this post is likely to be a software developer or sysadmin in a small to medium sized company. You're also likely to be a New Zealander, and possibly quite young, but that's about as far as I can guess.

Therefore, I'm guessing that you'd have probably liked my (ex) job, and would have swapped me for it. Sure there's a few of you who really like your current gigs, and I congratulate you for finding a job you like, but I'm guessing that getting paid to lead an OSS software project sounds better than writing Perl/Java/C for $CLIENT under $MANAGER.

And yes, leading an OSS project is fun! You get to manage a codebase, talk with cool people all over the world, write interesting code and (one of my favourite bits) make releases, new versions that gratify your community and bring new people in.

You become proud of your creation, and begin to "own" it, which makes your job even easier. Sure, the hours are sometimes rough if you're lost in coding a new feature or helping someone in IRC, but they all feel like hours well spent. Work becomes pleasurable, and so does your life as a result.

And that was exactly the situation I was in.

"So why change, Nigel? Why throw it all away?" I hear you ask.

Well obviously, it's because I'm crazy!


Am I crazy? Maybe. There's two types of crazy, insane crazy and fiendishly crazy. I've been accused of the former many times (and the currymails don't help), but this time I think I'm the latter. Let me explain.

Chris Guillebeau published a brief guide to world domination once. Included was a list of 11 ways to be unremarkably average. They are:

  1. Accept what people tell you at face value
  2. Don't question authority
  3. Go to college because you're supposed to, not because you want to learn something
  4. Go overseas once or twice in your life, to somewhere safe like England
  5. Don't try to learn another language; everyone else will eventually learn English
  6. Think about starting your own business, but never do it
  7. Think about writing a book, but never do it
  8. Get the largest mortgage you qualify for and spend 30 years paying for it
  9. Sit at a desk 40 hours a week for an average of 10 hours of productive work
  10. Don't stand out or draw attention to yourself
  11. Jump through hoops. Check off boxes

(You can read more about this here).

Is your life average? Mine is! I don't think you need to fit all of these to have an average life. There's millions of people, there will still be many "less average" than you who are pretty average. For me, I went to college, have been to England, don't know another language, have only ever thought about starting my own business, have sat at a desk for 40 hours a week [1].. you get the idea.

You might not think that this is a problem - you could have a family, or like the stability of a steady job. If you have a family, you're excused, but if you're young (under 30 especially) and have no dependents, why are you wasting your prime years trekking down the road to mediocrity? Now that's crazy!

Being Average

A guy I know has spent much of his life on the corporate ladder, working his way up to senior management positions. He chose to have a family, which is a noble undertaking (and despite its frequency, something you'll never hear me say is "average"). He had a safe, stable job which allowed his family to grow up successfully.

But just this year, the recession sparked job cuts that saw him out of work for the first time in over 20 years - caught by the economic chainsaw, helpless to influence his own fate. All of a sudden, the safety of a stable job was gone, the mortgage looked tough, and retirement plans were looking downhill.

Now I'm happy to report that he eventually got hired after a few months of downtime. But how safe has your job seemed in the last year? Has it been less secure than previous years?

Being tied to a 9 to 5 job doesn't sound quite as safe as you'd hoped, all of a sudden. You might have gotten lucky this time around, but there will be more, deeper recessions, and next time you might have kids to feed.

Smart People

Now, admittedly, this man had chosen to have a family, and thus exposed himself to the (comparitively small) risk of putting his job's fate in the hands of others. But if you're young and free, why would you even start walking down this path?

Let's face it, developers are smart people. Dude, you know pointers and recursion, and that's something 99.9% of the population cannot remotely comprehend - not your boss that's for sure. So why is he earning more than you? Who's the smart guy now? It's time for you to stop sheepwalking, and start doing something remarkable with your life.

Stop working for someone else, stop living in a cubicle, stop playing office politics, stop doing your boring job. That software or website you always wanted to write? Do it! Those places you want to see? Go there! Ever wanted to write a book, learn a language, play music, take up your sport professionally? Go for it! Do something remarkable. And do it now, because it'll only get harder the longer you wait.

The Reason

That's why I've left my job. Working on an OSS project is not a job to pass up without careful thought, but I've done it for a while and I think it's time to do something new. So, I'm taking number six on the list of things that boringly average people do, and crossing it off, forever. And when I'm done, you'd better not still be in that cubicle.

Which one are you going to cross off?

ps: As Seth likes to say, the best time to start was last year. Failing that, today will do.

[1]I daresay I'm more productive than 10 hours a week, but that's besides the point. Average life!

What does leaving Mahara mean?

Well, this is it. After four and a half years at Catalyst IT on and off since I was merely 17 years old, I have resigned in order to found a startup. More on that in a future post, for now what I want to do is write about what leaving Mahara is going to mean for me.

Actually, regardless of what it means, I'm going to miss it.

I think that's it in a nutshell. I'm basically leaving a community of people that I have worked with for a significant portion of my life, to forge a path into the unknown. Who knows what lies this way? One thing is for sure, at the start it's going to be pretty lonely - totally unlike the friendly community I've been used to for the past few years.

And what a friendly community it is! I think you'd be pretty hard pressed to find a nicer group of people on the internet - and if that's true of the internet, imagine how it would be if we all lived in the same neighbourhood.

I know that initially, Mahara borrowed a lot of the community ideas, and even people, from the Moodle community. That's because they're such a top notch community to be a part of. If you haven't already, heap plenty of thanks onto Martin Dougiamas for that. He may not have known it initially, but building a tribe of progressive teachers, developers, businesses and educationalists was a masterstroke for Moodle, and Mahara is lucky to benefit from that.

But now Martyn Smith and I are heading off to carve our own little niche out of the internet. More on that in a few days [1].

I want to thank everybody for being a part of this world for the last few years, no matter how small your involvement. There have been a few people who have stood out even from the rest of the great community, and I'd like to publicly (and personally, if I ever meet them in real life!) thank them. In no particular order:

  • Mike O'Connor, my boss, who left me a lot of leverage to work on Mahara how I saw fit from day to day. I think I would have... "struggled" under the oversight of a project manager, to be fair ;). Mike - I wish you and Catalyst the very best for the future. If they were rating companies on the good to evil scale, I'd place Catalyst slightly to the "good-er" side of Google.
  • Heinz Krettek, our first fan and loyal supporter. He was the first person to inhabit our IRC channel, and been a great advocate for us in Europe. Things like the German language pack are just the icing on the cake, really. I remember us trying to teach him linux commands for his new ubuntu install that he got because we told him Mahara was better on linux. It was totally worth it. I've never even met Heinz in real life, but one day I'm sure we'll catch up, and finally enjoy a drink together. Heinz - keep on rolling mate, maybe I'll see you in Germany some time :)
  • Penny Leach, core developer on the original project that created Mahara, and has remained heavily involved ever since. We had some pretty heated arguments early on, but out of that and a mutual love for Mahara has come a good friendship based on trust and mutual respect. I think we've both learned a lot from each other, and Penny has certainly helped me grow as a person over the last few years. Penny - I can't thank you enough for being passionate about Mahara, being a friend and just being there in IRC when I've needed to vent.
  • Andrew McMillan - you gave me a shot, which is more than I deserved at the time. But it's sent me off down this road, which has been worth every moment. Meeting you was a life-changing event for the better - thank you.
  • Richard Mansfield, core developer - we've had many great conversations about Mahara's inner workings and ways it could be improved, and between us written a shitload of code - on time and on budget. Except releasing 1.2, which is my fault for delaying everything in order to squeeze more features in, but I know you have plans to fix that issue when I'm gone :). I'd work with you again for sure. Good luck with the reins!
  • Richard Wyles, and in more recent times, the Mahara governance - you trusted the developers with the project, and apart from usability, I think we haven't let you down (and we're fixing that usability as we go ;). I hope Mahara continues to be a developer-lead, academically-guided project like it is currently, because it's a winning model.

Yep, the community will be the thing I miss the most. But also, Catalyst itself. Catalyst doesn't try to be groovy, dramatic, evil or sneaky. It's full of good, hard working, geeky and sometimes quirky people, and this is reflected in the company itself. Catalyst isn't corporate, it's defined by it's people - and who wouldn't want to work at a place full of open source geeks? "Why, you!?" I hear you say. I'll cover that in the next post.. stay tuned [2].

[1]Martyn isn't actually leaving Catalyst, but he and his girlfriend Kate are putting me up while I work on things full time.
[2]Here's a teaser: the truth is more that I'm leaving in spite of working at a company full of open source geeks, mainly because I'm stupid.

What's up in Mahara land recently?

Here's a snapshot from my point of view about what's going on across all aspects of Mahara.


Yesterday, Penny, Jordi (both from Mahara partner Liip) and I had another weekend hackfest. Penny has been adding a framework for unit testing, and managed to get the first test working. Jordi was working on swapping Smarty for Dwoo, while I continued hacking on View Themes support. Pics: Switzerland end, NZ end.

Penny has been working on unit testing, as it's something we developers have realised has been lacking in Mahara for some time now. What unit tests do is give us more confidence that when we make a change (whether it's a bug fix or new feature), that the rest of Mahara continues working exactly the way it used to - i.e., we didn't inadvertently add any more bugs. This has the result that we can continue development safe in the knowledge that we didn't break anything that worked before, which will result in better quality. It will also make it easier for enthusiastic hackers to make changes to Mahara and know they haven't broken anything important.

Unit testing isn't the only way we've been trying to integrate testing - Gerald Quimpo from Catalyst has been resurrecting the Selenium tests that come with Mahara, and has done an excellent job in getting them working again, while also setting up a Continuous Integration server (Hudson) so the tests will be run regularly. Soon, we'll have that available publicly so everyone can see which tests are currently passing and failing.

Backtracking a tiny bit - Jordi has been working on swapping Smarty for Dwoo, a change we would like to do for a couple of reasons. Firstly, Smarty is bigger and slower, perhaps largely due to the fact that it needs to support PHP4 (which Mahara doesn't support). Secondly, Smarty doesn't make it easy for us to output variables that are HTML escaped by default - which is currently the leading cause of security vulnerabilities in Mahara. We haven't had many security vulns actually, Mahara is reaping the benefits of a security-oriented development ethic. But of the few we've had, almost all of them have been because someone forgot to put |escape on the end of a smarty variable. So switching to Dwoo will cut down that entire avenue of attack.

Mahara 1.2

We released the first beta of Mahara 1.2 last week. That means we're looking for bug reports now, and encourage people to download it and try out the new features. Here's a short list of the coolest new features in 1.2:

  • Import and Export - Mahara supports the LEAP2A standard for import/export, and in addition, allows you to export an HTML version of your portfolio (including a nice HTML represntation of an individual View).
  • "My Files" and file handling improvements - now the My Files section makes it easier to quickly upload files, and degrades to work without javascript. You can now upload files directly into Views, and use a standard directory browser to choose files in Views. For developers, we created a pieform element for uploading/attaching files, which will make it easier than ever to do this in custom plugins.
  • Theming - we're shipping with 6 themes, to give people an idea of how they can customise their Mahara. We've done a lot of rework of how themes are created, so from 1.2 it'll be even easier to create a custom theme. We even documented the process (finally!).
  • Usability/Comprehension tweaks - Now groups get a default forum, and blogs get a default blog. If there is only one forum or blog, users are taken straight to it. This should really help in preventing the problem where people create a blog as if it's a blog post, and should make the forums an even more useful tool.
  • Improved Moodle/Mahara integration - with a custom patch to Moodle 1.9, you'll be able to submit a View to Moodle for assessment as an assignment answer. How useful is that? Now people can keep their data in their portfolio, and mash it together into a View for assessment over on Moodle, where all the useful grading functionality is :)

There's s still a bit of work to go before Mahara 1.2 will be ready though. I need to finish off LEAP2A import - currently resume import is only half finished, and view import is just begun. We'll also need a fancy UI for it, and of course there are some inevitible bugs that will need squashing.

Also, I'd really like to get view themes to a point where it can be merged also. That'll really help people personalise their environment. If I get around to it, maybe we can add a theme chooser for users to change how they see the entire site, not just individual Views.

Other than that though, I think we're looking pretty good!

Code Contribution Policy

We are currently preparing a policy for contributors to the codebase. We aren't going to be wanting copyright assignment, but we are going to make sure all contributions are as legal as we can make them ;). Unlike many open source projects, Mahara is actually in a pretty good position legally, as most members of the team are well aware of the legal issues around open source and licensing, and we take legal issues seriously. Our policy won't be onerous, but will ensure we stay legit now and into the future.

Mahara 1.3

Though 1.2 is not out yet, talk is already shifting in some departments to the plans we have for Mahara 1.3. The big focus there will be usability, and we're going to target that in a couple of main areas - the navigation, and View creation.

For the navigation, our current plan is to adopt a dropdown menu structure, organised more to how users think when they're looking for something. The main categories will be roughly along the lines of "My Stuff", "Friends & Groups" and "Sharing". We'll build a demo of this at some point after 1.2 so the community can see it in action and give feedback, though I've seen it in action elsewhere and it's easy to grasp. Furthermore, the addition of "horizontal navigation" - where when you're at one page you're given suggestions about what else you might be looking for - should help tremendously as well.

We're also going to have a good look at the View creation process. The Drag and Drop and layout concepts won't be changing, but the layout of the editing screens themselves will be improved a lot. We're hoping we can even ditch a step to make things simpler. I think the biggest gains will be seen on the View Access screen, which currently can be a bit of a minefield to navigate. We'll get mockups out some time after 1.2 also.

Other stuff we might do could include Group Views, a User Dashboard (as a View of course!), and overhauling the notification system.

Mahara Growth

And last but not least, here are some interesting statistics about Mahara and its community:

We now have over 3000 members of the community, with 17 partners worldwide. The community growth has been steady since we launched the new last November. The site receives nearly 25,000 visits a month (for the geeks among you: 57% firefox and 27% IE). Of these visitors, we get the most from the US, followed by the UK, Germany, Spain, Australia and then New Zealand.

Since we added the ability for sites to register on in May, we now have over 50 sites doing this every week. These sites together add to some 12,000 users, but this doesn't include, or the New Zealand MyPortfolio service - if these numbers were included, the total would rise to nearly 25,000. Again for the geeks - we are seeing a 75/25 split of MySQL to PostgreSQL. Hopefully things will skew more to the PostgreSQL side of that equation as time goes on :). Of the registered sites, the largest seem to be run by Blackpool University, Uni Krems (Austria) and Birmingham City University, all of which have thousands of users.

Mahara 1.2 Import/Export Demo

OK so my last post was just all text, which is a slog to read through. So here, I made a video about Mahara 1.2's import/export:

I don't think I got the sound levels right and I'd have loved to have added a background track, but video editing on linux is a pain. It's only my second video so be nice. The next one should be better again ;)

Themes In Mahara 1.2

One of the things we're doing for the upcoming 1.2 release of Mahara is doing a big tidyup of the theming. There are some code level changes, but the most important changes are to do with the themes themselves.

Note that I said "themes". This is because 1.2 won't have just one theme - it'll have six. One is a brushed up version of the default, one is "special" (more on that in a minute), and the other four are all-new themes that will give Mahara users a chance to immediately personalise their installation "out of the box". The new themes are mainly just colour changes, but they're pretty damn good looking colour changes all the same. They'll also give people good examples to work from when creating their own themes.

Now, the special theme. Mahara will now have a theme called 'raw', which is a very stripped down theme. There's very few colours or styles, and most of the theme's job is to position everything correctly and set sensible defaults. All other themes extend from this theme. Mahara has a theme inheritance system, where by you can specify another theme as the 'parent' of your theme, and thus rely on it to provide the templates and most of the CSS. From now, every theme will ultimately extend from the 'raw' theme - including the default theme.

The inheritance can have any number of levels, so for example a theme someone did for Mahara 1.1 might have a parent of the default theme which might be parented by the raw theme. Sadly, because we haven't documented the theme inheritance well, some of the themes out there have copied the entire default/ directory to create their new theme. These people will probably have noticed that when new versions of Mahara come out, sometimes bugs they are supposed to fix are not fixed - this is because the fix was made in a 'default' theme template, which is overridden by their theme's copy. When they upgrade to 1.2, it's highly likely their theme will totally break.

Elsewhere on the backward compatibility front, it should be easier though. If your theme uses theme inheritance, then it will continue to inherit from the (slightly changed) default theme. You may also have to change some CSS selectors in your stylesheet to match the new HTML structure.

Speaking of which, we've cleaned up the HTML immensely, and the CSS along with it. I think the default stylesheet was over 50KB in previous versions of Mahara, at the moment I have the raw theme down to much less than half that, and I don't think it will end up much bigger than 25KB. The default theme's stylesheet will be negligible in size. We're also going to cut the print stylesheet down to size, and if we get the chance we'll add in RTL and browser-specific stylesheets too.

The net result of all of this is a bit of short-term pain while people migrate their themes, but a lot of long-term gain, as the HTML will be cleaner, the CSS smaller and every Mahara faster because of it. Theme development will be much easier from 1.2 onwards, I'll make sure we write documentation so people don't get caught out by the theme inheritance issue again.

Maybe at some point after 1.2 we can look at some fine-tuning and performance of the theming system. I'd love to crank out some CSS sprites and javascript minification, but right now I don't think there's going to be much time other than for 'easy wins', such as expires headers and configuring mod_deflate (which Mahara does already).

Anyway, that's enough from me for now. We have this theming work and finishing off import/export to do, followed by a lot of bug fixing before 1.2 can be released. Look out for another alpha soon, at least.

Mahara 1.1

At long last, Mahara 1.1 is out. The major new features are the ability to copy Views, lots of improvements to Groups, the ability to import content from other systems (such as Moodle 2.0) and user profile pages as Views. Many other smaller improvements and bugfixes have been made.

Now our focus on Mahara turns to the Import/Export support, which will make its debut in Mahara 1.2 (due in the middle of the year). This work will really make us able to say Mahara is a portfolio focused on life-long learning - which it always has been - but we haven't had the code to back it up previously.

My thanks to everyone who tested, submitted patches, helped in the forums and generally got stuck in to make this release happen. I bribed a bunch of Catalyst staff with chocolate fish to help test, payment will come soon ;). I'm just sorry I can't send a chocolate fish to everyone overseas who helped!

Mahara 1.1 - almost there!

There's three bugs and two feature requests left until 1.1 is ready to roll! Finally it looks like we've got on top of the long list of issue and will be able to get a release out later this month.

Here's a quite explanation of how things will progress over the next while:

Once the bugs and feature requests are fixed, we will release the first, and possibly only, release candidate of 1.1. This will be a release that we consider "good enough" for 1.1 - no major crashing bugs, upgrade from 1.0 works, new functionality works.

We'll let that circulate for a few days, to give people a change to have one last go at testing upgrades and looking for major bugs. If there's nothing reported that's too major, we'll do the 1.1 release, otherwise, there will be a second (and potentially third) release candidate.

The 1.1 release will no doubt need some tweaking and minor fixes, which I'm sure will be reported back to us quickly. So there will probably be a series of point releases after 1.1 to iron out the kinks. We'll fully support you if you upgraded from any version of 1.0 to 1.1 though, and hopefully the testing we've done means the upgrade path doesn't break, even if some minor things don't work in 1.1.

Meanwhile, we'll be working hard on the import/export functionality for 1.2. This is the only feature planned for 1.2, and we hope to have it released quite quickly, by mid this year even.

So, look out for Mahara 1.1 RC1 real soon now!

Last updated on 27 September 2014, 1:01 PM

Nigel's friends

Nigel's wall

Hey Nigel, I am trying to set up Mahoodle on a shared sever. All is fine but when I click the Mahara link in the network server block I get the following message: Sorry, could not log you in :( Sorry, we could not log you into Mahara at this time. Please try again shortly, and if the problem persists, contact your administrator I read in a post that this could be because of server time. Both Moodle and Mahara are using the same server. If I change the default timezone in Moodle would this affect the server's time? Jeff
i want to upgrade from 1.1 to 1.2 and when i run admin/upgrade.php.. it displays nothing... Please help..
Hi Nigel's I want to disable the Change my View's column layout option for all users and set a default layout how can i do this please help me.
Hi Nigel, I'm using Mahara for research in my graduate thesis. But I have difficulty in translating into my language. What should I do so that this translation is perfect? I am from Indonesia.
Hi Nigel, I am using Mahara with my senior high school students, and I want them to be able to create units of study something like what Tony Hursh has his college students do. What is the best way for them to link views together to make a unit of study?
hi I install Mahar but i encounter a problem.the problem is with config.PHP i made this file but still there is these errors: log_message("Not installed! Please create config.php from confi...", 1, true, true) at C:\wamp\www\mahara\lib\errors.php:121 log_environ("Not installed! Please create config.php from confi...") at C:\wamp\www\mahara\init.php:55 require("C:\wamp\www\mahara\init.php") at C:\wamp\www\mahara\index.php:32
hi, I am new to mahara .I want to add captcha on the send message and having problem
I install and configured mahara, but the only problem I have is that; every click will request me or the other users to login. instance -> I am logged in and I am on the home page, if I just click My Profile, I will be required to enter my username and password again. Please help me, What should i do?
View whole wall