[![Documentation Status](https://readthedocs.org/projects/sedrila/badge/?version=latest)](https://sedrila.readthedocs.io/en/latest/?badge=latest)
# `sedrila`: Tool infrastructure for building and running "self-driven lab" courses
A "self-driven lab" (SeDriLa) course is one where students select freely
a subset from a large set of tasks.
The tasks are described with sufficient detail that no guidance from an instructor
is needed most of the time.
sedrila is a command-line tool supporting course authors for authoring a course
and then course instructors and students for executing it.
Find the [documentation at readthedocs](https://sedrila.readthedocs.io).
## 1. Ideas for future versions
### 1.1 A currently needed refactoring: Target directory structure
The current layout of the source tree is wrong.
Currently, the `templates` and `baseresources` directories will end up
as top-level directories when the package is installed,
which means they will clash with any top-level modules of that name
anywhere in our dependencies.
We need to perform the following refactorings to arrive at a proper structure:
- `py` --> `sedrila`: This will be the top level directory that gets installed.
- `sedrila/sdrl/*` --> `sedrila/*`: We remove the now-intermediate namespace.
This implies joining the current `sdrl/tests` into `sedrila/tests`.
- `templates` --> `sedrila/templates`: The HTML templates simply become part of the
tree to be installed.
- `baseresources` --> `sedrila/baseresources`: Ditto.
These changes require a lot of changes of import statements.
For instance, the current module `base` will become `sedrila.base`
and `sdrl.course` will become `sedrila.course`.
The logic for computing `sedrila_libdir` in `courses.py` must be adapted.
`SedrilaArgParser.get_version()` must be adapted.
The files lists in `pyproject.toml` must be corrected.
### 1.2 `instructor`: Handling instructors' trees of student repos
- Process `SEDRILA_INSTRUCTOR_COURSE_URLS` as described in the instructor documentation.
- `sedrila instructor` should keep a JSON file `student_course_urls.json` that maps student usernames
to the course URL first seen for that student, because if a student ever changed
the URL in the `student.yaml`, prior signed commits of instructors might become
invalid semantically if the new course has a different set of tasks.
The map is added to when a `student.yaml` is first seen
and checked against at each later time.
Note that a student taking part a second time, with a fresh repo,
might require manual editing of that JSON file to remove that entry.
- Better yet, there could be an option `sedrial instructor --allow-repo2` that
performs that editing automatically
and also checks that the new repo contains no instructor-signed commits.
- Command `sedrila instructor --clean-up-repos-home`
to clean up instructor work directory trees-of-trees
by deleting all level-1 subtrees in which the `student.yaml`
has a `course_url` that is not mentioned in the
`SEDRILA_INSTRUCTOR_COURSE_URLS`environment variable.
This option should ask a safety question before starting to work.
- Add `sedrila instructor --http` which presents the local directory tree to localhost as follows:
- Show directory, each file is a hyperlink, including `..` (except in the starting directory)
- *.md files get rendered as Markdown
- *.txt files get shown verbatim
- *.py file contents are Markdown-rendered as a Python code block. Ditto for other languages.
## 2. Development process: TODO-handling during development
We use this convention for the development of `sedrila`.
It may also be helpful for course authors if the team is small enough.
If something is incomplete, add a TODO marker with a priorization digit and
add a short description of what needs to be done. Examples:
- `TODO 1: find proper formulation`
- `TODO 2: restructure to use ACME lib`
- `TODO 3: add automatic grammar correction`
Priorities:
- 1: to be completed soon (within a few days)
- 2: to be completed once the prio 1 things are done (within days or a few weeks)
- 3: to be completed at some later time (usually several weeks or more into the future,
because it is big) or never (because it is not-so-important: "nice-to-have features")
Then use the IDE global search to work through these layer-by-layer.
Demote items to a lower priority when they become stale or remove them.
Kick out prio 3 items when they become unlikely.
Raw data
{
"_id": null,
"home_page": "https://github.com/fubinf/sedrila",
"name": "sedrila",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.11",
"maintainer_email": null,
"keywords": "static site generator, learning management system",
"author": "Lutz Prechelt",
"author_email": "prechelt@inf.fu-berlin.de",
"download_url": "https://files.pythonhosted.org/packages/ed/51/d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9/sedrila-2.3.0.tar.gz",
"platform": null,
"description": "[![Documentation Status](https://readthedocs.org/projects/sedrila/badge/?version=latest)](https://sedrila.readthedocs.io/en/latest/?badge=latest)\n\n# `sedrila`: Tool infrastructure for building and running \"self-driven lab\" courses\n\nA \"self-driven lab\" (SeDriLa) course is one where students select freely \na subset from a large set of tasks.\nThe tasks are described with sufficient detail that no guidance from an instructor\nis needed most of the time.\n\nsedrila is a command-line tool supporting course authors for authoring a course\nand then course instructors and students for executing it.\n\nFind the [documentation at readthedocs](https://sedrila.readthedocs.io).\n\n\n## 1. Ideas for future versions\n\n\n### 1.1 A currently needed refactoring: Target directory structure\n\nThe current layout of the source tree is wrong.\nCurrently, the `templates` and `baseresources` directories will end up \nas top-level directories when the package is installed,\nwhich means they will clash with any top-level modules of that name\nanywhere in our dependencies.\n\nWe need to perform the following refactorings to arrive at a proper structure:\n\n- `py` --> `sedrila`: This will be the top level directory that gets installed.\n- `sedrila/sdrl/*` --> `sedrila/*`: We remove the now-intermediate namespace.\n This implies joining the current `sdrl/tests` into `sedrila/tests`.\n- `templates` --> `sedrila/templates`: The HTML templates simply become part of the\n tree to be installed.\n- `baseresources` --> `sedrila/baseresources`: Ditto.\n\nThese changes require a lot of changes of import statements.\nFor instance, the current module `base` will become `sedrila.base`\nand `sdrl.course` will become `sedrila.course`.\nThe logic for computing `sedrila_libdir` in `courses.py` must be adapted.\n`SedrilaArgParser.get_version()` must be adapted.\nThe files lists in `pyproject.toml` must be corrected.\n\n\n### 1.2 `instructor`: Handling instructors' trees of student repos\n\n- Process `SEDRILA_INSTRUCTOR_COURSE_URLS` as described in the instructor documentation.\n- `sedrila instructor` should keep a JSON file `student_course_urls.json` that maps student usernames\n to the course URL first seen for that student, because if a student ever changed\n the URL in the `student.yaml`, prior signed commits of instructors might become \n invalid semantically if the new course has a different set of tasks. \n The map is added to when a `student.yaml` is first seen\n and checked against at each later time. \n Note that a student taking part a second time, with a fresh repo,\n might require manual editing of that JSON file to remove that entry.\n- Better yet, there could be an option `sedrial instructor --allow-repo2` that \n performs that editing automatically\n and also checks that the new repo contains no instructor-signed commits.\n- Command `sedrila instructor --clean-up-repos-home`\n to clean up instructor work directory trees-of-trees\n by deleting all level-1 subtrees in which the `student.yaml`\n has a `course_url` that is not mentioned in the \n `SEDRILA_INSTRUCTOR_COURSE_URLS`environment variable.\n This option should ask a safety question before starting to work.\n- Add `sedrila instructor --http` which presents the local directory tree to localhost as follows:\n - Show directory, each file is a hyperlink, including `..` (except in the starting directory)\n - *.md files get rendered as Markdown\n - *.txt files get shown verbatim\n - *.py file contents are Markdown-rendered as a Python code block. Ditto for other languages.\n\n\n## 2. Development process: TODO-handling during development\n\nWe use this convention for the development of `sedrila`.\nIt may also be helpful for course authors if the team is small enough.\n\nIf something is incomplete, add a TODO marker with a priorization digit and\nadd a short description of what needs to be done. Examples:\n- `TODO 1: find proper formulation`\n- `TODO 2: restructure to use ACME lib`\n- `TODO 3: add automatic grammar correction`\n\nPriorities:\n- 1: to be completed soon (within a few days)\n- 2: to be completed once the prio 1 things are done (within days or a few weeks)\n- 3: to be completed at some later time (usually several weeks or more into the future,\n because it is big) or never (because it is not-so-important: \"nice-to-have features\")\n\nThen use the IDE global search to work through these layer-by-layer.\nDemote items to a lower priority when they become stale or remove them.\nKick out prio 3 items when they become unlikely.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Tool infrastructure for building and running \"self-driven lab\" courses",
"version": "2.3.0",
"project_urls": {
"Homepage": "https://github.com/fubinf/sedrila",
"Repository": "https://github.com/fubinf/sedrila"
},
"split_keywords": [
"static site generator",
" learning management system"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "5af631522d777d01dec58e08aec3fccff2a505eeb36d921bccdbf8865162c6fb",
"md5": "cf411bb0afe896c74cd1f8658cfde08a",
"sha256": "7433bcc8c06512772ffcf209e82b18defb051d51784bd60baa72b563c33f132e"
},
"downloads": -1,
"filename": "sedrila-2.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cf411bb0afe896c74cd1f8658cfde08a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.11",
"size": 79754,
"upload_time": "2024-10-10T11:31:14",
"upload_time_iso_8601": "2024-10-10T11:31:14.789294Z",
"url": "https://files.pythonhosted.org/packages/5a/f6/31522d777d01dec58e08aec3fccff2a505eeb36d921bccdbf8865162c6fb/sedrila-2.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ed51d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9",
"md5": "b156aebefefb703eb6932c120cddb896",
"sha256": "e2ad010dde7f191f7607e0c902b11f000d89ebe385366f54a847a3216298d57c"
},
"downloads": -1,
"filename": "sedrila-2.3.0.tar.gz",
"has_sig": false,
"md5_digest": "b156aebefefb703eb6932c120cddb896",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.11",
"size": 67292,
"upload_time": "2024-10-10T11:31:16",
"upload_time_iso_8601": "2024-10-10T11:31:16.303162Z",
"url": "https://files.pythonhosted.org/packages/ed/51/d5501e51a7a97e8a73f7a8b7cc35ec2d0ecf0fdbb82245fc59d5cb2aadd9/sedrila-2.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-10 11:31:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "fubinf",
"github_project": "sedrila",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "sedrila"
}