MoodleNet overview (March 2020)

This is the latest set of slides giving an overview of MoodleNet’s functionality. You’ll notice a number of changes since the last deck, both in terms of structure, but also the use of animated gifs to give more of a feeling of how MoodleNet works.

Link: http://bit.ly/MNmarch20

As a remote team, we’re continuing to work mostly as normal throughout the pandemic. However, some of our team are based in countries like Italy, which is disproportionately affected, meaning that we can’t commit to any hard-and-fast dates for federation and/or user testing. We’ll keep this plan up-to-date.

Meanwhile, if you’re an educational institution or other organisation that is affected by the pandemic and are pivoting to online learning, you might want to take a look at MoodleCloud or bring in the help of a Moodle Partner.

(Re-)decentralize the web with MoodleNet!

A particularly interesting article caught our attention recently: in Society Desperately Needs An Alternative Web, author Hessie Jones reports in Forbes on the recent Canada-United Kingdom Symposium On Ethics In Artificial Intelligence (EIAI-2019).

The article covers a lot of ground, but in particular adds to the growing chorus to re-decentralize the web. We tend to use the term ‘federated’ instead of ‘decentralized’ when talking about MoodleNet, mainly because of the unhelpful ambiguity between ‘decentralized’ and ‘distributed’. However, ActivityPub-based software like MoodleNet can play an important role in decentralizing our digital lives because it builds upon the proven usability and reach of the web and standards-based browsers.

Types of systems

In the light of Jones’ writing for Forbes, it’s clear that, whatever name you want to give to our approach, MoodleNet certainly is part of the solution to the problems we’re facing.

Technology precedes regulation. This new world has created scenarios that are unaddressable under current laws. There is a prevailing legal threat unleashed through the GDPR, however, there are aspects of it that some argue that may indeed stifle innovation. However, it’s a start. In the meantime, we need to progress so systems and governance are in sync, and tech giants are held in check. This is not an easy task. Who is responsible for the consequences of AI decisions? What mechanisms should be in place to ensure that the industry does not act in ways that go against the public interest? How can practitioners determine whether a system is appropriate for the task and whether it remains appropriate over time?

(Hessie Jones, Forbes)

Google announced last week that, because of Brexit, the data of their UK users would now be stored in the USA. Should existing users not like this, they could, of course stop using Google’s services. Except, of course, that products and services provided by trillion-dollar companies are almost indispensable to modern-day life.

As a result, we need to do things differently; this is where MoodleNet comes in. We need to design products and services that companies relying on surveillance capitalism are unable or unwilling to copy.

Adoption of a decentralized web cannot play by the old rules. New experiences and interactions that are outside of current norms needs to appeal to individual values, that enable trust and ease of adoption. Pulling users away from convention is not an easy task.

(Hessie Jones, Forbes)

To use a Star Wars metaphor, one way of thinking about this is that we are using tools provided by the Galactic Empire, when we should be resourcing and tooling-up the Rebel Alliance. Doing so goes beyond mere ‘elegant consumption’ and returns the web into the hands of its users.

While it’s still early days, for at least a decade many players have chosen to become part of this movement to fix the issues that increasing centralization has created. From Diaspora to Bit Torrent, a growing list of technologies continue to develop alternatives for the DWeb: for storage, social nets, communication and collaboration apps, database, cryptocurrencies, etc.

(Hessie Jones, Forbes)

While the main reasons educators may want to use MoodleNet are based on its usefulness to them in an everyday context, we’re pleased to be contributing to a wider mission. While AI can be useful when used appropriately, nothing beats human interaction within communities for the recommendation of resources and approaches to empower educators and improve teaching and learning!

MoodleNet in 2019: a retrospective

Retrospective

Intro

This year, MoodleNet has gone from a Minimum Viable Product (MVP) to a more sophisticated beta, which is now ready to be tested as a federated platform. Along the way, hundreds of people have had the opportunity to test various versions of MoodleNet, to get involved in various ways (such as localisation), and to give their input into its future direction.

We’ve collaborated with a number of organisations and individuals outside Moodle HQ, most notably Eummena, a new Moodle Partner, who have added to the resource and energy available to the MoodleNet project. We’ve also had input from 3ipunt around plugin development, and many conversations with other Moodle Partners who are keen to get involved in 2020.

In last year’s retrospective, we explained that building a federated network like MoodleNet takes time. While ActivityPub-based alternatives to services such as Twitter (Mastodon and Pleroma), Instagram (Pixelfed), YouTube (PeerTube) exist, and more are being developed, MoodleNet is one of the first social networks to reimagine social networking from the ground-up for this particular audience. We want to empower educators by them creating and joining communities to engage in discussions with one another and curate resources.   

Interestingly, Twitter seems to have realised the importance and power of federation, announcing a dedicated team to explore ways in which their platform can become decentralised. As we have often argued, the design of platforms and algorithms, as well as content moderation should happen for and with communities, instead of being controlled by a faceless corporation, potentially headquartered many thousands of miles away. So if Twitter is serious about this initiative we invite them to adopt the ActivityPub web standard and join the Fediverse!

This, then, is the story of MoodleNet in 2019. It’s been quite the adventure.

Q1: Testing the value proposition

We began the year in January with a core team of Doug Belshaw (Product Manager), Mayel de Borniol (Technical Architect), Ivan Minutillo (UX Designer & Front-end Developer), and Alex Castaño (Backend Developer). By the end of January we had begun testing the value proposition of MoodleNet with those who had signed up. Volunteer contributors helped to get MoodleNet translated into a number of languages, which we then tested with English and Spanish speakers.

Gaining feedback from testers, we evolved MoodleNet during the first testing period so that by early February, MoodleNet looked like this:

MoodleNet UI (Feb 2019)

The question representing our value proposition was “Do educators want to join communities to curate collections of resources?”. After several surveys and lots of conversations, it appeared that, even from the initial version we presented to users during the first testing period, yes they did!

We iterated from version 0.3 in late February, to 0.5 in early March, and 0.7 by the end of that month. During that time, the second testing period demonstrated that users wanted a way of being able to distinguish the good from the bad in terms of resources, so we published an in-depth post exploring rating systems. In that post we shared the following diagram, commenting that ‘quality’ is subjective, and how we are interested in providing “the shortest path to the best resources”. 

Educational resources triangle

We learned a lot from testing MoodleNet’s value proposition, and most importantly confirmed we were on the right track. The tagline ‘Share. Curate. Discuss.’ was chosen based on what resonated the most among testers, and we ended up with a very clear list of priorities for future development.

Q2: Iterating and learning

In the second quarter of 2019, our focus was on ensuring that the version of MoodleNet we delivered met and, if possible, exceeded people’s expectations from the beginning. At this point, each MoodleNet installation was a standalone ‘silo’; in other words, it could not federate with other MoodleNet instances. 

While we worked on federation on the backend, we made iterative improvements to the front-end in April and May with versions 0.9 alpha, v0.9.1 alpha, v0.9.2 alpha, and v0.9.3 alpha. At the same time, we thought carefully about how to make search in MoodleNet a useful and delightful experience, as well as the best approach to categorising resources and collections. 

MoodleNet UI (May 2019)

At the UK & Ireland MoodleMoot we ran a workshop where five emergent groups looked at MoodleNet from various perspectives. Our wiki page for the event captures the feedback we received from the ‘Online course design’, ‘Institutional use’, ‘Learning and teaching’, ‘Technology’, and ‘UX’ groups. Although this was very positive, we noticed some concerns around telling the difference between Communities and Collections, as well as the way discussion threads were organised.

In May we attended the Creative Commons Summit in Lisbon, Portugal. We did not run a session this time, instead networking with other projects, including OER World Map, Wikidata, and CC Search. In fact, our conversations with the OER World Map project directly benefited our approach to categorisation.

Towards the end of Q2 we said goodbye to Alex, and hello to Karen and James. We were delighted to have been able to attract and employ two such high-quality candidates, particularly to help with the challenges we faced around implementing federation.

We had a new page about MoodleNet arriving on moodle.com, but wanted to re-use the moodle.net domain for the main project website, so it was important that we set about sunsetting the existing service. In June, we worked with the Moodle Community team to formulate a plan which they then carried out perfectly over the following months. 

New moodle.com/moodlenet

We finished work on the first draft of MoodleNet’s Data Protection Impact Assessment (DPIA) and made it available for community consultation. This process, which we went through with Carlo Polizzi, Moodle’s Privacy Officer (as well as Simon McGarr, Moodle’s external Data Protection Officer and Legal Counsel), really helped us clarify the data workflows using a ‘privacy by design’ approach.

Q3: Rewriting all the things

While James and Karen got up-to-speed in June, Mayel prototyped a plugin for Moodle LMS, and Ivan took some time to redesign the front-end user experience. By the end of the month we had mock-ups ready of the new, much more conversational interface that makes the relationship between Communities and Collections much clearer. In July we did the additional work necessary to turn this into a clickable prototype, which we tested out with users.

It was around this time that we realised that we were going to have to change the database structure and rewrite much of the backend code in order for MoodleNet to be able federate while also providing a snappy UX on the front-end. This was not a small undertaking, but we were nevertheless optimistic about the amount of time this would take. Eummena, a new Moodle Partner, decided to support the MoodleNet team by hiring a full-time backend developer in the form of Antonis Kalou. He’s been working very closely with our team ever since. 

Somewhat implausibly, looking back, we announced that the federation testing programme would start in August! Of course, making predictions around these kinds of things is hard.

MoodleNet Discover page

Given the backend developers would be busy with the rewrite, we decided to turn the new conversational UI into code. The first version of this was ready by the end of August.

In preparation for the federation testing programme, and because of wider problems in the Fediverse around decentralised moderation, we created a draft user agreement and covenant for instance administrators. We also clarified our position around the licenses users would be able to select when uploading resources to MoodleNet. 

In September, based on some feedback from the community, we reasserted the project’s stance on ‘free speech’ issues in the context of wider debates about and across social networks. We also revisited considerations around metadata and the way ‘likes’ and ‘boosts’ would work across federated instances.

Q4: Crunch time

By the time we got to October, whilst the backend refactor was in full swing, the MoodleNet servers were still running the new front-end with an old (unfederated) backend. That needed to change as soon as possible given the upcoming Global MoodleMoot, where we wanted to start federation testing and give people the ability to sign-up and start using an instance run by Moodle HQ.

At this point, Alessandro Giansanti joined us for a few weeks as a front-end developer to help us during crunch time. As a member of ZO (a cooperative he’s formed with existing team members Ivan and Mayel), he’s now also part of our team and we’ve really benefited from his energy and experience. Eummena also funded a front-end developer who has been helping Ivan and Alessandro. 

MoodleNet sign-in page

MoodleNet sign-in page

As the Moot approached, we asked for some feedback from the community around resource uploading in MoodleNet, and we started to think beyond the beta for our 2020 roadmap. 

At the start of November we were still planning to start federation testing in some form at the Global Moot. However, despite the team working late into the night for several days before demo day, we didn’t manage to have a fully working version ready by the time Doug and Mayel took to the stage, so we simply showed screenshots instead. The main challenge, as we explained in our reflections on what happened, was resolving the small but numerous breaking changes in GraphQL API to get the frontend working correctly with the shiny new backend.

After taking some time off to recover from an intense period of work, the team have regrouped in December and resolved the remaining broken functionality in MoodleNet. There’s many more features and improvements we want to work on, but the core MoodleNet functionality is now ready and hooked up with federation. We’ve even already had an initial external security review done, which showed no major problems. All in all – as we said in our recent ALT Online Winter Conference session – we’re actually in pretty good shape going into 2020.

Final thoughts

Reflecting on mid 2019 in particular, it’s evident that we lost a bit of momentum for a while. Some of that couldn’t be helped because of the nature of the problems we had to solve, but we certainly could do a better job of estimating (or avoid trying to estimate altogether) how long it would take. We’ve fed these realisation into our thinking and planning for next year.

The team is particularly looking forward to users getting their hands on the new, federated, version of MoodleNet. We’re excited about the amount of power and flexibility we’re putting into the hands of educators, and can’t wait to see what individuals and organisations do with MoodleNet in 2020!

Welcome Alessandro, new MoodleNet front-end developer!

The MoodleNet team is delighted to welcome Alessandro Giansanti who will be working on front-end development. Ale’s based in Italy and will be working between two and four days on MoodleNet!

Alessandro and family
Alessandro and family

We would love to hear a bit about your work history?

My life followed roughly a square wave path between coding and music/entertainment:

  • from 8 years old hacking on C64 basic
  • from 15 rock guitar and recording studio
  • from 23 Java consultant
  • from 26 projectionist in cinemas, audio technician in national tv broadcasting, and photographer
  • from 34 steadily restarded coding, firstly as freelancer on e-commerce and websites
  • then, from 2011, I got totally passionate with Javascript.

Early adopter of the MEAN stack, I worked full-stack on different projects: geographic map based applications for automotive businesses, online sport gaming, and blockchain based authentication applications.

What do you love about what you do?

“I love it when a plan comes together” (John “Hannibal” Smith)

I love aiming at the realization of ideally crystal-shaped architectures and implementations and then, back down-to-earth, understanding which is the most efficient compromise to adopt. A well implemented system (and not one of “just make it work”) means happier coders – current and future – happy to work and expand it, and therefore happier and satisfied users. Furthermore, software is a means to implement human activities, so I, as a coder and a human, am happy when I can participate in the realization of some positive ones.

What are your interests outside of work?

Playing noisy improvised funk-rock with my band and with whoever wants to join the jam!

Where is your favourite place in the world, and why?

The whole our World is fantastic. If you look closely, you will see your home is fantastic too, take care of it.

Statement on GitLab

The MoodleNet team use products and services from GitLab Inc. to develop the MoodleNet code base. We were therefore disappointed to learn of a recent decision by GitLab Inc. to change their policies around who they will and will not do business with.

"Deciding not to turn down customers on "moral/value" grounds is still a "moral/value" choice. It's just the wrong one. I hope that GitLab employees are furious."
Tweet from Eva Galperin, Director of Cybersecurity for the Electronic Frontier Foundation

As reported in The Register, GitLab Inc. first updated their policies to declare that they “won’t ban potential customers on “moral/value grounds,” and that employees should not discuss politics at work”. However, after a substantial backlash from current and potential customers, they have modified their position to “get rid of the problematic passages put forth in [the] handbook change”.

The internal policies of other companies might seem irrelevant to the work we are doing at Moodle, but it is important that, as a purpose-driven organisation, we use the influence we have to make our world a better place. Our values include integrity (“we employ the highest ethical standards, demonstrating honesty and fairness in every action that we take”) and openness (“we strive to be open in our goals, our tools, our processes and our results, as much as is practical”).

We believe that in order to live up to our values of integrity and openness, we should make decisions of which our community can be proud. While it would appear that GitLab Inc. have partly reversed their decisions based on the firestorm of criticism they have received, we have nevertheless decided to remove the MoodleNet repositories from gitlab.com and move them to a self-hosted solution. We will provide a further update on this after the Global Moot in Barcelona next month.


Note: the MoodleNet project is set up differently to the Moodle LMS and Workplace projects. Last year, we made the pragmatic decision to use gitlab.com (an instance of the GitLab open source software operated by GitLab, Inc.) to ensure that our project was as open to contributors as possible. 

Our intention was always to move the project’s repositories to an even more open and decentralised solution at an appropriate time. Now that time has come, we are evaluating a variety of options, including the ForgeFed project. Although we may decide to mirror our repositories on centralised services such as GitHub, we believe it is important for the canonical location of our code to be under our control.

MoodleNet and ‘free speech’

Network

Background

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.

Context

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 mastodon.art is a community artists, and scholar.social 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-moderators@moodle.com

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: http://bit.ly/2lvTci5

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!