A recent post on the NUnit Open Discussion Forum on Sourceforge asked “Is NUnit Dead?” I have to admit: the question irked me a bit. But reflecting on it has led me to a few conclusions that I’ll share here.
The original poster felt that NUnit might be dead because it hadn’t released for quite a while. Other posters seem to feel that the unit-testing capabilities built into Visual Studio 2005 will kill us off. So there are two ways to go…
Some say the world will end in fire;
Some say in ice.
From what I’ve tasted of desire
I hold with those who favor fire.
But if I had to perish twice,
I think I know enough of hate
To know that for destruction ice
Is also great
And would suffice.Robert Frost
Although I’m pretty sure that Frost didn’t have software development in mind, I’m adopting the metaphor anyway. I’ll talk here about the possibility of death by ice: frozen inactivity on our own part. I’ll follow up with my thoughts on the fire of competition in another blog entry.
NUnit 2.2 was released in August, 2004, 11 months after NUnit 2.1 and 22 months after NUnit 2.0. Based on that timing, we’re a bit overdue for another major release.
But back in 2004, we decided that more frequent releases were needed. We set out to issue minor releases – we call them “integration releases” – every few months and to try for a new major release every six months.
At first, this seemed to work well. The 2.2.1 release was issued in October, 2004 and 2.2.2 came out in December. Since then, there have been no binary releases, although – as I’ll show below – things have definitely been happening in the source code.
While coaching teams in Extreme Programming, I’ve often had to tell them that code, which only works for them and on their machines, is not of much use to the rest of the team – much less to the Customer. In the open source community, the same bit of wisdom is encapsulated in Eric Raymond’s aphorism “Release Early, Release Often.”
So far, we haven’t succeeded in doing that. Of course the source code – which has progressed – is available to all comers. But that’s not good enough. Binary downloads, preferably with automatic installations, are needed to serve most people. This is particularly true for a project like NUnit, which has a large body of users of varying skills.
The reasons for our not managing to live up to (our own) expectations are varied and include poor communication among the developers, lack of platform availability for testing releases, logistical problems both on sourceforge and our external web site and simple lack of time – the developers all have day jobs, after all.
But the biggest issue seemed to be – at least to me – the lack of a common direction for where NUnit is going. That’s why I wrote, circulated and published a Vision and Roadmap for NUnit. Both documents are found on the nunit.org web site.
Many thanks to Miguel de Icaza, who gave me lots of advice about open source project communicatons and who pushed me toward taking a broader view of the project’s direction.
Aside from having a map, NUnit has actually covered a lot of territory in the past months.
We’ve supported each new beta of Visual Studio 2005 as it came along. Some people wish we would support them faster, but we have to wait until we actually receive, install and test the new releases. NUnit is not on the Microsoft Christmas card list and we get the releases at the same time as the rest of you.
We resolved issues with errors caused by use of context-bound objects and other changes to the thread context while running tests. This is a big issue for many people, particularly those running more complex tests under NUnit.
We introduced a new model for use in creating custom Asserts and an Addin structure that enables anyone to distribute new functionality for NUnit without rebuilding it. A new site has been created on SourceForge for contributed addins.
We now provide emulation for csUnit tests under NUnit, without change or recompilation. Visual Studio unit test emulation is being tested but won’t be released until Visual Studio 2005 ships.
It would be nice if we had accomplished more, but the list is non-trivial. Our mistake seems to be keeping it in the source and forgetting the importance of frequent releases. We’re working on that and I hope to get a new iteration release out in the next week or so, if only to keep from having to deal with bug reports on problems that are already fixed!
So yes, death by ice is a possibility for NUnit, just as it is for any open source project. But we aren’t quite as frozen as we look and we expect to put out releases again fairly quickly.
Now for the fire… well that’s a different story.