Moodle is now available
-
Hi all,
Moodle is now available in the app store. It's marked as unstable at the moment, we have to add LDAP support and add tests. Do not use in production yet. Thanks to @atrilahiji for much of the work!Code: https://git.cloudron.io/cloudron/moodle-app.git
Docs: https://docs.cloudron.io/documentation/moodle/ -
@atrilahiji When testing moodle a bit more (plugins etc), what I found is there are many different types of plugins - https://docs.moodle.org/dev/Plugin_types . And each plugin type goes into it's own directory (!). Wow, thats quite insane from a packaging perspective.
Do you know how commonly all these plugins are used for moodle? I can only think of moving the whole code wholesale into /app/data like we do in unmanaged WP. What do you think?
-
The plugin situation is what I feared - https://moodle.org/mod/forum/discuss.php?d=323960 and http://james-moodle.blogspot.com/2015/09/those-pesky-moodle-plugins-and-upgrading.html . You just have to copy files all over.
-
The plugin situation is what I feared - https://moodle.org/mod/forum/discuss.php?d=323960 and http://james-moodle.blogspot.com/2015/09/those-pesky-moodle-plugins-and-upgrading.html . You just have to copy files all over.
@girish oh boy I didn’t really think of this part... I’ll see if I can come up with anything else but moving everything to the data folder is the last resort.
-
One option would be picking common types of plugins and supporting those. Like these:
/path/to/moodle/theme/ - themes
/path/to/moodle/mod/ - activity modules and resources
/path/to/moodle/blocks/ - sidebar blocks
/path/to/moodle/question/ - question types/behaviours/formats
/path/to/moodle/course/format/ - course formats
/path/to/moodle/admin/report/ - admin reports
/path/to/moodle/local - Generic plugins for local customisations
/path/to/moodle/auth - Auth plugins
/path/to/moodle/enrol - Enrollment methods
/path/to/moodle/filter - Filters
/path/to/moodle/webservice - Custom webservices
/path/to/moodle/portfolio - Portfolio plugins (useful for Mahara)Could we symlink those? Part of me is concerned about the "why is x plusing supported on cloudron but not y" for more obscure use cases which might cause more support traffic, but I suppose that part is your call as you and @nebulon are the ones that have to handle that support traffic.
-
One option would be picking common types of plugins and supporting those. Like these:
/path/to/moodle/theme/ - themes
/path/to/moodle/mod/ - activity modules and resources
/path/to/moodle/blocks/ - sidebar blocks
/path/to/moodle/question/ - question types/behaviours/formats
/path/to/moodle/course/format/ - course formats
/path/to/moodle/admin/report/ - admin reports
/path/to/moodle/local - Generic plugins for local customisations
/path/to/moodle/auth - Auth plugins
/path/to/moodle/enrol - Enrollment methods
/path/to/moodle/filter - Filters
/path/to/moodle/webservice - Custom webservices
/path/to/moodle/portfolio - Portfolio plugins (useful for Mahara)Could we symlink those? Part of me is concerned about the "why is x plusing supported on cloudron but not y" for more obscure use cases which might cause more support traffic, but I suppose that part is your call as you and @nebulon are the ones that have to handle that support traffic.
@atrilahiji It's too much to symlink. I think /app/data it is. Sucks, but can't blame them really. I saw a copyright header from 1999 in the code (!). That was about the time I was learning to program, hee hee.
I tried several plugins and they all really rely on the code writing all over, so there is no point wasting time trying to fit it into Cloudron's packaging model. For a start, I will go with the list you gave me and we can just fixup the package as we go.
-
@atrilahiji It's too much to symlink. I think /app/data it is. Sucks, but can't blame them really. I saw a copyright header from 1999 in the code (!). That was about the time I was learning to program, hee hee.
I tried several plugins and they all really rely on the code writing all over, so there is no point wasting time trying to fit it into Cloudron's packaging model. For a start, I will go with the list you gave me and we can just fixup the package as we go.
@girish Yeah. Nobody ever said Moodle was well written :^)
But yeah their plugin system is pretty dated. I can push something to Moodle tracker (their JIRA instance) and see if they agree or decide to stick to their old ways.
-
@girish I pushed a MR here and my feelings would not be hurt if you decline it: https://git.cloudron.io/cloudron/moodle-app/-/merge_requests/3
This is super sketchy and I'm really not fond of it as a solution. In my mind its either this or move the code to /app/date entirely. Not sustainable the way it is now
-
@atrilahiji It's more complicated unfortunately
All those subdirectories already have existing code from upstream. So, let's say
mod
andcourse/format
have existing subdirectories coming in from moodle release. So, we have to keep a copy and reverse symlink etc. It gets very ugly...I have moved everything to /app/data now though (I pushed it). Will push a new package shortly. There was a php snippet in the docs that gave me all the interesting plugin directories - https://git.cloudron.io/cloudron/moodle-app/-/blob/master/plugintypes.php . And then I copy them over like https://git.cloudron.io/cloudron/moodle-app/-/blob/master/start.sh#L44
-
@atrilahiji It's more complicated unfortunately
All those subdirectories already have existing code from upstream. So, let's say
mod
andcourse/format
have existing subdirectories coming in from moodle release. So, we have to keep a copy and reverse symlink etc. It gets very ugly...I have moved everything to /app/data now though (I pushed it). Will push a new package shortly. There was a php snippet in the docs that gave me all the interesting plugin directories - https://git.cloudron.io/cloudron/moodle-app/-/blob/master/plugintypes.php . And then I copy them over like https://git.cloudron.io/cloudron/moodle-app/-/blob/master/start.sh#L44
@girish Yeah... the upgrade would get messy.
I was just looking over that. That script is magic.
This is what I get for panic pushing a MR. I'll remove that.
-
@atrilahiji To add to this, I also found that many plugin do
require ../../config.php
which breaks with symlinks.@girish Oh boy. Automating this has turned out to be quite the struggle. Thanks for all your work! I thought it would be easier than it turned out to be
Egg on face for me