openedx / wg-devops

Issue repository for the DevOps Working Group
1 stars 2 forks source link

Extract tutorcore from tutor #35

Open kdmccormick opened 2 years ago

kdmccormick commented 2 years ago

Copied in from the existing backlog. Needs grooming.


Tutor should be refactored so that applications that are now considered "core," e.g., edx-platform, are refactored to use the plugin subsystem

regisb commented 2 years ago

I believe that working on this matter will help us resolve openedx/wg-developer-experience#32: a robust and comprehensive plugin mechanism will be necessary to extract the LMS and CMS from the core.

kdmccormick commented 2 years ago

From openedx/wg-devops#28:

Well, when we move the LMS and the CMS out of the core, I expect that the current tutor documentation is still very much going to remain the same. It's actually the "core" that will be moved away from tutor and to a different project, with its own documentation. So if we end up with two new documentation pages where we have an exhaustive list of patches and settings, then this list will remain there.

Interesting!

If we start with this world:

tutor:
config, patches, templates, plugins, lms, cms
----------------------------------------------
^            ^ 
|            |
tutor-forum  tutor-discovery   etc...

I had imagined (assumed?) that the LMS/CMS extraction would yield a world like:

tutor:
config, patches, templates, plugins
---------------------------------------
^          ^          ^            ^ 
|          |          |            |
tutor-lms  tutor-cms  tutor-forum  tutor-discovery     ...etc

ie, Tutor is a generic tool for configuring and running pluggable webservices, with Open edX LMS & CMS being its flagship plugins.

But it sounds like you envision something more like:

tutorcore:
config, patches, templates, plugins
-----------------------------------
^        ^
|        |
|        other-tutorcore-based-tools?
|
|
tutor: lms, cms
--------------------------------------
^             ^ 
|             |
tutor-forum   tutor-discovery   etc...

ie, Tutor-Core is a generic tool for configuring and running pluggable webservices, and Tutor (which runs Open edX LMS & CMS) is its flagship plugin, which itself can be customized through Tutor-specific Tutor-Core plugins.

Do I have that right?

regisb commented 2 years ago

Tutor-Core is a generic tool for configuring and running pluggable webservices, and Tutor (which runs Open edX LMS & CMS) is its flagship plugin, which itself can be customized through Tutor-specific Tutor-Core plugins.

Yes, this is exactly right :) As a devops I spend a lot of time installing and managing software, and I'm always amazed how frequently how different projects need to reinvent the same thing to make their open source software installable. For instance:

There are tons of tools out there that would benefit from a simple configuration/environment/cli management interface. I felt really bummed and surprised that I didn't discover an existing, more appropriate solution when I started working on Tutor. The closest I could find was Ansible but there were several issues with that: