Australian Anita Borg scholarships

There’s been little rumblings for ages around these parts about the North American focus of the Google initiatives aimed at computing students. For example, Summer of Code is in the northern summer during the northern long university vacations. One that’s always rankled a bit for me personally is the Anita Borg scholarships being limited to female students in the United States.

Well, no more. Google Australia has announced Google Australia Anita Borg scholarships open to female students at Australian universities, entry closing September 15. I’ll be applying if I can find even a moment to try and fufil their fairly hefty entry criteria. The money isn’t as good as the US one (AU$5000 as opposed to US$10000), which is actually irrelevant to me for silly reasons, so that’s OK. (If I get other scholarships in any form totalling more than 75% of the value of my Australian Postgraduate Award, I have to forfeit the scholarship money from my APA. So the difference between a small-ish and big-ish scholarship is removed. I’m happy to accept truly huge ones of course, and the APA can be damned.)

A degree in computing?

This is a re-publication of an essay I originally posted on a now defunct website in September 2004.

I’m obsessed with understanding the minor failures in my own university education, probably unreasonably so considering that I have two undergraduate degrees, good mental health and a debt to the Australian government that will buy them only one new low range car.

Nevertheless, there are a few striking things about a degree in computer science that I’ve learnt through experience, and thankfully sometimes through the experience of others, that I think are worth noting for the record. This essay is a guide for people considering starting a undergraduate (bachelor-level) computer science degree or computer science major. I’m going to lead with the negatives: I think people should think more carefully before starting computing degrees, and degrees in general for that matter. But as I don’t actually regret the degree, I will conclude with some positives.

Why you may not want to do a computer science or computing degree

You aren’t suited to university

By this, I basically mean that you don’t want a degree. Degrees are what universities think their purpose is. Degrees are annoying things to get. In most universities there’s a complex set of rules governing which subjects you have to take in which combinations, which subjects you can’t take, how many subjects you can take, what marks you have to get, and what level of courses you need to do. They almost invariably involve at least one time-serving course which is totally uninteresting to you, and one boring but difficult course which you need to put a lot of work into.

Once you jump all those hurdles they let you wear a silly hat.

Further, universities are geared towards students getting degrees. If you show signs of not being such, like repeatedly failing courses, or simply doing too many low level courses and not enough final year courses, they have a distressing tendency to try and throw you out.

Further, at least in Australia, you can get by without degrees in computing fields. Their official function is to act as a stepping stone into academia, or as a heuristic for employers to demonstrate that you are capable of completing a long, and more than somewhat arbitrary, list of tasks in order to achieve a goal (employers are in the long and arbitrary tasks business too). They also indicate a certain skill set. But they aren’t the only way to show that you have that skill set.

Larger organisations get a bit hung up on them. It can be difficult, for example, to get work visas to certain countries without a four year degree in a relevant field. As businesses get bigger, it tends to get more likely that "degree in relevant discipline" appears in the ‘mandatory requirements’ section of job ads too.

While failing to get a degree you wanted can be miserable, hanging around at university without much intention of getting a degree can be fun, especially in countries that have low tuition fees. My experience of people who do this is that they eventually get sucked into the degree mania and have some regrets, especially once their friends start graduating, but if you really want university without the degree I don’t have much more advice to give.

There’s good things about university too (later!) but if this description is making you grit your teeth and long to flee into a job, or possibly to the Himalayas for a good long hike, follow your dreams there instead.

You don’t like programming

To people who know about the content of most university computing courses, it will seem extremely strange that you want to do computer science at all. The reason is that university computing courses focus on one of two things: in the vast majority of cases, that is programming theory and practise with dashes of software engineering and a smidgen of computing theory (discrete mathematics, in other words); in a small minority of cases they concentrate on computing theory.

In short, if you are certain that you do not like computer programming, you should not do a computer science degree, with a few rare exceptions for people who like the mathematics rather than the programming and want to do a theoretical computing degree. Even in that case, check the program you’re entering thoroughly because almost all of them will have you programming much of the time. You might well be better off in a mathematics major.

If your bent is systems administration or other techie non-programming skills, you will also want to avoid most undergraduate courses, because they teach programming to the exclusion of what you’re interested in. There are a few exceptions to this, and you might find some interesting Masters courses, but be sceptical and enter programs only when you’re sure that you aren’t doing "programming with a dash of systems" when you want systems. It’s likely you could find relevant courses outside the undergraduate system, and it is worth considering skipping the whole thing and learning on the job.

In the, alas, most common case, where you have some idea that you might like to "work with computers" (or often, you would like to manage people who do), have no particular existing skill set above using your computer for email or gaming, but are certain that coding is not your thing, you don’t want to touch a computing degree. In the best case you’ll struggle through a semester or two, realise that it’s all programming and you hate it, and spend another semester or two establishing prerequisites in a different field. In the worst case you’ll push through three or four years wondering when you’re going to learn ‘industry skills’ (meaning management). You aren’t. You’re in a programming course. Definitely skip the whole thing. Do a little research and find a faculty or major that teaches the skills you want or the things you’re interested in.

There are a number of non-programming computing majors, normally called ‘IT’ or something similar (although not always, some ‘IT’ courses are also programming courses). These generally have varying amounts of ‘basic computing’ (using office products), system design, project management, database design, and business skills. Computer science students tend to look down on these courses, but the few people I know who’ve done them say that the management skills they teach can be worth it. The only thing I’d warn about if you’re thinking of one of these courses is checking whether you like programmers themselves. If you find them insufferable or laughable, you’re going to have a hard time managing them and it might not be worth training to do it.

You have no idea if you like programming, because you’ve never done it

I know several people who started university in this category, two of whom graduated from computer science with highest honours. Unlike loathing programming, it’s not a death-knell for your enjoyment of the course. In addition, at least in Australia, all computing degrees assume that you cannot program when you begin them (the University of Sydney claims that, except for a few very experienced students who earn excellent marks easily, the difference between the experienced and inexperienced in terms of marks is negligible after three months).

Nevertheless, before committing three or four years and a fair bit of money to a programming degree, you may want to get a basic idea of what it is you’re going to be doing with your time. There’s a few options: there are a lot of online programming tutorials these days and many free toolkits — a lot of your programming is going to be self-taught anyway, so you could start out that way. You could also take a summer course at a technical or community college. Which one you want to do may depend on your personality: as a beginner I spent a lot of time trying and failing to think of interesting practise projects, so I guess I was a course-type person.

Programming is difficult and frustrating initially, but allowing for that, having a little programming experience will help you decide whether you like it enough to spend years listening to people talk about nothing else.

You love programming and are very experienced

By this I don’t mean that you got high marks in high school computing courses (or at least, not that alone). People who can program to the extent that they get high marks in your average high school, but not a great deal more, will probably find computing degrees really useful: you will meet people more skilled than you; you will find many of the assignments at least somewhat challenging; and while you will probably begin to find the lecture courses dull, they won’t cause you to attempt to pound your lecturer’s head through the wall.

Even in this case, you will find the early stages, which are aimed at the non-programmers allowed into the course, quite frustrating. But it’s quite likely that you will learn a great deal in the later years of the course, from courses and especially from classmates. You might well emerge ready to program professionally. In case you can’t tell, this is the category I entered university in.

But if you’re experienced to the extent that you’ve written working 10 000 line (or much more) projects for fun, have programmed professionally, or have done extensive work with others, you are likely to find at least the first two years so insufferably tedious that you may well be tempted to turn violent. Anyone who is a major code contributor to a medium sized Open Source project almost certainly falls into this category.

In addition, you may not do very well. There’s a couple of reasons for this. First, it’s unlikely that you’re going to be doing programming exclusively. In most computing degrees, your first year will include mathematics courses, and depending on the institution, it will probably also include at least one business, engineering, or science course. Your programming experience will probably not help you pass these other courses — which is not to say that other abilities, such as good mathematics skills, writing skills, or a good memory won’t get you through them — and the mind-numbing simplicity of introductory programming risks convincing you that you can pass them as easily as you will programming.

Or will you? Mostly, yes, with blindingly good marks. But alas, programming courses will often involve just enough theory to trip you up if you aren’t interested in some of the theory, or neglect to flick through the textbook: you’ll code up a storm but be unable to remember precisely how pushdown automata work when it comes to the exam (unless you ever coded one of course!) This is sometimes more the case as the degree goes on.

Some people who are experienced programmers might prefer to do a related degree with new skills (like mechanical or electrical engineering); a theoretical degree with a lot of maths, since they’re less likely to have taught it to themselves already; or a completely new field, if they want an extended break from their programming. Others might skip the degree. Otherwise reconcile yourself to the tedium a bit and try and seek challenge in your fellow students and your teachers, not your courses themselves.

You have no academic interests aside from programming

As above, most university degrees require some semblance of balance in your courses for a few years until they finally let you geek out on an all computing extravaganza. Annoyingly, some of these courses will also stand in your way — in particular, failing maths may stop you proceeding in computing.

If you really cannot stand any of the other subjects that are likely to comprise your program (make sure you investigate what these are) or aren’t going to be able to pass them, you’re going to have a hell of a time getting to the interesting bits of computer science inside the university system.

I did a science degree with maths and computing, and an arts degree with linguistics and philosophy: the first is a fairly typical computing degree. Other common ones are engineering based courses, which will have a lot of maths and physics with the programming; and business based courses, which will have accounting and management, and sometimes a touch of maths, with the programming. Some universities are very flexible and will let you do, say, metaphysics and computing, others stick to traditional patterns. But at least in Australia, computing degrees without non-computing course components are rare.

Why you may, after all this, want to dance to the university tune

I think I was actually a fairly good candidate for undergraduate computer science. I have reasonable mathematical ability, I’m a better writer than the majority of my fellow students (this became relevant during the last year of my degree when I did a research project), and at the time I entered I had some programming ability but very little experience of projects that took more than three hours to complete.

I ended up getting a lot out of my computing degree, and in this section I’ll discuss some of the things you could get out of it.

You will meet other students

I actually think this is the single major reason you should consider undergraduate studies at all. University is an easy way to make friends. You will be exposed to a wide group of people who like you are confined to the campus much of the time. Making friends after university is harder because the range of people you meet daily falls and it’s hard to see a lot of them, especially in cities where you may live two hours drive from your colleagues and friends.

I have a typical geeky high school sob story, although it’s on the mild side because it didn’t involve being assaulted or attempting suicide, it just involved loneliness. I arrived at university more or less convinced that I was terminally unattractive to my peers.

After considerable time (I spent five years at university) I left with quite a large group of friends and acquaintances, an immeasurably improved set of social skills, and a much better self-image.

In computing, in particular, your peers will have a lot to teach you, assuming you find a good group of people. Computing students tend towards the obsessive and will spend a lot of time teaching themselves and each other all about their findings. It’s probably more the rule than the exception that you will learn more programming skills from your peers than from your teachers. (This doesn’t seem to be true in other science disciplines, and is only true in the humanities when your peers are exceptional.)

‘Networking’ deliberately is a bit yucky, but the natural process of meeting people with common interests and hanging out with them will introduce you to people who have a lot to teach you. If you end up getting a job through these people eventually, you’re in good company.

The course discipline can be useful

Computing courses will tend to set relatively fixed assignments that force you to practise programming skills, although some teachers are far better at this than others. At the university I went to, these assignments were also very open-ended, in that you spent about three days getting 80% of the marks and then for every mark after that the time you spent would increase. While this was both good and bad (some students deliberately chose part time studies in order to improve their marks at the cost of an extra year’s study) it did force me to practice.

If you don’t, early on, get sucked into an intense group of hardworking programmers (and talented programmers can be among the world’s best procrastinators) the discipline of the coursework will improve your programming skills. In my case, and I only really did hobbyist programming in the final two years, the early improvement was huge.

You have the chance to study other things

A lot of people hate the elective requirements of some degrees, particularly if essay writing and mathematics don’t come easily to them (you’ll likely need one or the other), but undergraduate studies are one of the very few opportunities you’ll have to learn about a lot of subjects from experts in the field, some of whom will be marvellous teachers. In some cases — mathematics and science particularly — it’s very hard to learn about the field later without course discipline to push you along, in other cases it might just expose you to something you can follow up at leisure.

I gained two major interests from non-computing study at university: language and modern history. One is likely to be part of my career path, the other is filling my bookshelves. I wouldn’t be without them.

You’ll get the piece of paper

In most ways it’s an arbitrary measure of ability to finish a regimented program, but for some career paths you need it, and it might well make you happy to have it. I quite like having mine, I even gamed the system for a fifth major. In hindsight I wouldn’t do a five-year pre-honours program again (and I wouldn’t do high level maths after second year because I wasn’t committed enough to it) but I’m pretty happy about it overall.

Why Women’s Summer Outreach

Dom Lachowicz asks why an enormous number of women are applying to the GNOME Women’s Summer Outreach Program when they didn’t apply to Summer of Code.

Well, I’m still each-way about applying (because I’m spending two successive weeks in July at the ACL/HCSNet Advanced Program in Natural Language Processing and ACL/COLING 2006), but, for what it’s worth:

Potential major disadvantage: WSOP’s payoff is less ($3000 vs. $4500)

The time expenditure is commesurately less, two months rather than three, although Lachowicz doesn’t think that there’s a scope difference to compensate. This is a good thing for me. I’m a southern hemisphere student and also a PhD candidate, both of which mean that July and August are not some kind of idyllic vacation waiting to be filled up with code. I want my September back.

Potential major disadvantage: WSOP’s number of advertized positions is less (3) than the general SoC allotment (20)

I expected that the applicant pool would be much smaller too, turns out I was wrong about that.

Potential major disadvantage: WSOP was advertized when a lot of North American schools have their summer recess, where SoC was advertized while students were still in class

Not relevant to me. What is relevant to me is that I was very very early in my studies (my school year starts in March) when SoC opened up, and had no idea if I had the time for it. Especially since (as seen below), SoC is longer.

March to May is probably the worst time to persuade Australian students to be part of this kind of thing: they’re still trying to wrangle their school year into shape.

As for North American students, for those who remain on campus (ie postgrads) it’s likely that summer is a good time to do word of mouth advertising. Less people have time to get enthused about a summer of coding when they’re still finishing their spring of marking or taking exams. That’s speculation though.

Potential major disadvantage: On top of that, I have to imagine that GSoC was advertized more broadly than WSOP

Not in groups where I hang out. WSOP has been advertised to LinuxChix of course, but also to SLUG!

Here I have to comment on the nature of the advertising. I was personally approached about applying to WSOP and generally it seemed to be a little bit more about here, let us help with your application (although perhaps not now that applications have gone crazy) whereas the SoC stuff came across more as think you’re ready to play with the big boys, c’mon, prove it! I wouldn’t be surprised if this impression is false and based solely on the WSOP is for women factor, but nevertheless it is a feeling I have.

Potential major disadvantage: GSoC was open to both men and women, and WSOP is open only to women

I suppose this does make SoC appeal slightly more to me, but it just doesn’t scream major disadvantage. I’m not entirely sure why Lachowicz thinks this is a major disadvantage. One possible reason that that it makes SoC more prestigous, but prestige isn’t the reason I’m interested.

In summary

The major appealing factors of WSOP are:

  • The program is shorter
  • It was advertised more extensively as unambiguously cool in places I’m exposed to
  • It had more personal touch
  • It happens to be at a slightly better (as in, only mostly awful) time of year

My new baby

Actually, it’s more like a baby and an amniotic sac. The baby is a Canon Digital IXUS 65/SD630. The sac is the WP-DC3 underwater housing, rated to 40 metres depth.

But Mary, alert readers cry? Haven’t you and Andrew been dying to get a DSLR for years now? How can you introduce an ultra-compact into your family? Is it worried you will love it less than its eventual brother?

It probably ought to be worried, but it has one unbelievable advantage, which is that the cost of the housing was actually less than the cost of the camera itself. As far as I can tell, that isn’t actually true for DSLRs, or at least the prosumer ones. Expect to pay more for the housing than you did for the camera, and expect also to be compelled to buy an external strobe rather than being able to use the pop-up flash. (Yeah, I know that an external strobe is a good idea anyway. Damn you all to hell.) So, it’s my wet camera at the very least.

How did the family react?

I’m thrilled of course (although not convinced by Andrew that this is what you’d call a good shot of me):

Mary is thrilled

Andrew is mildly pleased:

Andrew is mildly pleased

Liga is really quite calm indeed:

Liga is calm

Macbeth is excited by something else entirely:

Macbeth is always excited

And I have captured something of the pretty:

Bottle brush flower in a puddle Sapling Butterlfly

Things I’m up to

Backwards

I still run my website on this thing. I must be one of the last people in the world using a hand-rolled CMS, but I spent four years maintaining my website by hand and for whatever reason it’s turned out that coding to my own needs has worked for me. I recently had a flurry of activity involving feature branches and unit tests and such.

Planet

I keep beating my head against the Planet codebase. The major problem I want to solve is that it runs like this: load all entries ever into memory, then write the top X of them out to a page. This is delightfully insane when run on my Linode 100: it can use up 30+MB of memory and push the whole thing into a nasty cycle of swapping.

Unfortunately, my reading of the codebase is that the single most flexible thing about it is that you can get any of the entries at any time. You currently might not want to, but everything is designed to leave that possibility open. Whether I kill that flexibility dead or leave it, this is a major reworking of the guts of the thing. Considering how many undocumented, untested hacks are in there (or at least, I have reason to believe are in there, it’s hard to find them) to work around the five million possible bugs people can introduce by mis-dating within their RSS feed, I’m sure this will break something.

linux.conf.au website

I volunteered to write content for this, but I’m not being nagged sufficiently hard and have also proven unwilling so far to go to their weekend-after-weekend conference organisation stints to be nagged, so I haven’t.

Women’s Summer Outreach Program

In theory I’m applying to the GNOME WSOP. In practice though it couldn’t be at a worse time. It runs July and August, here’s what I’m already doing in July and August:

  • Second week of July: Full time residential winter school in computational linguistics in Melbourne.
  • Third week of July: ACL/COLING 2006, which will be full time and, I believe, highly social. At best I can code on the train to and from the event each day.
  • First week of August: Visit to Townsville, including three full days on a liveaboard SCUBA trip. I get seasick, I’m not coding on a boat!

I’m still sort of madly tempted to apply and just find the damn time. It can probably be found. But I’d have to run close to crisis mode for a couple of months to get whatever it is done.

PhD

Yes, that too. No really. But at the moment I’m trying to do stuff in Perl (not at random, because of the existence of this) and for whatever reason Perl and my brain are not a good fit.

Twisted sprint

On the off-chance that someone who might be interested is reading this but not the twisted-python list (in which case, you might have your priorities mixed up…) there’s a Twisted sprint in Sydney June 3–4. I haven’t been involved in organising this one, but will be there. RSVP as per the link.

FLOSSPOLS report on gender and Free/Libre and Open Source Software

There’s two reports in fact: D16 – Gender: Integrated Report of Findings; and D17 – Gender: Policy Recommendations (a sub-report from D16). I’m in the middle of reading the first one. I don’t know how the general public is going to go with them, even I have trouble not wincing at the use of ‘discourse’ and ‘narratives’ and I both have a rogue semiotics major and know perfectly well that it’s unmarked jargon.

I’ve never felt really able to contribute to the why [so few women in this IRC channel]? discussion other than tending to dismiss the women’s brains don’t work like that argument for totally incorrect reasons. That is, I dismiss it largely because they seem unable to put ‘most’ in front of the words, and what kind of evidence of mathematical superiority involves making a absolute statement about an entire population in a conversation with one of the exceptions? That’s right, I’m completely petty about that one.

More seriously, I’ve always wanted to solve the problem of why I personally don’t contribute F/LOSS code before going at the bigger question. I mean, I’m in all the right places. I report the bugs. I have myself been a professional programmer, and now I’m a postgraduate computer science student which puts me even closer to the ‘likely to spend entire life on free code’ demographic. On the rare occasions when I even look at the code of stuff I use I can generally curse its inadequacy and also find the bug I’m looking for. (I have trouble fixing them even then though, because I tend to subscribe to a ‘master plan’ theory of the code in which I worry about breaking other things if I have to do any rearranging to fix the bug. I guess I’m the person test driven development was invented for.)

Some of it is this problem. Some of it is the social problem: that hurling out random patches is actually so seldom successful when fixing bugs, especially non-trivial ones, compared to spending oodles of time in Yet Another IRC Channel and finally winning commit access. (It’s possible a different choice of projects to fix bugs in would help, but that tends to be the problem with the under-resourced small ones.) Much of it, however, involves just not opening up the code in the first place.

A couple of things in D16 speak to me though: the first is the review of how important the idea of complete individual volition is in F/LOSS culture(s); that one’s choices to code or document or play will dolls are made in a social vacuum. Another interesting note, probably a tangent, from D16 (page 34):

Often it is almost as if software projects are not about software production but about code production, where members imagine that within code lies exclusive access to worthy knowledge. In this sense, F/LOSS resembles academic computer science more than engineering. It is perhaps not a coincidence that proportions of women in F/LOSS resemble academic computer science numbers.

Note that I cheat in academic computer science too: computational linguistics has a relatively large proportion of women. Still, I’m sure, a minority, but it’s difficult for me to notice that when it’s a sizable minority. But I wonder if I should tottle off and have a closer look at the ‘women in computer science’ literature now. It’s still an open question as to whether it will answer any questions I have about myself though.

Google demands, we deliver

Unlike my more organised compatriots (Pia, Scott) I didn’t go to the Google Open House party last night. But since they employ in my research field, I did head over to their Software Engineering ads in order to scope things out. After all, I like Sydney. I might want to live here after my PhD. (To be fair, it’s a bit of a long shot in that they don’t have computational linguists in Sydney.)

It’s interesting to see that they want a Masters or PhD for the position. Even modulo the usual about degrees not proving anything about anyone, I wonder what sort of Masters they’re looking for. A Masters degree is not usually a PhD feeder in Australia (four year Bachelors feed straight into 3 year PhDs with some provisos). While there are research Masters, which are just like doing a PhD except only about two thirds of the work is expected, most Masters programs are terminal coursework programs. In IT, they’re often career entry programs too, they don’t assume prior knowledge of the field. So hiring a Masters is just like hiring a Bachelors except your job candidate is older and is guaranteed to have a Bachelors in something else too. It says nothing in particular about some personal investment in or aptitude for research-like software development like it may in the US.

This is more a human resources problem for Google than anything else. It is, I assume, tough to get a decent picture of how tertiary and professional qualifications work globally. It’s a little concerning in a local sense: Australia at present does not usually demand Masters degrees for professional work except in the rare fields where there’s no undergraduate degree that qualifies you for the profession (and even medicine, dentistry and law are undergraduate, although in many cases they cheat and require that it be your second Bachelors). I’d be just as happy if it stayed that way. There’s nothing wrong with twenty-somethings being allowed to start actual work, surely.

PhD management

I’ve started a thesis, these are my toys:

Bazaar (yeah, the new one, I’m not that crazy…) for version control. As you might expect, the distributed element is a wee bit of overkill, but not as much as you might think. It makes backups easy.

LaTeX and BibTeX. I’m not a complete LaTeX purist; I find it’s more trouble than it’s worth for shorter documents, or at least, it has been since office suites on Linux started being easily installable and usable for me. (I recall, for example, in 2001, when Abiword exported to PDF but did not export the paper orientation with it. Since I’ve never owned a printer, export to a portable format for printing has always been my feature of choice.) But for a 200+ page thesis, it’s better than the alternatives, because it doesn’t involve typing XML tags and it is text based and therefore can be version controlled without custom proprietary tools and recovered by hand. And it’s designed for academic papers.

I’m not so enamored with BibTeX because I find it’s an easy format to get wrong. I suppose I should at least try EndNote someday so that I speak the same language as my librarians, but even if it is as good as everyone claims, it takes a lot to get me to switch operating system. (I have, in fact, only done it twice: DOS 2 to Windows 3.1 to Linux.) I probably should play around with BibTeX frontends again. Last time I tried pybliographer it was missing some useful features, although now I can’t recall what.

Tomboy for note-taking. This is my real discovery of the past month or so. I like wikis for notetaking in principle (hyperlinkiness is next to godliness) but in practice I find that the press edit, wait, edit, press preview, wait, edit, press preview, wait, edit, press save, wait cycle is too slow for comfort on a web connection. They’re also not really well designed for the task of taking notes into several pages simultaneously, or bouncing between them. So, I ran apt-cache search wiki specifically in search of the wiki idea implemented as a desktop program and Tomboy is what I found. I’ll be curious to see how their ability to interface with other programs goes. If it looks attractive I might try and hook it up to one of the BibTeX frontends I’m yet to find.

The bounty puzzle

My mind may be a little warped at the moment from spending time as a programmer for client driven projects and the associated perils, but every time I think about open source bounties something in the back of my brain starts squealing painfully.

I mean, these things just seem like a potential minefield to me. And I don’t mean legally, in the sense of people suing each other over bountified things that did or did not happen or bounties that did or did not get paid. I just mean in the sense of an enormous amount of sweat and blood spilled over the details of when the task is complete.

Consider the kind of features that are being bountied, for example parental control for Ubuntu. There are so many ways that one might not like an implemented solution to this problem, both reasonable and petty:

  • it might not completely control the users’ access in any one of a number of ways (doesn’t block IM, is missing some porn websites, doesn’t block use of alternate proxies…);
  • it might not be written in a programming language you favour;
  • it might manipulate packages or user settings in a way that is contrary to the way the rest of the distribution works;
  • you may disagree with its author about what parents might want to control;
  • it might have an unusable GUI, or one that you claim is unusable; or
  • it might have security flaws you can drive a truck through.

Moreover, upstream might have their own set of reasonable or petty objections, ranging from "I wanted to do that myself, it sounds fun, so I won’t use your solution" to "cleaning this up so that it works for us is going to be months of work" or "it has security flaws you can drive a truck through." And any or all of these might be the end of the project in a normal situation. But when some small amount of money is added, there’s a whole new fight on about what constitutes a completed bounty for the purposes of payment.

Even with companies, which are fairly motivated to be profitable, and even with specifications longer than the Bible, these fights can end up costing more person hours than the total value of the project. With bounties maxing out at USD500 or so, I’m willing to bet that the review time alone will cost more than the value of the bounty in all but cases so trivial that writing the code is faster than writing the specification anyway.

But the main problem for me is that doing client driven work now without a very clearly defined relationship between myself and the client (I’d like the armies of the undead to be involved, but failing that, serious review of the specification before coding begins) just gives me the willies. I’d rather take my chances with scratching my itch and hoping that the community agrees that it’s worth applying the patch than have the community try and assume a client relationship with me, let alone someone peripherally involved in the community who wants me to do the work of getting the feature that they personally want added.

There’s a problem here to be solved. It’s the old nasty one: what does a good specification (one where the specified task can be judged complete with as little ambiguity as possible) look like, and how does one write one?