One the interesting aspects of the open source world, particularly for us, is how it's proving to be a fascinating research community. Open source projects come in many guises, but a fair number of them are taking an idea and programming around it to see where it goes and whether it has value. That's a notion that sounds strange if you believe that design and programming are separated, but makes a lot of sense if you accept that they are tied together.
This effect has been particularly noticeable in the enterprise java world. Much of the interesting new developments in that space (IBatis, Hibernate, JUnit, CruiseControl, Spring, Sitemesh, Webwork, Tapestry, ...) has come from open source developers.
Open source research fits very well at ThoughtWorks, which is why so many ThoughtWorkers are actively working on open source projects. It fits in with our philosophy of OpenIntellectualProperty. We don't have the people who are interested in writing lots of papers for academic conferences - we tend to have people who want to build things. So the open source world is their way of publishing. If it really catches on they turn it into a product, usually with the help of more people. Much of this research and development is done with non-ThoughtWorkers - and that's fine with us. We're looking to explore and publish ideas - we sell our day work for our clients.
One of my ambitions is to give people more time for this kind of research. At the moment most of this goes on in people's spare time. Since most ThoughtWorkers are in this business because they love it this does work. But I hope that one day we can afford to give people time during the working day to spend on this kind of R&D.
Some people criticize the open source world because of many projects that just fade away, never making it to a real version 1. If you think of them as R&D, then it makes sense that many, indeed most, projects don't make it into a real product. R&D is all about generating ideas and working with them. A successful R&D isn't measured by what proportion of their ideas turn into products, but rather by how many great products they generate and how great they are. Someone who starts three projects and turns them all into mediocre products isn't as good as someone who starts a dozen projects and turns only one of them into a killer app.