WeBWorK Main Forum

Common Local Problems

Common Local Problems

by Marie-Claude Bonneau -
Number of replies: 4
We have created local problems and each WeBWorK course has this set of local problems but as soon as one of the problems is modified in a given WeBWorK course (e.g. Cal I Teacher A), the modifications do not appear in another WeBWorK course (e.g. Cal I Teacher B). What is the best way of sharing, and modifying, local problems?
Thank you.
In reply to Marie-Claude Bonneau

Re: Common Local Problems

by Andras Balogh -
I am not sure if it is the "best way" but we moved some of our local problem collections under the main library. It can be done through the command line on the server:
  1. moved the directory with the local problems under /opt/webwork/libraries/, for example /opt/webwork/libraries/localCalculus
  2. created a link to this directory from all the existing course templates directory, and also from the model course /opt/webwork/webwork2/courses.dist/modelCourse/templates/
Optionally an entry could be made in localOverrides.conf so that people can see this collection in the library browser.

This way the local library is accessible from all courses and they can be modified only from the command line (which makes it more secure).

Maybe a link could be created to the local problems of the template course instead of moving things under the central library, but I would consider that approach less secure, since it is too easy to modify problems in the template course and you probably want to push corrections and new questions only after carefully testing them.

In reply to Andras Balogh

Re: Common Local Problems

by Alex Jordan -
We do as Andras outlines.

Then there is the issue that some faculty want to make edits to the common library and/or add new problems to it. But they do not have command line access to the server and to a folder like /opt/webwork/libraries/localCalculus (and in many cases wouldn't even be comfortable with that). And it would be a hassle/burden for them to just send their work to someone who does have access.

So how to let them do that?

First, we would make /opt/webwork/libraries/myschool a git repository, and put a folder like "Calculus/" inside it. This is what would be linked from each course and made visible in the library browser as Andras outlined.

Then for each such instructor, they get their own private development WeBWorK course. In that course's templates/local/ folder, there is a clone of the myschool repo.

In their development courses, faculty edit away in templates/local/myschool/, affecting nothing but their development shell. When they want to actually contribute their work to the central /opt/webwork/libraries/myschool library, they send someone with command line access a message. That person can use git to compare so-and-so's repo and edits to the master repo at /opt/webwork/libraries/myschool, and then merge them if things look good. Then also push the new changes out to everyone else's development course repositories.

For our setup, I've scripted the sequence of git commands to do all this.
In reply to Alex Jordan

Re: Common Local Problems

by Marie-Claude Bonneau -
Thank you both for your responses. I was hoping for a method which did not involve me accessing the server... but will give a try to the method proposed.
Thanks again.
In reply to Marie-Claude Bonneau

Re: Common Local Problems

by Alex Jordan -
Do you want to be in a situation where one instructor can modify a problem and it immediately affects the problem for students in other courses? At least three bad things might happen.
  1. The instructor could accidentally do something bad to the problem, like changing it in a way such that it no longer compiles for some random seeds.
  2. The instructor might make a good change to the problem's code, but it's a change that makes the same random seed now make a different version of the problem. A student who was working to solve "2+5" returns to the screen, and now their problem expects "7+3". Or something like that.
  3. The instructor makes a change that they perceive to be good, but it affects the pedagogy in some way that another instructor objects to. For example an instructor was happy that the problem asks you to solve a quadratic equation and does not provide the quadratic formula. Then another instructor changes the problem so it displays the quadratic formula. The first instructor is upset that their students don't have to memorize the formula now. Or something like that.
For these and other reasons, it is good if there is some sort of approval process before any edits go through that affect the core library. And an approval process like that will need to be managed from the server side.