MoodleNet in 2018: a retrospective

Captain Hindsight


This year, MoodleNet has gone from idea to code. In fact, we’ll be launching a Minimum Viable Product in January 2019 to gather feedback from around a hundred testers. That process will start in the New Year.

In a world of agile development, where speed-to-market is everything, why has it taken a year for MoodleNet to emerge? Hopefully, this post (and its many links) will help explain some of that. We agree with Abraham Lincoln’s philosophy when he said: “Give me six hours to chop down a tree and I will spend the first four sharpening the axe.”

MoodleNet is a new open social media platform for educators, focused on professional development and open content. It aims to sustainably empower communities of educators to share and learn from each other to improve the quality of education, and will be an integral part of the Moodle ecosystem.

If we were building a centralised system such as Twitter, if we wanted to “move fast and break things” like Facebook famously does, then we could have launched months ago. But what we’re building with MoodleNet is, just like Moodle Core has proven to be, for the long haul. We’re building something to last.

Batman thinking


Back in January, we began by scoping out what we wanted to achieve in a white paper that included feedback and suggestions from a whole raft of people who are credited at the end of the document. We based it on scenarios that, while fictional, are based on the real-world situations faced by different groups within the millions of people who make up the Moodle community.

Realising that it’s important to build Open Source projects upon strong principles, we defined what we meant when we said that MoodleNet is:

search-refine-curateBryan Mathers began helping us visualise some of what we were trying to achieve with the project, bringing it to life beyond mere words. At this point, the MoodleNet team consisted of a single person – me, Doug Belshaw. To quote another American President, this time Woodrow Wilson, I decided to use “not only all the brains I have, but all I can borrow”. As an educator and a technologist, I got in touch with experts in my network to ask for their advice. They are listed at the bottom of this post, and their input was invaluable for refining what we wanted MoodleNet to be.

In February, at a management meeting in Perth Australia, I ran a couple of MoodleNet workshops based on what I’d heard from the experts in my network, and also what Martin Dougiamas, Moodle’s Founder and CEO, had requested. This was a very positive experience, as it was clear that MoodleNet was going to be vital to the whole Moodle ecosystem.

While still in nascent form, and in the run up to the implementation of the European General Data Protection Regulation (GDPR), we focused in on compliance, and testing some ideas around using the very new ActivityPub protocol. We tested various approaches, such as those taken by Hubzilla and Mastodon.

Once we knew that MoodleNet was going to be a federated social network – one that could be installed just like Moodle Core, but with each MoodleNet instance connected together – it was time to focus in on what people would be doing with this social network. Work in March involved gathering inspiration from different types of social networks that involved resource-sharing. We felt that, in 2018, asking people to join yet another generic social network would be fighting an uphill battle.

At the MoodleMoot UK & Ireland in March, we gave a presentation and ran a workshop on MoodleNet, soliciting feedback on the ideas we had come up with. Feedback was positive, with the community tweeting about the soft spot between pedagogy and technology, and seeming to get why we had decided to start by focusing on building something small.



By the time the OER18 and OE Global conferences came around in April, we felt that we were ready to plan what MoodleNet would look like in more detail. Conversations at these two events really helped us explain what we hoped to be the value proposition, and fed into a series of blog posts aimed at winnowing the project down to MVP size.

It was at this time that we also began running the MoodleNet community calls. Having run many of these before with other Open Source projects, I was delighted that many people gave up their time to join us. Unfortunately, we had to give these up after the first three, as the way we were collecting user data wasn’t GDPR compliant. It’s still something we’d like to do, so we’re still looking for a better way to run these in 2019.

MoodleNet - a resource-centric social networkOne extremely important feature of any social network, but particularly one focused on resource-sharing, is search functionality. Get it right, and nobody notices. Get it wrong, and everyone complains. I asked Mike Larsson, who I’d worked with at Mozilla, to do some thinking around this for us. He came up with several approaches, including a custom search index. As we prepare for the MVP, we’re currently building upon these ideas.

In May, as the project began to need more technical input, I asked for some input from Phil Barker around metadata, schemas, and standards relating to Open Educational Resources (OER). We also started looking for a Technical Architect to join the team. After going through 80 applications, and interviewing many diverse candidates from around the world, we offered the position to Mayel de Borniol.

Mayel’s first day at Moodle was also the first day of a week-long sociocratic design sprint with Outlandish, a tech co-op based in London. Martin Dougiamas flew in from Australia to be with us and, based on information we’d gathered – including a pre-sprint community survey – we designed a prototype which we then tested with members of the Moodle community. Bryan Mathers again helped us visualise proceedings.

The design sprint gave us a real impetus and mandate to get started in June with the technical architecture of MoodleNet. Mayel outlined some options for how we could set up and run MoodleNet, and we established a code base in GitLab. By the time we both presented in Barcelona at MoodleMoot Spain, we had a clear idea of where we were heading, both conceptually and technically. We received great feedback and questions, both in person and via Twitter.



After the design sprint, we engaged the services of Outlandish to continue designing MoodleNet. UX Milestone 1 in July demonstrated our thinking around the potential look and feel of the user experience on mobile. At the same time, given what the community had told us, we began planning for how MoodleNet could integrate with Moodle Core.

I flew over to the US for the MountainMoot of which I’d heard so much. I ran a workshop on MoodleNet, gaining some extremely useful insights both during the session and in conversation during the event. It was at this time we also started thinking about the use of Open Badges in MoodleNet. Although we have de-scoped them from the MVP release, it’s still something we’re looking to integrate as soon as possible in 2019! We also started thinking about identity in decentralised social networks.

moodlenet-betaWhile I spent most of August on holiday interrailing around Europe with my family, work continued on MoodleNet in my absence. Mayel settled on a technical architecture for the project, and decided to use Elixir for the backend code base. This led to questions both within Moodle HQ and the community, and to Mayel presenting to Moodle Core developers.

Outlandish continued their work through UX Milestone 2, which resulted in four screencasts to show the community the work we’d done. By the time September came around, we were ready to accelerate development of the project. I presented at ALT-C, Mayel and I participated in a front-end development workshop with Outlandish in London (leading to a demo and draft style guide), and after a several-week search, we welcome Alex Castaño to the team as backend developer.

It’s good practice in open source to avoid reinventing the wheel and to instead use shared libraries of code for functionality that exists in more than one project. When we didn’t find a suitable code library for creating federated apps, we decided to build a generic ActivityPub backend server. This was for several reasons, but the most important is that the more ActivityPub-enabled services there are, the better for the entire decentralised application ecosystem. We’ve already seen the resulting CommonsPub repository attract contributions from the Open Source community, and it’s being used in other projects as well as MoodleNet.

Designing tech in 3D


By October, MoodleNet was really coming into focus. Alex quickly realised he’d joined a team building something going beyond merely another tech project, and an interview with Mary Cooch helped explain to the Moodle community why we’re building something completely different to the existing

Version 0.8 of our overview slide deck told a much better story than previously, thanks to some feedback from the wider MoodleNet community. At the end of the month, Mayel and I attended the Mozilla Festival in London. There was a whole decentralisation floor where we ran a workshop, and proceeded to successfully pitch for a small grant – details of which we’ll reveal in early 2019!

Hot on the heels of the Mozilla Festival was MoodleMoot US, where I ran a workshop. People from a diverse range of backgrounds participated in the session, from K12 and Higher Education to the corporate world. They could all see how MoodleNet would be useful in their context, and we again received positive feedback both in person and on Twitter.

Principles-ConnectedMoodle HQ has hired many new colleagues in 2018. In late October, Gry Stene joined us as Chief Product Officer. As her job title would suggest, Gry now oversees all of Moodle’s products, ensuring we are using resources effectively, building interoperable products, and preventing too much overlap.   

In November, with around two months until the MVP, we spent time thinking about the user sign-up experience. Outlandish built a prototype (with live code) and tested it with volunteers from the community. As is to be expected, although it was fine with no major flaws, the feedback pointed to how it could be better. We returned to the drawing board, reimagining the process to be even easier and more GDPR-compliant.   

Outlandish joined us for two days of a MoodleNet team in-person workweek, where Mayel and Alex met one another in person for the first time! The main purpose of the week was to ensure that the work on the front-end and back-end was hooked up together, using a data query language called GraphQL. Although we didn’t get through everything we wanted to get done that week, it was a very productive time, and meant we were in better shape than we would have been had we continued to work remotely.

Over the previous few weeks, Mayel had worked on contribution guidelines for the community, based on his own experience and other Open Source projects. We opened this for comments and, after a two-week feedback window, made modifications based on what we heard. We’ve adopted the Contributor Covenant and added specific guidance around how community members can get involved in making their first contribution.

contributeGiven he was in Athens, Mayel took the opportunity of running a workshop at MoodleMoot Greece, with a specific focus on localisation. After talking since at least July about the potential use of emoji triplets for identity and identification in decentralised systems, I finally got around to writing this up in a post describing what we’re calling Emoji ID.

As I write this towards the end of December, we’re in good shape for the MVP in early 2019. Mayel recommended Ivan Minutillo, a UX designer and front-end developer for our team and Gry did a fantastic job at getting him onboard very quickly. Not only that, but Ivan really hit the ground running, already having contributed to CommonsPub and experience with the core technologies we’re using on the front-end.

We had planned for Outlandish to overlap until next month with Ivan. However, given how quickly he came up-to-speed, and how efficiently the project has been documented, this was kept to a minimum. The six months we spent working with Outlandish were invaluable; there is no way we would be in the same position without them. I hope that we’ll be able to lean on their expertise again in 2019 for future stages of the project!

Since handing over from Outlandish, we’ve re-scoped the project milestones, drafted a testing plan for January 2019, and published v0.9 of our overview slide deck.

Adventure Time

Final words

It’s been an exciting but tiring year and I think the whole team is ready for a well-deserved two week break over Christmas! All of the above would have been enough for a team working full-time to achieve. As it happens, the only person working five days per week has been Alex, and only since early October. The rest of us work between two and four days on the MoodleNet project!

The proof of the pudding, as the English saying goes, is in the eating. So I’m looking forward to testing our first value proposition in January 2019: do people want to join communities to curate collections of resources?

Time will tell. Lots of people have given us their thoughts and opinions about MoodleNet this year and this project is better because of them. Any problems or issues with the project are, of course, my responsibility as MoodleNet Lead. However, anything that’s useful is due to the fantastic team I’ve had the privilege to assemble, input from my talented colleagues at Moodle HQ, and the following people who so have so generously lent their time:

  • Outlandish
    • Rob Cornish
    • Matt Crow
    • Sam Gluck
    • Kayleigh Walsh
  • Consultants
    • Phil Barker
    • Mike Larsson
    • Bryan Mathers
  • Testers
    • Miles Berry
    • Luca Bösch
    • Mary Cooch
    • Martin Deinhofer
    • Andy Field
    • Jessica Gramp
    • Oliver Quinlan
    • Emma Richardson
    • Christian Turton
  • Open Source & ActivityPub community
    • César Awad
    • Ruben Cancho
    • Hubert Chathi
    • Thomas Citharel
    • cj
    • Elizabeth Dalton
    • Nolan Damon
    • Debashish Datta
    • Julie Day
    • Noel De Martin
    • Vijay Anand Deenadayalan
    • Vicke Denniston
      Lynn Foster
    • Rogério Furtado
    • Wayne Gibbons
    • Ralf Hagemeister
    • Bob Haugen
    • Ralf Hilgenstock
    • Laura Hilliger
    • Don Hinkelman
    • Mandy Honeyman
    • John Hunter
    • Chris Kenniburg
    • John Kuti
    • KS Læring
    • François Lizotte
    • Lilian Low
    • Dan McGuire
    • Greg McVerry
    • Richard Oelmann
    • Adam Procter
    • Felipe Raimo
    • Ben Reynolds
    • Julian Ridden
    • Luiggi Sansonetti
    • John Saylor
    • Séverin Terrier
    • Cyril Z.
    • The creators and contributors of ActivityPub, ActivityStreams, Pleroma, Elixir, React and the countless open source projects we on which we rely.
  • Experts 
    • Martin Hawksey
    • Alan Levine
    • Stephen Downes
    • James Easton
    • Meg Goodine
    • Jim Groom
    • Grainne Hamilton
    • Kristina Ishmael
    • Khari Khambon
    • Tim Klapdor
    • Rick Jerz
    • John Kuti
    • Clint Lalonde
    • Kin Lane
    • Scott McLeod
    • Greg McVerry
    • Ian O’Byrne
    • Alan O’Donohoe
    • Richard Oelmann
    • Nitin Parmar
    • Mark Pegrum
    • Emma Richardson
    • R. John Robertson
    • Tom Salmon
    • Amber Thomas
    • Martin Weller
    • Tom Woodward

My deepest apologies if I have missed anyone from this list. Please do let me know if I have neglected to credit your input!


Leave a Reply