Moodle has chosen Elixir for its new project

Hello people,

If you don’t know Moodle, it is the most popular learning platform around the world and it is used by many Universities around the world. All Moodle is done in PHP, however, for a new project, MoodleNet an open and federated social network to share learning resources, they have chosen Elixir. In fact, I have been hired to do it and I’m the only developer that actually knows the technology.

We wrote a small blog post about it: MoodleNet - MoodleDocs

But also there is a more detailed explanation about this here: MoodleNet/tech/stack - MoodleDocs

I think it could be very useful for the community how external developers and (big) companies see our technologies and what they expect about it. I’ll be happy to answer any questions you have.


Oooo, this is awesome!

Yeah we ‘used to’ use Moodle here at the college I work at but PHP and so forth along with some design oddities of it made it a pain to manage so it was eventually removed. Definitely looking forward to this!


Nice one :023:

Have you decided what your front-end stack might be?


Yes! We are using React & Apollo. We want to implement a GraphQL API as well.

In addition to being an open source project, we try to document all our decisions and be as open as possible to the community. Everyone is welcome in any way of collaboration.

This is really cool because I’ll be able to open source many libraries in our development process!


Keep in mind that the web socket protocol of GraphQL is not standardized. Where this becomes a problem is if you want to use Elixir and Absinthe for GraphQL on the server side, but want to use the Apollo client. Absinthe Phoenix uses Phoenix Sockets “on the wire” while Apollo uses it’s own protocol.

Here’s where I’ve been looking at the Apollo protocol:

Here is where I started an Elixir implementation of that protocol that interacts with Absinthe:

On the whole this might not be a problem you have. I ran into it through a desire to support GraphQL subscriptions (via. Web Sockets) in an environment where I couldn’t control whether folks would use a Phoenix Channels client or an Apollo GraphQL client. YMMV.


congrats, im still waiting for my time to come up. im in a bad waay but cannot seem to get off the streets. how did you get the job? the only thing i want is to be employed!!!


@alexcastano, what’s progress on the moodleNet , I would like to have look at it and deploy it here for some university here in africa

1 Like

Hello @hudson2010,

Alex has now moved onto other projects - Hi Alex, let’s catch up!.

We’re currently racing to get ready for a federation testing period which we’re expecting to start at the beginning of May. I believe you can still sign up to that.

It’s a bit hard to say when we’ll cut a 1.0 release, for several reasons:

  • We’re a small part-time team trying to deliver a complex project.
  • We’re not sure what’s going to come out of testing.
  • Our experience tells us that people aren’t very good at upgrading once they’ve gotten some software working, so we don’t want to release something too broken into the world.

The best way at the minute to keep up to date would be to check the moodlenet_devs telegram channel. I will make some forum posts about it soon, but right now I think it’s best to wait until we’ve at least cut a release for federation testing.


ok thanks