Show HN: Modern Moodle learning platform open-source alternative
learnhouse.app
learnhouse.app
To convert to a lighter, fresh alternative, we need the following features
- Easy onboarding of new users. On Canvas, instructors add students by email to the course, and the students get an invite in the email.
- Easy to add a variety of question types of quizzes. Native latex support is mandatory (should be able to write $E=mc^2$ in any text box, and it should render).
- Controls on user progress through the course. "If you score at least 50% on Assignment 1, then assignment 2 is unlocked for you."
- Easy to export data.
- Most importantly, an API for accessing student assignment submissions and setting their grades (We have coding assignments that are graded automatically with our own custom codebase). You will need this anyway, if you want any sort of extension support for your platform.
- Fast. I don't care about fancy transitions. Canvas is quite slow, often painfully slow and we want to move away from that.
And that is.. bad? Because it does sound tedious for the teacher. Also how do you feel about importing CSVs?
Obviously, direct upload of excel/csv would work just as well or better, if they were clever enough to pick out the name and email columns from the others.
[1] https://community.canvaslms.com/t5/Instructor-Guide/How-do-I...
We are always on the lookout for new LMS.
Canvas is okay (speed is a concern) but some things are very counter-intuitive. Like matching quiz questions to competencies/outcomes/standards. Also assignments.
Moodle has a hundred different settings for anything - so people get confused and standardisation is hard.
I agree with @Abdullahkalids
1) Instructure Canvas is another open-core (AGPL) LMS with a billion dollar market cap company backing it. It has tons of features and users. Why build another AGPL LMS? Is it solely because their Rails tech stack is terrible?
2) Do you want other institutions and orgs to develop alongside you? The use of AGPL says no, you want to focus on cloud hosting. Why not build an MIT-licensed LMS to differentiate yourself?
3) Every LMS seems to suffer from feature bloat. Instructors come up with insane feature requests and pretty soon your gradebook supports 3 different types of grading, with points or percentages, dropping the lowest 3 of 7 grades in a weighted category. Do you go down this road of developing features for your power users like every other LMS? If not, how do you avoid it? I see you're already interested in SCORM (an abandoned standard from 30 years ago). How do you avoid chasing every standard, every package, every power user feature request?
What makes you say that SCORM is "an abandoned standard from 30 years ago"? Can you provide a reference for that?
https://en.wikipedia.org/wiki/Sharable_Content_Object_Refere...
SCORM 1.2 then SCORM 2004 then TinCan and IMS Common Cartridge and IMS Content Packaging
As an LMS developer, how do you avoid the insanity of building to all of these standards and listening to what your next power user asks for? E.g., there is an instructor out there that has been using the same SCORM 1.2 package from 20 years ago and wants your new LMS to support it.
Instructure was taken over by a Hedge Fund and since then, all the new developments are not part of the Open Source. The open source is a bit crippled now.
None of the new features such as the New Quizzes (yes, its called that), New RCE Text Area, New Analytics, etc etc are not available on the Open Source Version.
So yes, the Billion dollar market is desperate for a new true AGPL LMS.
And it is time for one to disrupt the market.
2. Good Question.
3. Flexibility in grading and marks is really, really, really important. Because the systems, curriculum, standards are not flexible. Even with a University or College, different programs have different grading standards. It is not an option not to support the different types of grading unless the education system itself changes. If you can't support the diversity out there, you quickly risk becoming obsolete even before you start.
Yep, it is LTI time now. Not SCORM or even xAPI, TinCan, etc.
- Nice to see that you've split the frontend and API/Backend.
- Backend is written in Python using fastapi.
- Frontend is Typescript.
- State is stored in MongoDB
- Good documentation to bring up local env, with docker instructions (would be nice if the frontend code was easy to put in a docker image as well).I also don't get why anyone would use MongoDB instead of PostgreSQL, but I can understand that its personal preference.
That said, Moodle could do with some competition.
When I started the project I chose MongoDB for simplicity but a PostgreSQL rewrite is on the roadmap ;)
It sounds like you're not using an ORM if a rewrite is required?
It is true that the (home-baked) ORM we use on top of Mongo provides an abstraction layer which makes parts of the migration easier, but truly finishing the migration has and will feel like a long, gradual rewrite.
That's because Mongo and its "no-SQL" patterns permeated our original architecture. JSON everywhere, layers of caches to handle the inefficiency of complex Mongo queries, stringly-typed fail-quietly semantics, all that sort of fast-and-loose stuff. Truly moving to relational data (Django models, in our case) means replacing all those old patterns with, you know, thoughtfully designed data models and efficient SQL queries. Otherwise, the LMS would just be a Mongo app awkwardly grafted onto a SQL database.
I’m not judging or anything; I’m just curious the decision making process for the switchover.
Prisma for the ORM, although again there are others to choose from.
For example Collaboration can be great for teachers who want to collaborate live on documents (just like Google Docs), a Blocks-based editor (like Notion) would mean unlimited content possibilities, AI search can help students grasp notions easily..
Providing a better developer experience for people that want to develop on top of learnhouse or self-host it in something like Kubernetes & Cloud is a top priority too.
We're just laying the foundations of the LMS and we'll work on new features and guides soon, we would love to hear about some of your recommendations ^^
Or how about thinking deeply about assessment questions that are semi-resistant to LLMs? Justin Wolfers just did a webinar where he talked about visual questions (line moving) as being the most resistant economics questions to LLMs. What about designing from the ground-up to use elements that are LLM-resistant?
Do a really good job of implementing LTI (semi-complex standard) so you can instantly integrate third-party apps. Takes pressure off you to build every tool/feature.
The Moodle code base dates back to somewhere around 2000 ish, and comes with the baggage of the early days of PHP. The Moodle code is full of "no guard rails" style functions, where you do things like write strings directly out as HTML and write direct SQL queries. Couple this with the 'plugin hub' not really have any acceptance criteria, and you get hundreds (thousands?) of security vulnerabilities.
I think there's been a push to modernize things in the few years since I left, but it's hard to update a codebase that old.
Moodle is a total beast to scale, it uses a ton of memory and EVERYTHING assumes its running on one server, not a high-availability setup.
It's PHP and MySQL/PostgreSQL. Not really sure where there should be a problem. With CephFS or NFS scaling shouldn't be an issue for the most part and the database can run on another host?
Sessions write to disk by default.
Uploading to S3 is a plugin you have to install - that defaults to still saving to disk then uploading after a minimum duration.
Are there samples of dynamic web activities one could look at / a template format? It would be amazing if there were a way to provide interactive web activities hosted as open source (e.g. a repo that provides a ThreeJS activity with block-based coding, or e.g. a writing activity that measures language grade level while the student is writing).
Also curious if there are plans for localization support? (This can be tough to add on later with heavily dynamic/interactive blocks and activities)
We're experimenting with headless usage, as you said it would be possible to embed or add a "Dynamic Page Player" or "Canva" to your custom website, the format would be a JSON file that can be passed to that element
Localization support is definitely on the roadmap !
Our company has people working in Moodle constantly. I’m sure 50% of their time is spent clicking though menus. There has to be a better way.
Yes. It also should be a pretty obvious one, but the industry and wider software development culture developed a blind spot for it.
I mean, how many startups would offer better value to customer if they ditched their custom, bloated, dog-slow SaaS, and instead offered an Excel spreadsheet? Happens way too often. I know of a failed startup which sunk a ton of money into pretty basic React fronted, whose main competitor actually licensed an Excel plugin for the same job. And much more functional at that.
The whole software dev world avoids interoperability like a plague. For-profit software at least has the Sinclair excuse (salary depends on one's not understanding it), but somehow open source is even worse. Back in the 1990s companies at least tried to make their software pluggable with/into other software via COM/DCOM. As brittle as it was, at least they tried.
Canvas : AGPL : Rails
D2L : Closed : C#
Blackboard : Closed : .Net?
Google Classroom : Closed : Python?
Sakai : Apache : Java
To me it seems like another business attempting to leverage the open source community to bootstrap a product before they monetize it.
Also we always felt like no one really knows how to use Moodle & co, our teachers always struggled with the software and we did too!
Think I read something here about wrapping it in Django's Model paradigm. Personally i think Tornado gives you greater flexibility while not confining you to a particular lock in.
That said, again, great initiative. I forked the project and may even contribute to it.
Moodle has courses. Courses have topics. Topics have content. Content can be text, videos, quizzes, etc.
As an educator, I'm not seeing the differentiation that would motivate me to investigate further. Am I missing it?
People simply dislike their course web site and conclude "it's Moodle". Most of the time it's not, but just how their lecturers are using Moodle. Every alternative will be the same, just with much fewer possibilities (at least in the beginning).
For example Collaboration can be great for teachers who want to collaborate live on documents (just like Google Docs), a Blocks-based editor (like Notion) would mean unlimited content possibilities not just multimedia content, AI search can help students grasp notions easily..
We would love to know if you have any ideas that you would want to see added to the roadmap ^^
Make the case that your system will help learning, not just manage content better. That could include a better way to assess learning outcomes, engagement, adaptable learning paths, etc.
E.g. 1. American system: the US, Canada 2. The Commonwealth system: the UK, Singapore, New Zealand, Australia, and don't forget the largest student population in India and Indonesia. 3. EU: France, Germany
Accreditation standards are important.
Love to see you've used python for the backend.
Generally good to see some activity in the LMS world.
It would be really interesting if you could share what sort of segment from the online learning market/needs you've been thinking about while building the product
I need to deliver non-videos, only markdown and interactive content for my courses only.
Video to me, is a waste of time for my students.