Friday, October 19, 2012

 WeBWorK::Fitchburg code camp:  

October 12 through October 14, 2012

The WeBWorK::Fitchburg code camp took place at Fitchburg State University in Fitchburg, MA.  This was a short code camp held last weekend from noon Friday, October 12 through Sunday, October 14, 2012.  In just two days we were able to make substantial progress on several fronts.  In particular there was progress on a new homework sets editor3 and some front page changes is stored for the time being in Mike Gage's github repo.

The CSS for some of the pages, particularly the front page,  needs some work to make it presentable before we can move it to the github repo at openwebwork and create a demonstration version at  Anyone with some spare time and CSS skills is welcome to help out. Having a calendar view of assignments is particularly exciting.

Saturday, July 7, 2012

Internationalization of WeBWorK -- A Call for Help

First  a short news item:  Those not in the US have long remarked on the confusion caused by due dates such as:   06/07/2012   for their students.  Is that the 7th of June or the 6th of July that the homework is due?   

Danny Glin from the University of Calgary (and one of the participants at WeBWorK::Rochester::2012 code camp) has come to the rescue and created the ability to customize the format for dates for your site or for your course.

The customization takes place in the conf/ localOverrides.conf or if you want to customize only one course  the course.conf file.  The new software is available in the webwork repository at  

Thanks, Danny.

This fix is currently part of the 2.5.1 beta version of WeBWorK which will be issued as a stable release some time in late 2012.  It is already pretty stable and is being used successfully at many sites this summer.  Eventually we'll make it possible to choose common time formats from the course administration page, but we'll take this one step at a time.

And this brings me to the larger issue of this post.

WeBWorK is going international.  We already have much of the WeBWorK interface localized so that commands appear in any of several languages such as French, Spanish, Turkish and English.  (Localization is software-speak for presenting the user interface in the local language, with the local timezones and the local manner of expressing dates, currencies and so forth.)  

The project is far from  completed in these languages (if you switch to languages other than English on the course configuration page you will still notice that some of the buttons and links still appear in English) but there has been significant progress.  Much of this progress is thanks to the initial work by Ben Walter and his colleagues at the Middle East Technical University in Northern Cyprus. Since then Grant He with some help from me has continued to markup large parts of the current code base
so that the "strings" can be individually translated and presented in any language.  Those using old versions of WeBWorK can see the internationalization effect for themselves by using the demo courses at, (maa102, etc) and using profa for login and profa for the password.  

To finish this task and change the internationalization of WeBWorK from its current proof-of-concept stage to a finished and polished product  will take a focused and sustained effort.  The initial burst of progress came from massive and enthusiastic effort from a few people, but to  make sure that every phrase has been marked for translation and that every translation has been checked for colloquial accuracy will require more organization.

This is what I think will be required:  (1) We will need people to volunteer to work to translate phrases from English to their native language.  (2) We will need one or two people who are familiar (or willing to become familiar )  with the perl language who will continue to mark up old (and sometimes new code) to make sure that all strings, including commands, buttons, warning strings, directions and so forth are properly marked up so that the strings can be sent to the translators.

 (3) Most importantly we'll need an Internationalization Coordinator, one person or two people working together, who will  be the central organizers for localization.  The Internationalization Coordinator will recruit translators, see that they have up-to-date lists of strings to be translated, (bug them until they get around to translating them) and then place the translated strings into the WeBWorK releases so that new languages or upgraded translations for old languages are available for all users of WeBWorK.

 Volunteers interested in helping WeBWorK thrive and grow internationally by serving for a term as the Internationalization Coordinator should contact Mike Gage ( or  Jason Aubrey (  The Internationalization Coordinator has duties similar in many ways to that of a a journal editor, although probably not as time consuming.

While the central organizing job does not involve a lot of time (it's mostly about making it possible for others to do work) it does need to be done on a steady and sustained basis.  For example when new translations come in they need to be promptly placed where they can be downloaded to update active sites. This is both for the sake of WeBWorK students and to encourage the translator to review their work and make corrections by giving them rapid feedback.   I've been fulfilling this role to some extent, but while a lot might get done over one  short period other WeBWorK issues will distract me, submissions will pile up and the whole translation process slows down. This job needs a person who can take it on as their mission, make it the focus of their attention for a year or so and then pass it on to someone else.

Preliminary instructions for the translator job are at  Translating is a task that many people can contribute to in their spare time with the Internationalization Coordinator keeping track of what is
left to be done.  The best software I've found so far for this job is the open source Poedit java applet described on the wiki page above.

Marking up the code using the CPAN  Localization::Maketext::Simple package is a slightly more technical job that can be done well by undergraduates with some supervision.  Preliminary instructions about using the CPAN module can be found linked to Those writing new interface code for WeBWorK should also look at this page and include the "maketext()" markups as they write the new code in order to ease the work load of the code mark up crew.

There is general information on the localization process on the wiki at

Writing or translating homework problems into other languages is a separate project which is  closely tied to the new Open Problem Library project.  We currently know of collections of problems in French, Spanish and Turkish that we hope to include in the OPL.  As the number of problems, and the number of languages increases this project will undoubtedly require its own coordinator.  Some have already remarked that it will be interesting to compare calculus homework problems across countries since even calculus problems will probably have cultural differences as well as linguistic ones.

-- Mike

Friday, July 6, 2012

WeBWorK Open Problem Library 3.0

As Djun Kim mentions in his post the National Problem Library, having grown beyond one language and one country, is now the WeBWorK Open Problem Library (or OPL for short).

Adding problems in new languages,  allowing publishers to include their problems in the library and improving the search facilities so that you can find the type of problem you want faster than you can write it yourself are going to required a dedicated effort.

Schemes need to be devised for attaching metadata to the problems (automatically when possible) and software for weeding out near duplicates needs to be developed.  In addition we need procedures for new submissions that both makes it easier to submit your favorite problem or your fix of a problem with errors but also allow for a system of checks and balances that guarantees that the submitted problems meet certain standards.

Since we will probably never all agree on what makes a "high quality" problem we also need some kind of rating mechanism that will help instructors find the problems that fit their course and teaching style.

It's a tall order.

Fortunately a few members of the WeBWorK community have volunteered to take the lead in devising OPL 3.0 which will meet all of these criteria.  They are Djun Kim at University of British Columbia; John Jones, who was involved in creating the original NPL, at Arizona State University; Dick Lane at University of Montana, George Jennings at California State University at Domincan Hills and Tyler Dzuba, a science librarian at the University of Rochester with experience in metadata and digital library design.  Anyone else interested in working on the project should contact one of these leaders.

Some of the early discussion is already taking place on the webwork-devel mailing list
( ).  As consensus emerges summaries will be posted on the wiki in the section for developers for further comments.  (A search of OPL should bring up most of the relevant information.)

Thanks very much Djun, John, Dick, George and Tyler for taking the lead in this important project.
Improving the usefulness of the OPL is one of the most requested features that has come up in our surveys of WeBWorK users.

The library group is just the first team arising from our intent to bring focus to the various active projects being developed within the WeBWorK community:

My next post will concern our attempt to bring focus
to the "internationalization" or as it's called in software speak "localization" effort for WeBWorK.  This involves making the WeBWorK application itself work in a many languages in a convenient and sustainable way and the solicitation of WeBWorK problems written in many languages.

-- Mike

Monday, June 18, 2012

Summary for WeBWorK::Rochester::2012

Summary for WeBWorK::Rochester::2012   

The WeBWorK::Rochester code camp, focused on user interface improvements, was held at Rochester from June 6th through June 9th, 2012.  It was a great success.  This was the first working gathering of WeBWorK developers since our summer 2007 meeting at AIM (American Institute of Mathematics); we hope it will kick start a spate of development over the summer on the look and feel of WeBWorK.  In conjunction with PREP courses last summer and two additional code camps this summer, we hope to flatten the learning curve significantly for new users of WeBWorK and to improve the overall usability of the system.

We have a lot to report, including significant progress in WeBWorK interface design, new and developing infrastructure procedures for supporting WeBWorK users and developers, discussion about the social structure of the openWeBWorK development community, and a report on our collaboration with the Teaching Open Source organization through their POSSE workshop at RIT.  

Oh yes -- and since WeBWorK now has contributions in more than one language and from several countries -- we changed the name of the National Problem Library to the WeBWorK Open Problem Library (WOPL) or Open Problem Library for short.  More on that later -- it was quite a discussion!

If you are really impatient, you can stop reading and go explore the new stuff, bugs and all, at (or maa102, etc). Sign in as profa and use profa as the password.  Use your iPad!!!! -- it’s not pretty yet but it works!!!

Below we’ll first describe the daily progression of the code camp for those who weren’t there, and especially for those who haven’t participated in previous code camps.  They are intense experiences.  A lot can get done; it’s hard work, but it’s also fun and satisfying.  

We’d like to encourage others to plan and hold local code camps to work on aspects of WeBWorK that they would like to develop.  No permission is needed from any central WeBWorK authorities, but those of us who have been doing this for a while will be glad to help out in any way we can.  Let us know.

At the end of this note we’ll list specific accomplishments (deliverables :-) ) for the week.

As a last item before describing our meeting, here is the list of WeBWorK events scheduled to  take place this summer and fall.  We hope to see you at one or more of them. Keep track of the events section in the wiki ( for new additions.

  • WeBWorK::Clinton - June 20-22, 2012 (John Travis)
  • WeBWorK Consultants Workshop - August 1, 2012 (Arnie Pizer)
  • Mathfest Exhibit Presentations - August 2-4, 2012 (John Travis and Jason Aubrey)
  • WeBWorK::Winona - August 5-8, 2012 (Jason Aubrey and John Travis)
  • MAA JMM Mini Course - January 8-10, 2013 (Joint Math Meeting in San Diego ) (Jason Aubrey and John Travis)

Monday, June 4, 2012

First post from the POSSE 2012 meeting at RIT

WebWork events - 2012-2013

WebWork::Rochester - June 6-10, 2012 (Mike Gage)
WebWork::Clinton - June 20-22, 2012 (John Travis)
Mathfest Exhibit Presentations - August 2-4, 2012 (John Travis and Jason Aubrey)
WebWork Consutant’s Workshop - August 1, 2012 (Arnie Pizer)
WebWork::Winona - August 5-8, 2012 (Jason Aubrey and John Travis)
MAA JMM Mini Course - January 8-10, 2013 (Jason Aubrey and John Travis)

We will be starting the WeBWorK::Rochester code camp on Wednesday.
We will be cooperating on some projects with the POSSE workshop.

The IRC channel is #webwork on
The homepage/wiki for WeBWorK is
The stable source for WeBWorK is at (projects webwork2 and pg)
Bleeding edge code will be hosted at (projects webwork2 and pg) and at other developers sites on github.

Stay tuned for more information as the WeBWorK::Rochester code camp progresses.

For those interested in seeing the latest version of WeBWorK in action you can view the courses
at, maa102, maa103, etc.

Use profa for login and profa for password to see the instructor view.

Use jsmith/jsmith for the student view.

check out the new "game badges" designed by Geoff Goehle. (see the Achievements and AchievementsEditor links)

For a recent history of WeBWorK development go to and type in mgage