Breaking Lesson Manager Project
On August 1st I talk with Greg Wilson about the Lesson Manager. At this post I will try to sumarize what I learn from our conversation.
The most important lesson learned is breaking the project into small parts:
The objective of this first phase is build an prototype that people can use. For example one student could run
$ lesson-manager import exploratory-computing-with-python
and get all the notebooks from Mark Bakker or run
$ lesson-manager import swc-git
and get Software Carpentry’s Git and Shell lessons.
Why use lesson-manager instead of googling for the lesson? Because having the lessons locally enable students to interact/explore/hack the lessons (and provide it at one web page increase instructor’s work).
Why use IPython Notebook? (1) Because it allow instructors to include code samples or interactive content, (2) many people are already using it and (3) is possible to use it not only for Python but also for Sage, Julia, R, ...
For students, version control isn’t very important since they “only care” of major release of the lessons. But for instructors this is a very important feature since they already use version control on all their works.
Unfortunately isn’t clear yet the best approach (submodule vs repo vs ...) to support version control.
For groups, organizations and some people ensure that the lessons have the same feel and look is important. This can only be achieve by some standardization.
Instead of make that one lesson depends on another specific lesson, e.g. Software Carpentry’s Git lesson depends on Software Carpentry’s Shell lesson, will be nice that lessons depends on keywords/topics/... This isn’t easy to do and also need some standardization.
If the IPython Notebook use one Python package the Lesson Manager must install this package too. Find the packages being used isn’t difficult but the use of virtual environments and non-Python dependencies is an challenge.
Data is all important.
Although IPython Notebook is AWESOME some people could want to write their lessons in another format (e.g. MATLAB) or the only format available is PDF (for scientific papers).
Once lessons depends on keywords/topics/... will be easy to build a map to visualize the dependencies of some lessons like Metacademy.
Handle CSV or SQLite files with a few megabytes is easy. When you want using database of a few gigabytes this start to be a problem.