Skip to content

Blackboard to Moodle migration library

This library provides means to read Blackboard course archive and write moodle course backup, as well as translation utilities between these two formats.

This library is part of a broader project which goal is to provide an easier way to migrate Blackboard course to Moodle course.

Tip

For more details about each module go into its directory and start with the readme. Documentation is available and deployed on https://bb2mdl.gitlabpages.uliege.be/bb2mdl/.

Modules

Blackboard archive

bb_archive provides Blackboard dataclasses that can be filled with a Blackboard course archive.

Translator

translator provides various configurable translator capable of converting from the Blackboard dataclasses to the Moodle representation.

Moodle archive

mdl_archive provides Moodle dataclasses and is able to output the XML in the Moodle backup format.

Orchestrator

orchestrator provides interfaces to manage the end-to-end process of transforming a Blackboard course to a moodle course archive.

Hacking

Dev environment

Clone the repository including submodules --recurse-submodules, if you have already cloned it, you can run instead:

git submodules update --init bb_archive/tests/archives

You can set up your development environment with poetry which has great doc and is easy to use:

poetry install

Tu run commands like black or pytest you can then use the run command and if you want to activate the environment use shell:

poetry run pytest translator/
poetry shell

Coding style

We are using black to enforce coding style. And a pre-commit is available, just install it with:

pre-commit install

Documentation

To generate the documentation locally, you can build it with mkdocs.

mkdocs serve

Tests

Pytest is used for unit-testing the various modules. The translator use it in combination of hypothesis to generate random data and test translation invariants independently of data.

Your editor is probably already compatible with pytest, however with the command line you can run:

pytest bb_archive/ mdl_archive/ translator/
pytest --hypothesis-explain translator/ # (1)
  1. --hypothesis-explain to explain why a hypothesis tests is failing, it will display a minimal failing example.
Back to top