Contributing
Contributions are very welcome; please contact us by email or by filing an issue in our repository. All contributors must abide by our Code of Conduct.
Setup and Operation
- Install uv
- Create a virtual environment by running
uv venvin the root directory - Activate it by running
source .venv/bin/activatein your shell - Install dependencies by running
uv pip install -r pyproject.toml - This project uses McCole to generate HTML and check the project's structure
- Run
makeon its own to see a list of common commands
| make task | effect |
|---|---|
| clean | clean up |
| commands | show available commands (default) |
| lint | check code and project |
| render | convert to HTML |
| serve | serve generated HTML |
| stats | basic site statistics |
Structure
- Lessons are in
nn_slugdirectoriesnnis two-digit sequence numberslugis short mnemonic
- Each lesson must have:
index.md: lesson contentMakefile: re-run tasks- Should
include ../common.mkto get common tasks
- Should
- Symbolic links
data,migrations, andstaticto the./data,./migrations, and./staticdirectories in the project root - Lessons may have a
slides.mdfile containing slides - Diagrams should be SVG files created with draw.io
bibliography.mdhas the bibliography as a definition list- Citation keys have IDs for linking
- Use an inline HTML link
b:keyin files to create links
glossary.mdhas the glossary as definition list- Reference keys have IDs for linking
- Use an inline HTML link
g:keyin files to create links
- The
staticdirectory contains static filespage.css: CSS for website pagesslides.cssandslides.js: simple HTML slides- Other CSS and JavaScript files used in lessons
- The
templatesdirectory contains Jinja templates used to generate HTMLpage.html: template for website pagesslides.html: template for simple HTML slides
Please use Conventional Commits style for pull requests
by using change:, feature:, fix:, or task: as the first word
in the title of the commit message.
You may also use publish: if the PR just rebuilds the HTML version of the lesson.
FAQ
- Do you need any help?
- Yes—please see the issues in our repository.
- What sort of feedback would be useful?
- Everything is welcome, from pointing out mistakes in the code to suggestions for better explanations.
- Can I add a new section?
- Absolutely, but please reach out before doing so.
- Why is this material free to read?
- Because if we all give a little, we all get a lot.