Friday, August 12, 2011

Questions on using open source in classrooms:

1. How does "the open source way" apply to your course work?

Developing open source software doesn't seem to apply directly to mathematics
courses, however at U. of Rochester math department we use WeBWorK extensively for homework.
I will be teaching numerical analysis (really numerical
methods for mathematical engineering)  next semester and will probably use Sage for
at least a few exercises.  There are a few other professors using Sage in their research in number
theory so contributing to this open source project might spread sideways in
the math department.

2. How will you incorporate what you have learned here in your course?

What I've learned about building packages will be used in the near future to make the server component
of WeBWorK much easier to setup.  This has been a barrier to using WeBWorK
and some universities and is likely to be a bigger barrier when encouraging its use
in high schools.

Much of WeBWorK has been developed with the aid of undergraduate programmers and that
will continue.  This won't involve class work per se but it will be part of a few undergraduates' experience.

3. Any feedback/comments on POSSE itself you would like to add?

As one of the creators of the open source on line homework system WeBWorK
I was interested in finding how other open source communities work.  This POSSE
has been very useful in that regard.  I think the CommArch exercise is very useful and enlightening 
and will probably try to work through it for other math open source projects -- moodle, sage,

Being able to meet people involved in other open source projects at this POSSE and at the
sagedays31 earlier this summer has been a very valuable experience.  It's very interesting
to see the diversity in open source communities.

Michael Gage
Professor of Mathematics
Department of Mathematics
University of Rochester

Thursday, August 11, 2011

Succeeded in creating a build tree for a WeBWorK rpm package on fedora.  The build tree compiles now  and produces an rpm package.  Testing the package to insure that it does what it's supposed to will have to wait until week after next.  The package is also not yet feature complete.  Adding a configuration script to the .spec file should not be that hard however since it is essentially a .bash script.

Thanks to the rest of the guys helping out with webwork and to Chris Tyler in particular for guiding us through the build sequence.

Wednesday, August 10, 2011

Creating an RPM for WeBWorK

Chris Tyler gave us the outline of the procedure for creating an RPM for fedora (and relatives). Similar procedures can probably be followed for ubunutu.  How does the creation of .dmg files for MacOS compare?

Here is the outline:

  • (1) run rpmdev-setuptree to create ~/rpmbuild and subdirectories
  • (2) place the source code in ~/rpmbuild/SOURCES
  • (3) cd ~/rpmbuild/SPECS
  • (4) create a skeleton spec file: rpmdev-newspec NAMEOFPACKAGE
  • (5) edit the spec file as appropriate
  • (6) build the package: rpmbuild -ba *.spec
    followed by links to some tutorials:

  • ------------------------------------------------
    Since we have tarballs on sourceforge  grabbing the WeBWorK files is fairly straightforward.  Because we have been training the WeBWorK community to use svn in order to obtain just-in-time bug fixes, the tarballs have fallen a bit behind the current code base and our rpm will be a bit out of date.  This should not be too bad however since using svn after installing the package will update the code. (It will not however load any new CPAN modules that are required.)

    The biggest problem was finding corresponding names for the CPAN modules that are required by WeBWorK.  There is a reasonably up-to-date list in webwork2/bin/ which is used to troubleshoot new webwork installations. 
    Replacing :: by -  and  prepending   perl- to the cpan package name worked in most cases to find the fedora package.  Documentation is at
    The naming scheme will be different in other distros.  Is there a tool for translating package names from one distro to another?

    We'll try building this later today on the england.proximity machine.  Preliminary attempts were blocked with errors which we'll try to work through.  One downside to this current procedure seems to be that you'll need half a dozen computers and operating systems to create packages for distribution.  Presumably this could be done on a virtual machine.

    Downloading and compiling firefox.

    Building Firefox from the nightly build.

    This is a slightly scary operation, but it turned out alright (I think). Following instructions
    I first grabbed the libidl autoconf213 yasm tools using macports. This project stalled because of conflicts with an existing installed item and I had to deactivate it. (/usr/local/bin/prove -- a command line tool for running tests agains Test::Harness).

    The scary part is that it rebuilt perl 5.8 and then built perl 5.12 as well. I depend on the perl defined in /opt/local/bin to run the webwork server running on my laptop! I had to stop that server while I was compiling (it caused another conflict similar to the one for prove) but after firefox was built the webwork server started up again. (whew). The build took about an hour and produced

    Tuesday, August 9, 2011

    Analysis of Sage Project.   Notes:

    We started at project.  We found that they have an IRC at  #sagemath

    Main project page:

    One line description: Sage is a free open-source mathematics software system licensed under the GPL. It combines the power of many existing open-source packages into a common Python-based interface.
    (open source maple or mathematica).

    History of Sage: see History of SAGE Mathematical package in Erik Likness' blog for details.
    William Stein started the project and he has written a short history.

    Sage trac:

    Sage wiki:

    An interesting link on Sage's community page: Promoting Open Source Through Social Media for acculturating new developers. There is also a link to an article describing the massive collaboration among mathematicians to characterize the structure of the E_8 Lie group.  This collaborative effort was sponsored by AIM(American Institute of Math) and is somewhat unusual in the field.

    Mecurial repository:   and the trac view of this is at

    Sage awards prizes for development within their community:  The Spies Sage Development Prize is an annual award worth $500 that will be given to a person who makes major and inspiring contributions to the development of the Sage Mathematical Software System. The goal of the prize is to acknowledge the recipient and to encourage him or her to continue to do excellent development work on Sage. It is funded by donations to the Sage Foundation by Jaap Spies, and cannot be awarded to the same person twice.

    Who is the current release manager for Sage:  Robert Bradshaw? He also participates in Cython (run C code in Python).

     Robert Bradshaw:  home page:

    2011 Spies Prize: Robert Bradshaw

    Robert Bradshaw has been an extremely active and productive Sage developer for over five years. Additionally, he has been a leader, both in maintaining the community and in important design decisions.
    Developer map and description of developers is at:

    We'll try to find the key players in the education branch. From Sagedays31 (June 2011) I know that

    Karl-Dieter Crisman
    Jason Grout
    Robert Beezer

    are involved.

    Rishikesh -- automated testing (and builds) @ Waterloo

    We know that William Stein was the original release manager and that he is no longer serving in that position. Who is the current release manager? Can we tell from the site?

    Monday, August 8, 2011

    (Link back to teachingopen source:  RIT teaching open source POSSE )

    Assignment: Comment on using online synchronous communication as opposed to face to face communication:

    I've been using IRC (or IM if with just one person) for a few months now.  We started an IRC for WeBWorK some time last year.  IRC and chat have good pace for asking questions as you are setting up a new piece of software.  It is slow enough and just asynchronous enough so that you can perform a few setup steps before coming back and asking the next question without feeling like you are taking up your mentor's time as they wait for you.  The mentor can get work done also, with occasional breaks to see whether anyone needs help.

    It's biggest disadvantage (usually) is that it is disjointed and ephemeral, so unless you explicitly save the conversation you can't refer to it later when you have to do the setup again.  Even if you do save it, considerable editing is usually required before you can post it as a FAQ (or sometimes even understand it. :-) )

    Initial post

    Initial post to