6
0
mirror of https://github.com/ChristianLight/tutor.git synced 2024-12-12 06:07:56 +00:00
Go to file
Régis Behmo 15b219e235 feat: migrate to plugins.v1 with filters & actions
This is a very large refactoring which aims at making Tutor both more
extendable and more generic. Historically, the Tutor plugin system was
designed as an ad-hoc solution to allow developers to modify their own
Open edX platforms without having to fork Tutor. The plugin API was
simple, but limited, because of its ad-hoc nature. As a consequence,
there were many things that plugin developers could not do, such as
extending different parts of the CLI or adding custom template filters.

Here, we refactor the whole codebase to make use of a generic plugin
system. This system was inspired by the Wordpress plugin API and the
Open edX "hooks and filters" API. The various components are added to a
small core thanks to a set of actions and filters. Actions are callback
functions that can be triggered at different points of the application
lifecycle. Filters are functions that modify some data. Both actions and
filters are collectively named as "hooks". Hooks can optionally be
created within a certain context, which makes it easier to keep track of
which application created which callback.

This new hooks system allows us to provide a Python API that developers
can use to extend their applications. The API reference is added to the
documentation, along with a new plugin development tutorial.

The plugin v0 API remains supported for backward compatibility of
existing plugins.

Done:
- Do not load commands from plugins which are not enabled.
- Load enabled plugins once on start.
- Implement contexts for actions and filters, which allow us to keep track of
  the source of every hook.
- Migrate patches
- Migrate commands
- Migrate plugin detection
- Migrate templates_root
- Migrate config
- Migrate template environment globals and filters
- Migrate hooks to tasks
- Generate hook documentation
- Generate patch reference documentation
- Add the concept of action priority

Close #499.
2022-04-15 15:30:54 +02:00
.github v13.1.8 (2022-03-18) 2022-03-24 09:41:41 +01:00
bin feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
docs feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
requirements feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
tests feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
tutor feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
.coveragerc refactor: add code coverage, cover CLI commands with tests 2022-01-04 13:40:33 +01:00
.gitignore refactor: add code coverage, cover CLI commands with tests 2022-01-04 13:40:33 +01:00
.gitlab-ci.yml Move to an included CI configuration file 2020-10-02 15:22:30 +02:00
CHANGELOG-nightly.md feat: upgrade to Maple 2021-12-20 21:21:36 +01:00
CHANGELOG.md feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
CONTRIBUTING.rst Clarify contributing/troubleshooting instructions 2020-11-30 15:32:43 +01:00
Dockerfile feat: switch the package name from "tutor-openedx" to "tutor" 2021-07-03 11:07:37 +02:00
LICENSE.txt gpl -> agpl 2019-01-18 15:19:18 +01:00
Makefile feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00
MANIFEST.in fix: missing file in pip install tutor[full] 2021-12-20 22:59:21 +01:00
README.rst minor typos fixed 2022-03-29 08:44:33 +02:00
setup.py fix: package version in nightly 2022-03-31 15:36:30 +02:00
tutor.spec feat: migrate to plugins.v1 with filters & actions 2022-04-15 15:30:54 +02:00

.. _readme_intro_start:

Tutor: the Docker-based Open edX distribution designed for peace of mind
========================================================================

.. image:: https://overhang.io/static/img/tutor-logo.svg
  :alt: Tutor logo
  :width: 500px
  :align: center

|

.. image:: https://img.shields.io/static/v1?logo=github&label=Git&style=flat-square&color=brightgreen&message=Source%20code
  :alt: Source code
  :target: https://github.com/overhangio/tutor

.. image:: https://img.shields.io/static/v1?logo=discourse&label=Forums&style=flat-square&color=ff0080&message=discuss.overhang.io
  :alt: Forums
  :target: https://discuss.overhang.io

.. image:: https://img.shields.io/static/v1?logo=readthedocs&label=Documentation&style=flat-square&color=blue&message=docs.tutor.overhang.io
  :alt: Documentation
  :target: https://docs.tutor.overhang.io

.. image:: https://img.shields.io/pypi/v/tutor?logo=python&logoColor=white
  :alt: PyPI releases
  :target: https://pypi.org/project/tutor

.. image:: https://img.shields.io/github/license/overhangio/tutor.svg?style=flat-square
  :alt: AGPL License
  :target: https://www.gnu.org/licenses/agpl-3.0.en.html

.. image:: https://img.shields.io/static/v1?logo=twitter&label=Twitter&style=flat-square&color=1d9bf0&message=@overhangio
  :alt: Follow us on Twitter
  :target: https://twitter.com/overhangio/

.. image:: https://img.shields.io/static/v1?logo=youtube&label=YouTube&style=flat-square&color=ff0000&message=@overhangio
    :alt: Follow us on Youtube
    :target: https://www.youtube.com/c/OverhangIO

**Tutor** is the official Docker-based `Open edX <https://openedx.org>`_ distribution, both for production and local development. The goal of Tutor is to make it easy to deploy, customise, upgrade and scale Open edX. Tutor is reliable, fast, extensible, and it is already used to deploy hundreds of Open edX platforms around the world.

Do you need professional assistance setting up or managing your Open edX platform? Overhang.IO provides online support as part of its `Long Term Support (LTS) offering <https://overhang.io/tutor/pricing>`__.

Features
--------

* 100% `open source <https://github.com/overhangio/tutor>`__
* Runs entirely on Docker
* World-famous 1-click `installation and upgrades <https://docs.tutor.overhang.io/install.html>`__
* Comes with batteries included: `theming <https://github.com/overhangio/indigo>`__, `SCORM <https://github.com/overhangio/openedx-scorm-xblock>`__, `HTTPS <https://docs.tutor.overhang.io/configuration.html#ssl-tls-certificates-for-https-access>`__, `web-based administration interface <https://github.com/overhangio/tutor-webui>`__, `mobile app <https://github.com/overhangio/tutor-android>`__, `custom translations <https://docs.tutor.overhang.io/configuration.html#adding-custom-translations>`__...
* Extensible architecture with `plugins <https://docs.tutor.overhang.io/plugins.html>`__
* Works with `Kubernetes <https://docs.tutor.overhang.io/k8s.html>`__
* Amazing premium plugins available in the `Tutor Wizard Edition <https://overhang.io/tutor/wizardedition>`__, including `Cairn <https://overhang.io/tutor/plugin/cairn>`__ the next-generation analytics solution for Open edX.
* No technical skill required with the `zero-click Tutor AWS image <https://docs.tutor.overhang.io/install.html#zero-click-aws-installation>`__

.. _readme_intro_end:

.. image:: ./docs/img/quickstart.gif
    :alt: Tutor local quickstart
    :target: https://terminalizer.com/view/91b0bfdd557

Quickstart
----------

1. Install the `latest stable release <https://github.com/overhangio/tutor/releases>`_ of Tutor
2. Run ``tutor local quickstart``
3. You're done!

Documentation
-------------

Extensive documentation is available online: https://docs.tutor.overhang.io/

Is there a problem?
-------------------

Please follow the instructions from the `troubleshooting section <https://docs.tutor.overhang.io/troubleshooting.html>`__ in the docs.

.. _readme_support_start:

Support
-------

To get community support, go to the official discussion forums: https://discuss.overhang.io. For official support, please subscribe to a Long Term Support (LTS) license at https://overhang.io/tutor/pricing.

.. _readme_support_end:

.. _readme_contributing_start:

Contributing
------------

We welcome contributions to Tutor! To learn how you can contribute, please check the relevant section of the Tutor docs: `https://docs.tutor.overhang.io/tutor.html#contributing <https://docs.tutor.overhang.io/tutor.html#contributing>`__.

.. _readme_contributing_end: