Hello,
For a class I am helping to teach, I am trying to set up the latest nbgrader from pip (0.2.1) in the latest jupyterhub from pip (0.2.0) using Ipython 4.0.0 against python 3.4.0 on an ubuntu 14.04.3 LTS machine.
We would like to have multiple users set up as instructors/graders, able to work in parallel (or serially but trading off, if parallel doesn't really work).
I have reading the nbgrader getthedocs doc trying to figure out how this all should work. While I think I am starting to understand, I must admit to still being confused. So, while I am moving different pieces around and seeing what works, I figured I'd also post to this forum and see if I had missed some doc, or if there are generally accepted ways of working with this.
At the highest level, if there is documentation that I've missed that pull this all together in more detail (how to set up the folders and files for nbgrader, general usage for grader and student, and then what a student and a grader need in their home directories to get this all to work), I apologize for not finding it (I promise I looked). Please point me at it. If not, once I understand, I'd be happy to help with documentation if you think that would be useful.
What I have so far:
- a single directory where jupyterhub configuration and database live, and jupyterhub up and running.
- nbgrader installed, nbgrader's extensions installed and seeming to work just fine (the Assignment toolbar works, and the Assignment tab shows in Jupyter).
- a directory "nbgrader/courses/example" that I think needs to contain the nbgrader hierarchy, if that is how this works, the nbgrader "gradebook.db" database, and any other related files, so they can be shared among multiple instructors/graders (currently inside of the jupyterhub directory, but could be moved as needed).
- This includes a clone into "source" of a github repository structured such that I think it matches the structure expected of "source", for versioned collaboration on the assignments.
- a set of nbgrader configuration properties for formgrade that are in a file named nbgrader_config.py, currently sitting in the jupyterhub folder, but incomplete.
My questions:
- general
- is there a standard centralized location for a system-level nbgrader_config.py configuration that would be every user's default, or does nbgrader just look for one in the directory where it is run, and you then have to adjust that based on role and needs of individual users?
- is there a standard location for the course folder that contains the nbgrader.db database, the nbgrader file system hierarchy, etc.?
- If you want multiple graders/instructors able to work together on assignments, is there a recommended location for or configuration of the nbgrader course folder such that all users with role grader can be configured to interact with a certain course folder, or do you just have to have a place where graders/instructors all have access and can go and run the nbgrader command? Would they need this sym-linked into their home directory for formgrade?
- am I courting disaster with multiple graders/instructors?
- for users (graders/instructors and students):
- What files or folders for nbgrader need to be in a given user's home directory? Sounds like they need an nbgrader_config.py. Anything else?
- What does nbgrader automatically create for users?
- Is any of this difference between the requirements for graders/instructors and students? If each has their own nbgrader_config.py, and there isn't a system-wide default, then they'd probably have different contents?
- exchange directory
- what is the default exchange directory?
- can this be the same location as where the lesson "source" folder is?
- is there a centralized place where you can specify this for all users?
- formgrade app
- if this is all configured per-user, can you have more than one user in formgrade at once?
More specific questions from documentation I've looked over:
- http://nbgrader.readthedocs.org/en/stable/user_guide/01_philosophy.html
- concept of nbgrader file system structure and hierarchy, but no indication I see of where that needs to live and how you reference it across multiple students or multiple instructors.
- http://nbgrader.readthedocs.org/en/stable/user_guide/03_generating_assignments.html
- mention of needing a "gradebook.db" database, but not specific about where one would put it (implies it is in course folder at same level as "source" folder, I think).
- code to add assignments to database, and how to then release an assignment, and implication, I believe, that an instructor should run this code as well as the "nbgrader" command in the directory where the "source" directory lives (and it looks like that is the expectation throughout, but I don't think I've seen that explicitly stated).
- http://nbgrader.readthedocs.org/en/stable/user_guide/11_jupyterhub_config.html
- here, it tells you how to configure an nbgrader_config.py file for formgrade app, but I don't see where one is supposed to put it or how one tells nbgrader where it is. Makes more sense if each user gets one, or at least you need one in the same folder where you run nbgrader, but doesn't say that.
- And, if multiple graders, can multiple users log in to an instance of formgrade? It takes up a port, so if not, per user, would you need separate ports for different instructors, or to coordinate so only one person using at a time?
- c.HubAuth.notebook_url_prefix - the notes on this imply that it will be relative to the current user's home directory - is this to guide the formgrade app to the course folder?
- So does this imply that each grader who might use this app will need at least a symbolic link to the course folder in their home folder?
- Could I make a standard nbgrader_config.py that I put in the course folder that anyone with access could use to launch the formgrader?
- http://nbgrader.readthedocs.org/en/stable/user_guide/07_releasing_assignments.html
- here it talks about more nbgrader_config.py that will get automatically loaded when we run nbgrader, but it contains different information than is in the nbgrader_config.py in 11_jupyterhub_config.
- it also doesn't say explicitly where that file needs to live, or where you are running the nbgrader command from (from the directory that holds the nbgrader file system hierarchy?).
- Sounds like it assumes a single instructor, also?
- http://nbgrader.readthedocs.org/en/stable/user_guide/08_fetching_assignments.html
- what is the default exchange directory?
- looks like each student will need an nbgrader_config.py file - will it just live in their home directory? Can you change it so that they at least are in a child directory, so they don't clutter the home directory?
- how do the commands a student runs know where the database is?
- http://nbgrader.readthedocs.org/en/stable/user_guide/10_collecting_assignments.html
- how would an instructor/grader's nbgrader_config.py file need to be configured for this to work? Would they need the same explicit definition of the exchange directory, and then need to run the nbgrader command in the course directory?
Any help will be greatly appreciated.
Thanks,
Jonathan Morgan