Submitting problems to the OPL
One of WeBWorK's most attractive features is the National Problem Library, a collection of over 20,000 problem files contributed to the project by faculty from a wide variety academic institutions. The procedures outlined here are intended to encourage others to contribute problems to the NPL, but also to maintain high standards for the problems contributed.
Who can contribute to the NPL?
Anybody can contribute to the NPL. However, generally speaking, prospective contributors should be familiar with WeBWorK and have a reasonably good understanding of the PG language and the MathObjects framework. Contributors are typically faculty at academic institutions which use WeBWorK, or under the direction of such faculty. At a minimum, prospective contributors must be registered users on this wiki; ideally, prospective contributors will be active members of the WeBWorK community or have been in the past. The characteristics listed here aren't intended to exclude anyone from contributing, but to give an idea of the background of the contributors who have collectively built the NPL into the valuable resource it has become.
If you have already written a collection of high-quality WeBWorK problems and tagged them properly, we will gladly consider the collection for inclusion in the NPL. A collection of problems can be submitted all at once, when the collection is complete, or the collection can be built over time in a dedicated subdirectory of the WeBWorK NPL Subversion respository (a so-called "branch" of the repository). There are many advantages to this second approach. One particular advantage is that your problem collection can be reviewed and tested as problems are added. This incremental review is generally more efficient and more thorough than is possible for collections contributed all at once. As a result, problem collections built through a Subversion branch can be added to the main development trunk of the NPL soon after they are complete, whereas there may be a substantial delay for problem collections contributed all at once.
The mechanics of contributing to the NPL
If you have a completed problem collection to contribute, simply contact the WeBWorK developers to let them know and they will work with you to review your collection and prepare it for inclusion in the NPL. You can contact the WeBWorK developers by email or by posting in the Moodle forums. (The forums are probably the best place to do this.)
If you wish to build a problem collection in a branch of the NPL Subversion repository, you will also need to contact the WeBWorK developers to request this. Again, this can be done by email or in the forums. (Again, the forums are the preferred...uh...forum). When your request is approved, you will be given a branch of the npl repository at http://svn.webwork.maa.org/npl. If your branch is called my_branch, then it will be located at
http://svn.webwork.maa.org/npl/branches/my_branch
Initially, you will have commit access only to your branch of the npl repository. This is intended to give new contributors space to learn how to use SVN without worrying that they might somehow ruin some established part of the NPL or even the WeBWorK system code. Since you can only write changes to your branch, you can't ruin anything outside of that branch. And, you can't even really ruin anything inside your branch either because any change you make can be reverted and SVN stores the entire development history in its database. (For example, right now you could, if you wanted, get a copy of WeBWorK exactly as it was on March 3, 2005 - or any arbitrary date since WeBWorK started using version control).
Now, generally, branches are considered temporary. When your problem collection is complete and ready to be formally contributed to the NPL, your branch will be merged into the trunk of the npl repository and the branch will be deleted. You will then be given authorization to contribute your work to the trunk of the npl repository. If you later start to do development on the WeBWorK system code, you can then also be given commit access to the system repository.
First Steps
Once your branch is created, you will want to set it up so that it is easy to merge back into the NPL trunk.
HERE: To get started, first add a sub-directory to the NationalProblemLibrary directory on the server to hold the problems you create. We ask that your subdirectory be named after your institution. Have a look at the current subdirectories of the NationalProblemLibrary directory to get an idea of an appropriate name for your subdirectory. Supposing you decide on my_univ, then add it as follows:
svn mkdir http://svn.webwork.maa.org/npl/branches/my_branch/NationalProblemLibrary/my_univ \ -m "Creating initial my_univ directory" --username <username> --password <password>
Whenever you issue a subversion command which results in writing to the repository you must enter a log message and provide your credentials. Ordinarily, you will not use such commands to operate directly on urls as we just did. We did so in this case so that you may now decide either to checkout the NPL from your branch along with your new directories or just check out your new directory. You may wish to also checkout all or part of the NPL to help with fixing bugs.
To check out only your new directory do
svn co http://svn.webwork.maa.org/npl/branches/my_branch/NationalProblemLibrary/my_univ/
This will create a new directory my_univ in your current working directory. You may append a path to that command to control the location of your checkout. If you have already written problems that you would like to add to your branch, you can now do so by changing to the my_univ directory (or wherever your branch was checked out to) and adding those problem files with the command:
svn add /path/to/problems
Then
svn ci --m "Log message"
will upload your problem files and add them to your branch (with the existing directory structure, but under the my_univ directory).