Impact of license selection on open source software quality

I’ve made several vague references to my master’s thesis on this blog, but I’ve never said much of substance. Your long wait is over though, as I’ve finally gotten around to uploading it and creating a research page on the website. If you don’t want to read the full thesis, there’s a condensed version that was presented at a conference in March (and won best paper in the session, I might add).

The even more condensed version is that my research shows (to my dismay) that copyleft projects tend to have higher technical debt than permissively-licensed projects. What’s more interesting than the results is the pile of questions that it brings up.

I’ll admit that my methods are not necessarily the most stringent, particularly when it comes to how quality is proxied (or even the quantification of technical debt). My methodology was partly driven by convenience and partly driven by the dearth of research available on the topic. Of course, the steep price of the C/C++ plugin hampered my ability to get a good sample.

I hope someone else picks up where I left off and does a more detailed analysis. For my own part, I hope to be able to conduct some research in my “spare time”. In addition to the mere study of differences in debt, I’d like to see how non-license project governance affects software quality. There was no analysis in my study of developer quantity, funding, etc. The ultimate goal is to develop concrete recommendations for FLOSS project leaders that would improve the quality of the finished product.


Managing your time when you’re not very good at it

A friend considering a return to school recently asked me how I manage my time while being (in no particular order) a graduate student, a full-time employee, a husband, a father, a contributor to various projects, etc. As you may have surmised from the frequency with which I update this blog, the answer is “poorly”. But since I’ve been meaning to write about this subject for a while, I decided now is as good a time as any to commit my answer to more words.

I really do maintain that I’m not good at time management, although I’ve done well enough to survive into my third year of graduate school. Maybe the smartest thing I did was to slowly ramp up: I had a semester of school finished before my daughter was born, which was very helpful in allowing me to adjust to both separately. I’ve also borrowed heavily from some of Tom Limoncelli’s sage advice, although I’m not nearly as good about following it as I’d like to be.

To manage the high-level view of things, I have turned to TaskJuggler, a free software project management tool. I use this to manage application development, paper submission, and miscellaneous projects at work. For school, I mostly use it to track the classes I’m taking and progress (such that it is) on my thesis. For larger projects (e.g. research papers) within a course, I’ll include those as sub-tasks, decomposed as necessary.

For smaller tasks, and the miscellaneous to-do items of life, I use a text-based to-do list manager called TuDu. True to Limoncelli’s “The Cycle” methodology, I try to have every task scheduled for a day, even if that day slips. Tasks with no scheduled day often languish forever. The other advantage to scheduling tasks, especially things like homework and other school-related tasks, is that I can make sure I don’t try to do too much in one night. It can be easy to forget how much you have to do until it is too late to do some of it earlier.

Perhaps the most important thing I’ve learned about managing my time is that sometimes, things will hit the floor. That’s okay, so long as it’s well-planned. Sometimes you have to decide where effort is best spent. As an example, at the end of last semester, I was facing the last week of classes with two research papers, a group project, and a homework assignment due. I decided to sell out the homework assignment in favor of the research paper for that class, figuring that the paper was worth more to my grade than the homework. I did get a pretty bad score in the class, but my overall grade was still an A.

It helps to set aside time to concentrate on what’s important. Between the time I get home and the time my daughter goes to bed, I spend time with her and my wife. The only time I’ll skip that is if I have something else scheduled that evening, or if I’m hopelessly underwater on my to-do list. When class is cancelled or dismisses extra early, I use that time to work on any outstanding schoolwork I may have. I’ve commited to git repositories while on the bus. And when life settles down a bit, I’m going to take a nice, long breath.