MoodleNet and ‘free speech’



Moodle’s stated aim is to “empower educators to improve our world”. We do this in alignment with our values:

  • Education – We understand that education is the foundation of making the world a better place. We are always learning, improving how we learn, and helping those around us to learn and to teach.
  • Integrity – We employ the highest ethical standards, demonstrating honesty and fairness in every action that we take.
  • Respect – We treat everyone with respect and sensitivity, recognising the importance of their contributions: team members, customers, partners, suppliers and competitors.
  • Innovation – We encourage a progressive culture of data-driven experimentation and research, where entrepreneurship and prudent risk-taking are encouraged, rewarded and incorporated.
  • Openness –  We strive to be open in our goals, our tools, our processes and our results, as much as is practical.  We encourage team members and our community to communicate freely both internally and externally. We promote accessibility and embrace international cultures across all our products.


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

As a federated social network using the ActivityPub protocol, MoodleNet will be part of the Fediverse. This means that users can follow accounts on other services such as Mastodon, Pleroma, and Pixelfed. This works both ways, of course, so users on any server using, for example, Pleroma as a basis for their social network, can follow and interact with MoodleNet users.

This is a huge step forward for social networking, as instead of having silos such as Instagram and Twitter, you can follow any account on any other network. You can also maintain different accounts for different facets of your personality, so for example is a community artists, and is for academics. But what if there was an instance for… fascists? And what if those users went out of their way to harrass and troll other users?

The wider problem

This is not a hypothetical issue. Since the start of the year, the Fediverse has had to deal with a social network called Gab which claims to be focused on ‘free speech’ but actually contains a disproportionate number of users who identify as Nazi sympathisers. It’s blatant enough for both Apple and Google to have banned Gab’s app from their app stores for contraventions of their policies on ‘hate speech’.

In response, Gab decided to fork Mastodon, an Open Source project. This manoeuvre meant that Gab users could simply install any generic app that was compatible with Mastodon without Apple or Google being able to ban it. An article in The Verge explains the headache that this caused the Fediverse. The important paragraphs are quoted below:

Over the past few years, Mastodon has become the model for a friendlier kind of social network, promising to keep out the hateful or ugly content that proliferates on larger and more centralized networks. Journalists hailed it as “Twitter without Nazis” and for years, it’s generally lived up to that promise. But last week, the social network Gab migrated to Mastodon — and Mastodon’s admins have been forced to deal with the internet’s Nazi problem head-on.


Some Gab content has crossed the line into criminal activity. The UK jailed two teenage neo-Nazis in June for posting terrorist propaganda. Florida police also arrested a user last month for posting racist threats and possessing a firearm as a convicted felon. And in 2018, a man posted an anti-Semitic Gab message just before killing 11 members of a synagogue in Pittsburgh. Gab denies that it condones hatred — CEO Andrew Torba says it simply allows any speech that’s “legal in the United States” with a few exceptions. It correctly notes that Facebook and Twitter also contain hate speech and violent threats. Gab is far smaller than these sites, however, and its bad posts are particularly concentrated.

When Gab migrated to Mastodon, that content threatened to spill into the larger platform. Mastodon is organized into a “Fediverse,” which means that users on one instance can follow and interact with users from another. It helps make Mastodon feel like a single community, but by default, it could make users from one instance vulnerable to trolls from another. Fortunately, administrators can block instances, too, keeping out any posts or users from that server.

So far, that’s been the default response to Gab. Mastodon’s official site will only list instances that follow the Mastodon Server Covenant. The covenant mandates “active moderation against racism, sexism, homophobia, and transphobia” — which pretty much nixes any contact with Gab. For Rochko, it seems like the clearest way forward. “The software that powers Mastodon is released under an open-source free software license, which means anybody can use it,” he says. “And you know, that offers a great number of benefits — but some disadvantages.”

As you can see, there’s no way to remain neutral here. Developing software is a political act. Most Fediverse administrators seem to have blocked Gab instances, and many app developers have blacklisted all Gab domainsSo how is this going to affect MoodleNet?

Our response

MoodleNet is Free and Open Source Software (FLOSS) that we are developing and releasing under the terms of the AGPL. Anyone can use it for any purpose. However, in addition to MoodleNet, and to improve the user experience, administrators running a MoodleNet instance may apply for an API key to connect to the Moodle HQ ‘mothership’. This means that users on their instance can search all other connected instances to discover new content, follow users and collections, and join communities.

Given what has been going on in the Fediverse, we are going to be very careful in terms of who we hand out API keys to. They can, of course, be revoked, but we want to establish minimum standards, especially as we’re planning on creating a MoodleNet equivalent of the join Mastodon page.

With all this in mind, the MoodleNet team has been working with our Privacy Officer to draft two documents and put them out for community consultation. As outlined in an earlier post, the first of these is a MoodleNet User Agreement, which includes six sections:

  1. Terms
  2. Code of Conduct
  3. Contribution, Use, Modification and Distribution Licenses
  4. Disclaimers
  5. Modifications
  6. Instance Rules

The second is a MoodleNet Covenant for Instance Administrators, which also has six points. Admins running a MoodleNet instance who want to connect to the ‘mothership’ (for search and discoverability) must agree to:

  1. Foster an open and welcoming environment.
  2. Actively moderate their instance
  3. Perform daily backups
  4. Give emergency access to the server infrastructure to at least two people
  5. Give users at least 3 months of advance warning in case of shutting down
  6. Make available the source code of any customisations to your instance, regardless how small

The full version of the first point on this list mandates that administrators contribute to “a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation”. The second that they actively moderate against “racism, sexism, homophobia, transphobia, harassment, defamation, doxxing, sexual depictions of children, and conduct promoting alt-right and fascist ideologies”.

The ‘free speech’ issue

Many people who use FLOSS tend to be those who value their independence and liberty. As a result, we’ve received messages expressing concern that we’re taking a “political stance” which might be inappropriate in an educational setting.

Our response has been to remind the people sending these message that our approach isn’t about restricting the discussion of this kind of stuff, but the promoting of it. We’ve cited the Paradox of Tolerance:

“Unlimited tolerance must lead to the disappearance of tolerance. If we extend unlimited tolerance even to those who are intolerant, if we are not prepared to defend a tolerant society against the onslaught of the intolerant, then the tolerant will be destroyed, and tolerance with them.” (Karl Popper)

To reiterate, we are not specifying how people use MoodleNet. We are setting the minimum standards we expect from administrators (and their users) on instances connected to the MoodleNet mothership. This does not contravene the free software definition, as anyone is free to install and run MoodleNet, as they wish, for any purpose. They are also welcome to contribute to the code base subject to our Community Code of Conduct.

We hope that clarifies a few things. If you’ve got questions/concerns about this, please add a comment below, or email:

MoodleNet overview slide deck (September 2019)

Update: Check out a 10-minute screencast of this slide deck!

Here’s the latest version of the slide deck we use to explain MoodleNet. You are very welcome to use it to introduce MoodleNet to others, personally or professionally.

Access the slides directly here:

We’ve completely restructured this slide deck from the one shared in July. It’s now much more focused on MoodleNet functionality, so we’ve moved the more technical aspects to the end.

MoodleNet development timeline
MoodleNet development timeline

Comments? Questions? Add them below!

Late August 2019 update

MoodleNet UI 2.0 — a work in progress
MoodleNet UI 2.0 — a work in progress

Work on MoodleNet continues apace, with the above screenshot no longer being a clickable prototype, but live code on our staging server! Ivan, our talented UX designer and front-end developer, has created a ‘read-only’ version of the new user interface before he heads off on a well-deserved holiday for a couple of weeks.

During that period, James will be finishing off a very necessary refactoring of the core functionality on backend code, Karen is continuing making good progress on federation, and Mayel has submitted a plugin to the Moodle LMS team for their review and (possible) integration into Moodle 3.8.

We’re still on track for a November beta release with everything from the ‘must’ section of our MoSCoW prioritisation grid. However, we’ve had to push back the federation testing until October as we’re a small team working on a complex project, and many things have to come together at the same time!

Thank you to those who have commented (only privately, so far) on our draft MoodleNet User Agreement and Covenant for Instance Administrators. Please do consider giving your feedback — positive or negative!

*DRAFT* MoodleNet User Agreement and Covenant for Instance Administrators

Happy Birthday Moodle! 🎉🎉🎉

As promised in our post about the upcoming federation testing programme, we are now ready to share draft versions of two relevant documents.

While anyone is free to use MoodleNet for any purpose (Freedom 0 of the ‘Four Freedoms‘), in order to connect to the HQ ‘mothership’ for reasons of search and discovery, instance administrators must:

  • Either use the MoodleNet User Agreement as-is, or only add reasonable terms that do not negate any element of the existing agreement.
  • Agree to be bound by the terms of the MoodleNet Covenant for Instance Administrators.

The first is a MoodleNet User Agreement, which includes six sections:

  1. Terms
  2. Code of Conduct
  3. Contribution, Use, Modification and Distribution Licenses
  4. Disclaimers
  5. Modifications
  6. Instance Rules

The second is a MoodleNet Covenant for Instance Administrators, which also has six points. Those admins running a MoodleNet instance who want to connect to the ‘mothership’ (for search and discoverability) must agree to:

  1. Foster an open and welcoming environment.
  2. Actively moderate their instance
  3. Perform daily backups
  4. Give emergency access to the server infrastructure to at least two people
  5. Give users at least 3 months of advance warning in case of shutting down
  6. Make available the source code of any customisations to your instance, regardless how small

To be as clear and direct as possible, the MoodleNet team is committed to fostering an open and welcoming environment, meaning that racism, sexism, homophobia, transphobia, harassment, defamation, doxxing, sexual depictions of children, and conduct promoting alt-right and fascist ideologies will not be tolerated.

We welcome the community’s feedback on these drafts, either as comments directly on the documents, in comments below this post, or on the MoodleNet forum. If you have particular concerns or comments that you like to make more privately, please email:

Planning for the MoodleNet public beta

In the spirit of working openly, we’d like to share a MoSCoW prioritisation grid for the public beta release of MoodleNet in November 2019. While any project is subject to changing priorities as it progresses, this is where we are in early August.

For those that prefer a more accessible text-based version, please see below.



  • Federation with other instances
  • Connect to HQ ‘mothership’
  • Search across federated instances
  • Discover page
  • My MoodleNet
  • Profiles
  • Flags/reporting
  • Moderation tools
  • Sign-up page (username/password)
  • Open to browse without signing in


  • Image upload
  • Join/create/edit/leave a community
  • Every @community is hyperlinked


  • Category tags
  • Create/edit a collection
  • Every +mention is hyperlinked


  • Like resources
  • Add resource via URL
  • Add hashtags to added resources


  • Bio & links
  • Avatar
  • Header image
  • User timeline
  • Joined communities
  • Followed collections
  • Liked resources


  • Every @username is hyperlinked
  • Unique usernames

Moodle Core integration:

  • Plugin to pull resources from MoodleNet


  • Basic security audit



  • Help pages
  • Interoperability with other ActivityPub apps
  • Blocklists


  • Share link to community 


  • Hashtags 
  • Pinned resources
  • Share link to collection


  • Upload resources
  • Add licence to uploaded resources


  • Follow other users


  • Notifications if mentioned within a community
  • Receive weekly emails about recent activity



  • Analytics
  • Sign-up page (social accounts)


  • Related communities


  • Related collections
  • Sort/filter listed resources


  • Auto-complete hashtags


  • Add other users to a contact list
  • Invite other people to create a MoodleNet profile
  • Add interests (based on hashtags)


  • Sort/filter ‘My MoodleNet’


  • In-depth security audit


  • Private communities / collections
  • Request a resource
  • Copy/fork a collection into another community
  • Events functionality
  • Emoji ID
  • Open Badges on profiles
  • Query 3rd-party repositories

MoodleNet overview slide deck (July 2019)

Update: we recorded a 13-min screencast version of the slide deck below!

We regularly update the slide deck used to give an overview of MoodleNet. It not only helps us continue to (hopefully!) get better at explaining what MoodleNet is, but is a useful resource for community members who may want to introduce it to others.

Access the slides directly here:

What we’ve changed this time around:

  • Removed ‘non-technical’ from the title
  • Replaced references to ‘decentralisation’ with ‘federation’
  • Updated the slide referencing Mastodon with a similar MoodleNet-focused one (see below!)
  • Added slides showing the UI 2.0 clickable prototype
  • Replaced the slide referencing Aha! with one showing Moodle Tracker
It doesn't matter which MoodleNet instance you are a member of - you can join communities, and follow other people and collections fro any other instance!
New MoodleNet federation overview slide

Comments? Questions? Add them below!

An update on sunsetting the existing to make way for MoodleNet

As part of the preparations for a new MoodleNet plugin coming in Moodle 3.8, the current sharing site, will be closed and its content archived. This means that from August 2019, it will no longer be possible to share courses on

To see what this means for teachers, and to find out what you need to do as an administrator, please see our guide: Sunsetting

If you have any questions about the current site being closed, please post in the Moodle community sites forum.

Request for feedback: MoodleNet UI 2.0 clickable prototype

We'd like you to create a screencast showing your first reactions to the clickable prototype of our new UI.


Last month, we gave you a sneak peek of the prototype we’ve been working on for an updated version of the MoodleNet user interface. After further iteration and testing, the team is pleased to share with the community a clickable prototype, upon which we would like your feedback.

Note: a clickable prototype is a series of images with ‘hotspots’ that link them together. Not everything that will be linked in the final version is linked in this prototype. Nevertheless, before committing code, this is a good way of ensuring that this approach resonates with the community.

When we shared the MVP of MoodleNet back in January, Stephen Downes was kind enough to record his first impressions. The team found that kind of feedback so valuable that we’d like to encourage as many people as possible to do likewise this time around! We’re going to offer another rare badge to those who share their thoughts.

How to get involved

  1. Install an app or browser extension that allows you to record your screen. We recommend Loom. Ensure you have the microphone activated!
  2. Start recording and head to this URL:
  3. Click through the prototype, narrating what you are doing. We’re interested in:
    • Green — things you like
    • Amber — stuff you have questions about
    • Red — anything that concerns or confuses you
  4. Stop recording and give your screencast the title ‘MoodleNet clickable prototype testing [your_name]’
  5. Share the link to the screencast with the MoodleNet team. You have several options for this:

Final thoughts

Please ask if you have any questions or the above instructions are not clear. Note that you can only receive the badge if you have created the screencast and have joined the MoodleNet forum.

Thanks in advance for your help!

MoodleNet Federation Testing Programme

UPDATE: Form is now fixed!

'Network' by John LeMasney used under a Creative Commons CC BY-SA license


We’re looking for volunteers (individuals/organisations) for a federation testing programme we’re running next month. There’s a pretty tight turnaround, so initially we’ll require all communication to be in English, although you’re welcome to set up your test instance in another language.

It’s important to note that this is NOT simply a way to be notified of updates to MoodleNet. It is an expression of interest to run a server requiring both technical knowledge and a time commitment. There will be another rare badge available for those who participate in the programme!

What is ‘federation’?

The easiest way to explain federation is to think about email. Anyone can create their own email address via any provider they choose, and they can use any email software they choose. As the whole system is standards-based, anyone can send an email to anyone else knowing that it will ‘just work’. You only need to know their email address, something like

If we extend that idea to social networks, so long as a social network adheres to a particular standard, then anyone can send a message or other content to anyone else knowing that it will ‘just work’. In our case with MoodleNet, the standard is ActivityPub, which is already used by social networks such as Mastodon, Peertube, and Pixelfed

To begin with, we are interested in federation between servers running MoodleNet. Thanks to ActivityPub, users will be able to join communities, follow collections, and interact with other users, no matter where they created their account. And then, in addition, users of other ActivityPub-compatible social networks (‘the Fediverse’) will be able to follow and interact with MoodleNet users, and vice versa. 

API federated
Image CC BY-ND Bryan Mathers

Why do we need a testing programme?

The aim of the MoodleNet Federation Testing Programme is to test all aspects of federation, both between MoodleNet instances and the wider Fediverse. The programme will be successful if it:

  1. Validates the statements we have made about data processing in MoodleNet’s DPIA
  2. Demonstrates that users on any MoodleNet instance may follow, join, and interact with communities and collections on any other MoodleNet instance. 
  3. Confirms the value proposition of organisations running their own MoodleNet instances
  4. Establishes that search and discovery is possible across MoodleNet instances connected to the Moodle HQ API-as-a-service (‘mothership’)
  5. Shows that Fediverse accounts can follow and interact with MoodleNet users.

We envisage that the testing programme will cover three areas:

  • Interaction between MoodleNet instances
    • Join communities, and follow users and collections
    • Add resources to MoodleNet collections
    • Discuss, comment, like, and flag content
  • Search and discovery 
    • Find MoodleNet users, collections, and communities
    • Locate MoodleNet resources with a specific tag
    • Browse fresh content from across all mothership-connected instances
  • Integration with the wider Fediverse
    • Follow Fediverse users from MoodleNet
    • Display Fediverse status updates which @mention MoodleNet users or communities
    • Interact with Fediverse users (e.g. reply to an @mention)

Who should be involved in the programme?

We’re looking for individuals and organisations with both the time and technical knowledge to be able to test MoodleNet effectively. This includes moderating communities, updating their instance to the latest version, and providing regular feedback to the MoodleNet team.

Ideally, we would have a combination of Moodle Partners, educational institutions, organisations, and interested individuals who:

  • Will accept the MoodleNet federation testing programme agreement (forthcoming)
  • Have a working knowledge of Linux server administration with Docker containers (MoodleNet’s stack includes Elixir, PostgreSQL, and React)
  • Can dedicate around 3-5 hours per week to testing MoodleNet over the testing period

When will the programme start?

Servers connecting together in a hashtag pattern
Image CC BY-ND Bryan Mathers

We will begin the testing programme when MoodleNet federation is ready to test. This should be before the end of August 2019, although it also depends on the corresponding user interface work being completed by that time. 

How do interested parties apply?

Please use the following form to express an interest in the federation testing programme. Note that not all applications will be successful, as we are looking for a range and spread of use cases.

We are currently finalising the User Agreement and MoodleNet Covenant for Instance Administrators and will share these with successful applicants, as well as in a blog post.

Header image: Network by John LeMasney used under a Creative Commons CC BY-SA license