Open Source Web-CAT Project
[Note: This page is dated, and exists for historical reasons. Our development team has satisfactorily addressed all of the outstanding issues that were originally reported here, and Web-CAT is now a full-fledged open-source project.]
In order to move Web-CAT forward and allow more people to use it, the obvious thing to do is to set up an open-source development project and let everyone work on the part(s) that interest them. This sounds good in principle, but is pretty daunting when the details are examined. In particular, here are the obstacles to a "simple" open-sourcing of Web-CAT:
- No simple installation procedure:
There is no InstallationManual for Web-CAT.
Update (8/06): We now have a movie of an InstallationWalkthrough (29Mb, 7min).
Like many complex web applications, there are many auxilliary installation issues that have nothing to do with Web-CAT's source code but that can contribute to difficulties and problems running.
Update (2/06): We now have a built-in self-installation wizard in the Web-CAT servlet design. When you install the servlet on a new host, it runs its self-installer the first time you visit the web application. The self-installer walks you through setting up the database connectivity, creating an administrator account, and deciding on the other key setup parameters necessary to get a running server off the ground. We have not yet rolled some of the grading plug-in support infrastructure into this distribution, but we're working on it.
Update (8/06): Nearly all of the external dependencies for grading plug-in support are now rolled into the distribution. That means there is no requirement for one to separately install tools like ANT, Checkstyle, Clover, PMD, etc. All you need is an appropriate servlet container (like Tomcat), a MySQL server, and a recent version of Perl installed.
- External dependencies:
- Web-CAT is written in Java (v1.4), so that's one good thing.
- It is around 40KSLOC or so.
- It runs fine on newer Java versions as well.
Web-CAT is built on top of Apple's WebObjects application framework, and requires a WO license to run. I don't have a license to distribute WO. Apple sells WO at an educational discount ($99, last I checked), but Web-CAT hasn't been tested on the latest commercial release.
Update (2/06): You don't have to have WebObjects installed on your machine in order to run Web-CAT. All you need is a valid deployment license number. This comes for free with recent versions of Mac OSX server, or you can buy one using Apple's educational discount (from your campus bookstore or from Apple's web store).
Update (8/06): The self-installation wizard simply asks you for your WebObjects deployment license number the first time you start up the application. That's it.
- Web-CAT's Java grading uses Clover. The Clover folks gave me a free license for my use, but I don't have a license to distribute it. We'd probably want to open discussions with them about what we're doing and come to some arrangement regarding other folks who want to install and use Web-CAT.
Update (8/06): Our project has received a redistribution license for Clover so that it can be included in Web-CAT distributions (for educational use only). Clover is now encapsulated inside one of Web-CAT's plug-ins (with full self-update support), and so its behavior is included in the binary distributions of Web-CAT, even though it is not available through the source tree.
- Web-CAT also uses a number of free tools in its installation, including MySQL, Perl (with some non-standard modules from CPAN installed), log4j, and PHP (for the help pages). Java grading also makes use of ANT, Checkstyle, PMD, and JUnit. Source code views for languages other than Java use a recent version of enscript.
Update (8/06): All of these tools are now encapsulated within various Web-CAT subsystems, so there is no need to install any of them separately. We no longer use enscript to generate source code views.
- Web-CAT is written in Java (v1.4), so that's one good thing.
- Source code issues:
WebObjects is a very powerful framework for creating database-linked web applications, but it has a s-t-e-e-p learning curve! There are some good books available to learn from, but it normally takes grad students some time to come up to speed and be productive.
Some portions of the Web-CAT source code (not any of the Java program source, but some of the WebObjects-specific files) contain sensitive information, like the URL of the MySQL database to connect to, the user name of the account to use, and the account's password.
Update (2/06): by redesigning some aspects of Web-CAT's internals, and making use of some of the features provided by Project Wonder, we have eliminated all site-specific information from the code base. We now have all the source code in CVS as part of our SourceForgeProject. When a new user installs Web-CAT, all site-specific information like this is recorded in a site configuration file created by the installation process.
So the bottom line is that if I just throw the source out there and you try to build it, it would take an immense amount of effort for you to build it and get it running ... and by then, you'd definitely hate it.
Update (10/08): When we put together the self-installation wizard two years ago, and then added built-in automatic update support, these issues went away almost entirely. Now, it is easy for others to install and use Web-CAT. For others who want to use our code base, the situation is not quite as easy--setting up a development environment that allows one to successfully build from CVS is still non-trivial. Contact our development team for help.
I'm sure some of you have had experience developing applications of this scale and may have some advice about how to best set up an open-source project of this nature. However, because of the issues listed above, I don't want to just "throw the source out there" and see what happens. That makes me think of a second option ...
We could set up a ContinuousIntegrationServer instead.