Skip to main content

Open edX Learning Core and Tagging.

Project description

PyPI CI Codecov Documentation Supported Python versions License

Overview

The openedx_learning package holds Django apps that represent core learning concepts and data models that have been extracted from edx-platform. At the moment, this repo also contains the openedx_tagging package, but this will likely be moved out in the future.

Motivation

The short term goal of this project is to create a small, extensible core that is easier to reason about and write extensions for than edx-platform. The longer term goal is to create a more nimble core learning platform, enabling rapid experimentation and drastic changes to the learner experience that are difficult to implement with Open edX today.

Replacing edx-platform is explicitly not a goal of this project, as only a small fraction of the concepts in edx-platform make sense to carry over here. When these core concepts are extracted and the data migrated, edx-platform will import apps from this repo and make use of their public in-process APIs.

Architecture

Parts

  • openedx_learning.lib is for shared utilities, and may include things like custom field types, plugin registration code, etc.

  • openedx_learning.apps contains our Learning Core Django apps, where foundational data structures and APIs will live. The first of these is authoring, which holds apps related to the editing and publishing of learning content.

  • openedx_tagging.core contains the core Tagging app, which provides data structures and apis for tagging Open edX objects.

Learning Core Package Dependencies

Learning Core code should never import from edx-platform.

We want to be very strict about dependency management internally as well. Please read the .importlinter config file file and the Python API Conventions ADR for more details.

Model Conventions

We have a few different identifier types in the schema, and we try to avoid _id for this because Django uses that convention to reference IDs in other models/tables. So instead we have:

  • id is the auto-generated, internal row ID and primary key. This never changes. Data models should make foreign keys to this field, as per Django convention.

  • uuid is a randomly generated UUID4. This is the stable way to refer to a row/resource from an external service. This never changes. This is separate from id mostly because there are performance penalties when using UUIDs as primary keys with MySQL.

  • key is intended to be a case-sensitive, alphanumeric key, which holds some meaning to library clients. This is usually stable, but can be changed, depending on the business logic of the client. The apps in this repo should make no assumptions about it being stable. It can be used as a suffix. Since key is a reserved name on certain database systems, the database field is _key.

  • num is like key, but for use when it’s strictly numeric. It can also be used as a suffix.

See Also

The structure of this repo follows [OEP-0049](https://open-edx-proposals.readthedocs.io/en/latest/architectural-decisions/oep-0049-django-app-patterns.html) where possible, and also borrows inspiration from:

Code Overview

The openedx_learning.apps package contains all our Django applications.

Development Workflow

One Time Setup

# Clone the repository
git clone git@github.com:ormsbee/openedx-learning.git
cd openedx-learning

# Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it
mkvirtualenv -p python3.11 openedx-learning

Every time you develop something in this repo

# Activate the virtualenv
workon openedx-learning

# Grab the latest code
git checkout master
git pull

# Install/update the dev requirements
make requirements

# Run the tests and quality checks (to verify the status before you make any changes)
make validate

# Make a new branch for your changes
git checkout -b <your_github_username>/<short_description>

# Using your favorite editor, edit the code to make your change.
vim …

# Run your new tests
pytest ./path/to/new/tests

# Run all the tests and quality checks
make validate

# Commit all your changes
git commit …
git push

# Open a PR and ask for review.

Configuring Visual Studio Code

If you are using VS Code as your editor, you can enable the Testing bar by copying from the example configuration provided in the .vscode directory:

cd .vscode/
cp launch.json.example launch.json
cp settings.json.example settings.json

License

The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.

Please see LICENSE.txt for details.

How To Contribute

This repo is in a very experimental state. Discussion using GitHub Issues is welcome, but you probably don’t want to make contributions as everything can shift around drastically with little notice.

Reporting Security Issues

Please do not report security issues in public. Please email security@openedx.org.

Help

If you’re having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community.

Our real-time conversations are on Slack. You can request a Slack invitation, then join our community Slack workspace.

For more information about these options, see the Getting Help page.

Change Log

Unreleased

[0.1.0] - 2021-08-08

Added

  • First release on PyPI.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openedx_learning-0.31.0.tar.gz (192.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openedx_learning-0.31.0-py2.py3-none-any.whl (268.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file openedx_learning-0.31.0.tar.gz.

File metadata

  • Download URL: openedx_learning-0.31.0.tar.gz
  • Upload date:
  • Size: 192.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openedx_learning-0.31.0.tar.gz
Algorithm Hash digest
SHA256 5451385b66a0c4858a4c493e4b74d144bd1a026c98d3aa6dd45709a582d0872e
MD5 334b2b7f83ec93a9ef94957251809a55
BLAKE2b-256 0a37068ff62f90bfee13e4068d1cc0d1e0ef215f9539b37577c4931115bb735f

See more details on using hashes here.

File details

Details for the file openedx_learning-0.31.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for openedx_learning-0.31.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 765abbae320b0c7d93ca343b6527af3858d5dca8b2e3ba1f4c2d1abdf0d65de3
MD5 cb862bb9f1d38077727b9f1d53129bd0
BLAKE2b-256 95523b1d4e194420c644e7efe6a04cc2dd181bf8462ffb43deb08376431c4f47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page