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.