Monday, March 8, 2010

Making It Easy For Developers To Extend My Code

Last semester, our ICS 613 professor (and my advisor) Philip Johnson started off with what he calls the three prime directives of open source software engineering. We want our dorm energy competition implementation to be open source and available for anyone to install themselves. Unfortunately, it hasn't been well documented and the source code was unavailable.

Over the past week, I made some efforts to satisfy the 3 prime directives. First, the source code is now available as a public project on GitHub. This means that anyone can download the source code and either develop or install the application. There's little in the way of functionality right now, but it is available when other developers start working on it (which may happen this week). This is the first time I've really used Git (other than to clone other projects), so I'm interested in seeing how it works once the other developers set it up.

The kukui-cup-pinax project has also been added to Hudson, our continuous integration server. To do this required a few adjustments. First, I needed to set up Pinax on our server, which required installing the Apple Developer Tools (for gcc) and the Python Imaging Library. Once that was set up, I installed Pinax on the server. Next, since Hudson was set up for Subversion, I needed to install Git on the server and then install the Hudson Git plugin. After all of that, I was able to have Hudson check out the project.

Now I just needed to run the tests. I wrote a shell script to initialize the Pinax environment, copy the file, and run the tests. However, there were several tests that failed out of the box. I looked around online and it seems that in this version of Pinax, there are a few tests that are known to fail. Also, since I was using a different authentication backend (django_cas) and an earlier version of Django, some of Django's tests were failing too. I decided to set up a Python script that ran only the tests that I created in my apps directory. That way, the continuous integration kind of works and I don't get hammered by build failed emails.

The upside of this entire process is that it helped me write the README file. Since new users are also going to have to install prerequisites, walking through the process again reminded me of all the little things that I had to do. That piece of documentation is the other important step I needed to do to hopefully the 3 prime directives. When the new users come on, I'll have to see how this process goes.

Programming-wise, I haven't made a whole lot of progress. But I think the application is now in a presentable state and ready for other developers to start working.

No comments:

Post a Comment