openedx / openedx/openedx-platform
Greenfield prod-ready Django settings without YAML
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8.2k
- Forks
- 4.4k
- Avg merge
- 6d 18h
- Merged PRs (30d)
- 42
Description
Background
Proposal
"Just" start fresh with idiomatic Python-defined Django settings files.
There would be four new settings files:
lms/settings.pylms/test_settings.py(derived fromlms/settings.py)cms/settings.py(derived fromlms/settings.py)cms/test_settings.py(derived fromcms/settings.pyandlms/test_settings.py)
The recommended mechanism for configuring edx-platform would be to define a Django settings module for LMS and for CMS, each based on their respective settings.py module, and then set DJANGO_SETTINGS_MODULE to point to the correct custom module in each environment. This is standard Django practice.
Several things would be deprecated:
- all of
lms/envs/ - all of
cms/envs/ - yaml-based config via
LMS_CFGandCMS_CFG
Backwards compatibility
Tutor would need to change significantly to adapt to this, but it could certainly be done, and possibly could be done in a way that doesn't break any patch points from the perspective of Tutor plugin devs and users.
Direct deployers of edx-platform would need to adapt. We would leave lms/envs/ and cms/envs/ in place for 6 months to allow for migration. After they are removed, direct deployers could still use them (and YAML config) by copying the settings modules they need into their private fork and/or deployment pipeline, and setting DJANGO_SETTINGS_MODULE accordingly.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the linked Open edX proposal and then inspect the existing lms/envs/ and cms/envs/ configuration. Review how the proposed lms/settings.py, lms/test_settings.py, cms/settings.py, and cms/test_settings.py modules would replace YAML configuration while preserving the stated migration path for direct deployers and Tutor.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python
- Domain
- backend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100