Alex Castaño, MoodleNet’s first backend developer, is moving on this week. We wanted to take the opportunity to thank Alex, and reflect on what he and the team have achieved since last September.
Some members of the community might not understand the role of a backend developer. Could you explain what your role at Moodle has been over the last eight months?
The main task of a backend developer is to create the business logic of the application. He also stores the data maintaining its integrity at all times. And last, but not least, he ensures the data is delivered correctly and safely to the rest of the systems.
So my work at Moodle has been basically to discover the needs and the goals of the project, to create a computer system to simulate it and to develop a protocol to get the stored information to be presented in the form of a web page.
What would you pick out as some of your highlights of working as part of the MoodleNet team?
I particularly enjoyed the creation of a generic library for ActivityPub. It was a big challenge, and although it’s not 100% finished, I think it’s a very interesting project.
Creating a GraphQL API has been another big challenge for me. I only knew the technology of having read about it, but had never put it into practice. I was able to learn first-hand about its advantages, but also its drawbacks.
Another interesting part of the project has been the research of the different technologies available and how they could be integrated into MoodleNet. This also includes the study of different free software and how they solve the different problems you face. It is an enriching process and you learn a lot from the experience of other developers. It’s the great advantage of free software, and I hope that other developers will find inspiration in my work to achieve their goals.
As you move onto a new opportunity, how can people follow your work and keep in touch?
I don’t write as much as I’d like, but in my blog (https://alexcastano.com) you can follow my next steps and you can also find my contact details.
Update: we’ve closed the job listing for this role and will be making a decision soon!
With MoodleNet we’re building a resource-centric social network for educators. One key differentiating feature is that MoodleNet will be federated, meaning separate instances can communicate with one another. To enable this to happen, we’re using ActivityPub, an official W3C recommended standard, and to ensure scalability we’re using Elixir, a dynamic, functional programming language.
There’s several parts to MoodleNet’s federation: receiving or fetching activities from other instances, interacting with them, and of course pushing new activities to followers. Alex Castaño, the backend developer who joined us at the end of September 2018, has almost completed the first part of this equation. He’s decided to move on at the end of May, which means we’re looking for a new backend developer to complete the work on federation.
This is a flexible position and can be based remotely, or out of the Moodle office in Barcelona. View the job listing for details, and please pass this along to any developer you know who might be interested.
On Tuesday, the European Parliament gave final approval to the Copyright Directive, a controversial piece of legislation affecting online services that either link to news articles or allow uploads.
During the process of this legislation coming into law, the MoodleNet team has been asked about the potential impact on what we are building. Developments are ongoing even now and the Directive has to passed into law by the European member states.
As a result, we have decided to keep a wiki page up-to-date about what the Copyright Directive may mean for MoodleNet. You can access this on the Moodle wiki.
I’m MoodleNet Lead and, since the project’s inception, I’ve had lots of conversations with many different people. Once they’ve grasped that MoodleNet is a federated resource-centric social network for educators, some of them ask a variation of this question: Oh, I assume you’ll be using a star rating system to ensure quality content?
They are often surprised when I explain that no, that’s not the plan at all. I haven’t written down why I’m opposed to star rating systems for educational content, so what follows should hopefully serve as a reference I can point people towards next time the issue crops up!
However, this is not meant as my last word on the subject, but rather a conversation-starter. What do you think about the approach I outline below?
Wikipedia defines a rating system as “any kind of rating applied to a certain application domain”. Examples include:
Motion Picture Association of America (MPAA) film rating system
Rating system of the Royal Navy
A rating system therefore explains how relevant something is in a particular context.
Ratings in context
Let’s take the example of film ratings. Thanks to the MPAA film rating system, parents can decide whether to allow their child to watch a particular film. Standardised criteria (e.g. drugs / sex / violence) are applied to a film which is then given a rating such as G (General Audiences), PG (Parental Guidance), and R (Restricted). These ratings are reviewed on a regular basis, sometimes leading to the introduction of new categories (e.g. PG-13).
Despite the MPAA film rating system, many parents seek additional guidance in this area – for example, websites such as Common Sense Media which further contextualise the film.
In other words, the MPAA rating system isn’t enough. Parents also take into account what their child is like, what other parents do, and the recommendations of sites they trust such as Common Sense Media.
Three types of rating systems
As evident in the screenshot above, Common Sense Media includes many data points to help parents make a judgement as to whether they will allow their child to watch a film.
With MoodleNet, we want to help educators find high-quality, relevant resources for use in their particular context. Solving this problem is a subset of the perennial problem around the conservation of attention.
In other words, we want to provide the shortest path to the best resources. Using an adapted project management triangle, educators usually have to make do with two of the three of time, effort, and quality. That is to say they can minimise the time and cost of looking for resources, but this is likely to have a hit on the relevance of resources they discover (which is a proxy for quality).
Likewise, if educators want to minimise the time and maximise the quality of resources, that will cost them more. Finally, if they want to minimise the cost and maximise the quality, they will have to spend a lot more time finding resources.
The ‘holy grail’ would be a system that minimises time and cost at the same time as delivering quality education resources. With MoodleNet, we are attempting to do that in part by providing a system that is part searchable resource repository, and part discovery-based social network.
Simply providing a place for educators to search and discover resources is not enough, however. We need something more granular than a mashup of a search engine and status updates.
What kinds of rating systems are used on the web?
There are many kinds of rating systems used on the web, from informal approaches using emoji, through to formal approaches using very strict rubrics. What we need with MoodleNet is something that allows for some flexibility, an approach that assumes some context.
With that in mind, let’s consider three different kinds of rating systems:
Star rating systems
Best answer systems
1. Star rating systems
One of the indicators in the previous example of the Common Sense Media website is a five-star rating system. This is a commonly-used approach, with perhaps the best-known example being Amazon product reviews. Here is an example:
Should I buy this laptop? I have the opinion of 12 customers, with a rating of three-and-a-half stars out of five, but I’m not sure. Let’s look at the reviews. Here’s the top one, marked as ‘helpful’ by nine people:
So this reviewer left a one-star review after being sent a faulty unit by a third-party seller. That, of course, is a statement about the seller, not the product.
Averaging the rating of these two reviews obviously does not make sense, as they are not rating the same thing. The first reviewer is using the star rating system to complain, and the second reviewer seems to like the product, but we have no context. Is this their first ever laptop? What are they using it for?
Star rating systems are problematic as they are blunt instruments that attempt to boil down many different factors to a single, objective ‘rating’. They are also too easily gamed through methods such as ‘astroturfing’. This is when individuals or organisations with a vested interested organise for very positive or very negative reviews to be left about particular products, services, and resources.
Data mining expert Bing Liu (University of Illinois) estimated that one-third of all consumer reviews on the Internet are fake. According to The New York Times, this has made it hard to tell the difference between “popular sentiment” and “manufactured public opinion.”
As a result, implementing a star rating system in MoodleNet, a global network for educators, would be fraught with difficulties. It assumes an objective, explicit context when no such context exists.
2. Best answer approach
This approach allows a community of people with similar interests to ask questions, receive answers, and have both voted upon. This format is common to Stack Overflow and Reddit.
Some of these question and answer pages on Stack Overflow become quite lengthy, with nested comments. In addition, some responders disagree with one another. As a result, and to save other people time, the original poster of the question can indicate that a particular answer solved their problem. This is then highlighted.
The ‘best answer’ approach works very well for knotty problems that require clarification and/or some collaborative thinking-through of problems. The result is then be easily searched and parsed by someone coming later with the same problem. I can imagine this would work well within MoodleNet community discussion forums (as it already does on the moodle.org forums).
When dealing with educational resources, however, there is often no objective ‘best answer’. There are things that work in a particular context, and things that don’t. Given how different classrooms can be even within the same institution, this is not something that can be easily solved by a ‘best answer’ approach.
3. Like-based systems
Sometimes simple mechanisms can be very powerful. The ‘like’ button has conquered social networks, with the best-known example being Facebook’s implementation.
I don’t use Facebook products on principle, and haven’t done since 2011, so let’s look at other implementations.
Social networks are full of user-generated content. Take YouTube, for example, where 400 hours of video is uploaded every single minute. How can anyone possibly find anything of value with such a deluge of information?
In the above screenshot, you can see a search for one of my favourite topics, The Bolshevik Revolution. YouTube does a good job of surfacing ‘relevant’ content and I can also choose to sort my results by ‘rating’.
Here is the top video from the search result:
I don’t have time to watch every video that might be relevant, so I need a shortcut. YouTube gives me statistics about how many people have viewed this video and how many people subscribe to this user’s channel. I can also see when the video was published. All of this is useful information.
The metric I’m most interested in, however, and which seems to make the biggest impact in terms of YouTube’s algorithm, is the number of upvotes the video has received compared to the number of downvotes. In this example, the video has received 16,000 upvotes and 634 downvotes, meaning that over 95% of people who have expressed an opinion in this way have been positive.
If I want more information, I can dive into the comments section, but I can already see that this video is likely to be something that may be of use to me. I would add this to a shortlist of three to five videos on the topic that I’d watch to discover the one that’s best for my context.
Going one stage further, some social networks like Twitter simply offer the ability for users to ‘like’ something. A full explanation of the ‘retweet’ or ‘boost’ functionality of social networks is outside of the scope of this post, but that too serves as an indicator:
This tweet from the UN about a report their Global Education Monitoring report has been liked 72 times. We don’t know the context of the people who have ‘liked’ this, but we can see that it’s popular. So, if I were searching for something about migrant education, I’d be sure to check out this report.
Although both YouTube and Twitter do not make it clear, their algorithms take into account ‘likes’ and ‘upvotes’ within the context of who you are connected to. So, for example, if a video has a lot of upvotes on YouTube and you’re subscribed to that channel, you’re likely to be recommended that video. Similarly, on Twitter, if a tweet has a lot of likes and a lot of those likes come from people you’re following, then the tweet is likely to be recommended to you.
Interestingly, many Twitter users use the limited space in their bios to point out explicitly that their ‘likes’ are not endorsements, but used to bookmark things to which they’d like to return. In the past year, Twitter has begun to roll out bookmarks functionality, but it is a two-step process and not widely used.
So likes act as both votes and a form of bookmarking system. It’s a neat, elegant, and widely-used indicator.
What does this mean for MoodleNet?
So far, we have discovered that:
The ‘quality’ of a resource depends upon its (perceived) relevance
Relevant resources depend upon a user’s context
We cannot know everything about a user’s context
MoodleNet will implement a system of both taxonomic and folksonomic tagging. Taxonomic tags will include controlled tags relating to (i) language, (ii) broad subject area, and (iii) grade level(s). Folksonomic tags will be open for anyone to enter, and will autocomplete to help prevent typos. We are considering adding suggested tags via machine learning, too.
In addition to this, and based on what we’ve learned from the three rating systems above, MoodleNet users will soon be able to ‘like’ resources within collections.
By adding a ‘like’ button to resources within MoodleNet collections, we potentially solve a number of problems. This is particularly true if we indicate the number of times that resource has been liked by community members.
Context – every collection is within a community, increasing the amount of context we have for each ‘like’.
Bookmarking – ‘liking’ a resource within a collection will add it to a list of resources a user has liked across collections and communities.
Popularity contest – collections are limited to 10 resources so, if we also indicate when a resource was added, we can see whether or not it should be replaced.
As discussions can happen both at the community and collection level, users can discuss collections and use the number of likes as an indicator.
Sometimes the best solutions are the simplest ones, and the ones that people are used to using. In our context, that looks like a simple ‘like’ button next to resources in the context of a collection within a community.
We’re going to test out this approach, and see what kind of behaviours emerge as a result. The plan is to iterate based on the feedback we receive and, of course, continue to tweak the user interface of MoodleNet as it grows!
What are your thoughts on this? Have you seen something that works well that we could use as well / instead of the above?
We want MoodleNet to be useful for educators around the world, so of course we need it to exist in as many languages as possible!
That’s why, as well as launching in English, it’s very important for us to launch with the interface available in other languages, too. We want to encourage the communities, content, and discussions that will come to life on the platform to be representative of the wonderful diversity of this community.
A list of languages you know, including your level in each: Native ; Fluent ; High writing profiency ; High reading proficiency; or Intermediate. (Please don’t forget to include your level in English).
A few words about your experience (if any) with translation, and a link to some of your work (for example, if you’ve helped translate Moodle Core, include a link to your profile on AMOS)
We will then direct message you if we need any more details, and with information about how to get started when translation into your language(s) is ready to begin. We’re going to start with some of the most common languages among users of Moodle,including Spanish.)
If you’re selected to help translate the pilot version of MoodleNet before it launches, you’ll also be invited to join as one of the first pilot users to try out the platform for yourself.
The MoodleNet team is delighted to announce that we have been awarded a Mozilla Open Source Support (MOSS) grant. We pitched for this at the recent Mozilla Festival, and the judges were impressed enough to award us $5,000 to help us perform a privacy and security audit of MoodleNet.
Creating a decentralised platform for MoodleNet is important to our goal of creating an open, safe, connected solution that can be installed and run by any organisation. Doing so, however, increases what security professionals call the ‘attack surface’ of the software environment. We are delighted to not only have a grant from Mozilla to help with this, but also access to their community of talented technologists.
Our plan is to create a series of ‘bounties’ for security testing MoodleNet. This is a proven method for incentivising ethical hackers to disclose privacy and security vulnerabilities in software products and platforms. Using this method, we hope, will not only increase the reliability of our systems, but also help increase trust in open source and federated solutions.
“Thanks to Mozilla for their MOSS initiative, and for their grant towards security testing of MoodleNet. It’s a pleasure to be involved and our team is using it as effectively as we can.” (Martin Dougiamas, Moodle CEO)
We’re still reviewing which platform to use for our security bounty programme, but you can see how organisations and projects such as WordPress, Brave and Discourse use such platforms to improve the quality of their products.
If you’re interested in helping out with this programme and potentially receiving a cash reward for your efforts, there are a number of things you can do:
Subscribe to the “MoodleNet security and privacy testing” Telegram channel for updates
Finally, if you have any suggestions for how we could set up this privacy and security testing programme for even greater success, we’d like to hear from you. Either add a comment below, or get in touch with us directly via email : firstname.lastname@example.org
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.
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:
Bryan 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.
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.
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.
One 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.
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.
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.
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.
Moodle 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.
Given 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!
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:
Open Source & ActivityPub community
Noel De Martin
Vijay Anand Deenadayalan
The creators and contributors of ActivityPub, ActivityStreams, Pleroma, Elixir, React and the countless open source projects we on which we rely.
R. John Robertson
My deepest apologies if I have missed anyone from this list. Please do let me know if I have neglected to credit your input!
Those following the development of the MoodleNet project will be aware that we’ve been working closely with Outlandish over the last six months. The team there have been invaluable in getting us off the ground with design and front-end development.
As the project matures, it’s time for that work to be taken in-house. That’s why we were delighted to have the opportunity to quickly snap-up Ivan Minutillo, a talented UX designer and front-end developer, who lives and works in Gaeta, Italy. He’s already started to build on the work that Outlandish have started, and will continue to refine our vision for MoodleNet on a two day per week basis over the next six months.
Let’s find out a little more about Ivan…
We would love to hear a bit about your work history?
I worked in different agencies and startups during my twenties. In a more or less spontaneous way I was often been involved into the development of dashboards and social networks – which over the years have become my main interest from a UX, code and social point of view.
My first experience with the creation of a social network was in an italian startup, building a social e-commerce app. In the last few years I’ve worked on a dashboard with aimed to provide Identity Access Management for secure machine-to-machine connections, based on blockchain technology. In December I quit to focus on development “for the open”, building economic networks to facilitate the creation of economies within communities.
What do you love about what you do?
Code is politic, since every choice that a developer makes, creates constraints that are reflected in social and economic interactions between users. This aspect, which over the years has created a new class of power, can be seen as a lever to evolve a dialogue between the writer and the user of software, to transform authority into responsibility and to lighten the gap between the two parties.
Furthermore, since code is politic, by writing software based on assumptions different from those of the current dominant culture, we can create new possibilities and spread new ideas. Basically, code is my medium of expression.
What are your interests outside of work?
During the recent period I got interested in agriculture, and together with a group of friends we’re planning to start a mushroom cultivation on the next year.
I have a long time passion about beat generation literature, especially anything wrote by Ginsberg and Burroughs, and rock music (Little Wing by Jimy Hendrix is one of the best thing I’ve ever heard) But more than all, my main interest is create, enhance and be part of local and global communities, to move outside capitalism together.
Where is your favourite place in the world, and why?
I dont have any favourite place, but I am especially bound to the mountain range where I live: Monti Aurunci with all the flora and fauna that lives there.