Yesterday I was fortunate enough to see Ross Gardler of OSSWatch (http://www.oss-watch.ac.uk) doing a presentation on Open Source, and how it applies to JISC projects.
OSS-Watch, in Ross's words, is not an avocacy group for Open Source, rather it seeks to educate and inform. Ross himself has very strong open source credentials. He's a member of the Apache Software Foundation; it was refreshing to hear some good, strong, reasoned arguments about open source, rather than the table thumping that I've encountered in the past.
I'm a bit awkward when it comes to Open Source software. I use Firefox and Thunderbird, I've got Mysql, tomcat, apache and all sorts of other bits running on the office server. We use mediawiki here too, for all things from marketing to recording useful bits of information discovered from the work that we do. I've used open source libraries as a software developer in the past too - anyone that's ever heard me rave about how wonderful Hibernate is will be aware of that. I'm not as hardcore as some of my other colleagues though - who tend to use Linux as a a desktop OS.
No, I'm awkward because I don't think the degree of "open-sourceness", is an indicator of anything really, other than the degree of "open-sourceness". I use firefox, not because it is open source, but because it is (in my opinion), the best tool for the job. For a long time I used Internet Explorer, but version 7 and myself just didn't agree, so I looked for something else. There's a lot of great open source stuff out there; there's some great proprietary stuff too - but there's also a lot of software of both varieties that isn't quite so great.
Now that we've got that aside, I'll look at the part of Ross's presentation that I thought was really good. I'll put my awkward stance on it as well though.
Ross presented on some open source tools that make development easier. Things like ant, the build tool; and junit, a unit testing rig. He also described source repositories, issue trackers, ticketing systems, installers. He described also how important it is to build a community around the software - to facilitate user engagement and feedback to and from developers.
Now, I am not arguing with any of that, it's all good.
My question though, is how much the degree of "open-sourceness" affects the above? I think the tools that Ross mentions are ones that all software development projects should use, be they proprietary projects or open source ones. Further, the tools are all fairly common - so there are open source versions like the ones that Ross (and I) use, but there are also ones that tend to come with the server versions of the various development products.
Every project, be it closed or open source, should use a source repository. Every project should do the nightly checkout and build. Every project should have an issue tracker. I don't think Ross would disagree with me either.
We also mentioned docmentation. Again, documentation is one of those things that both open source and proprietary types do with various degrees of success. Mysql has great documentation and its freely available, but some other projects have documentation thats only available if you pay for it. I'm not necessarily against that, as I realise that developers and documenters have to eat - but sometimes it can leave a sour taste in the mouth. Of course, with proprietary software I usually get the documentation as part of the licence; but no guarantee of quality. Great documentation comes from professional documenters - take a look at TechScribe (http://www.techscribe.co.uk)
Documentation, Testing, and Release Engineering are probably the areas that get skimped on when a software house or project has it's back up against the wall. So it's refreshing to see Ross bringing these out into the open on day one.
Ross also talked about building a community around the project. I think this is a thorny one. I've worked on projects that have stalled the moment the funding ran out - be they commissioned works from a software house, or funded projects from organisations such as JISC. The EU demands that a "sustainability plan" is in place.
I don't think it's that simple though. Communities tend to build because people have a common interest. They grow when the common interest appeals to outsiders. Genuine sustainability comes from having a solid business case. Why? Software Development costs money - pure and simple. For a software house, that money comes from sales; for funded project development, the payment is from taxation ultimately. Herein lies the problem - funding research is different from funding product development (and rightly too!). Funding Research is all about recognising that perhaps there isn't going to be anything sustainable at the end. Product Development is all about having sustainability in mind from day one.
I'm not convinced that building a community is easy, unless the problem being solved is one that is faced by a lot of other people - and that to me that is the differentiator. Don't get me wrong, I agree with Ross that having the community in place is an asset; but to get the sort of altruistic level of involvement that the model open source projects achieve; that is a tall order - if it's even possible. I reckon communituies form and grow organically rather than be something planned.
Of course, communities exist for Proprietary Products too - because communities tend to form wherever there is something successful.
Coming back to my original question, without a doubt, Ross hit the nail right on the head, and I know of more than one commercial company that could learn from the development practices that he was talking about. All in all great stuff - a very professional view on how to develop software - and perhaps something that the table bangers should focus on rather than... banging tables.
Wednesday, April 25, 2007
Subscribe to:
Post Comments (Atom)
1 comments:
Thanks for your comments Phil. You've prompted a new blog item from me (http://involve.jisc.ac.uk/wpmu/oss-watch/) which deals with sustainability generally.
However, your post also prompts a couple of comments...
You say "Ross presented on some open source tools that make development easier." I think you'll find that I only talked about classes of tools, I did not talk about specific implementations of tools. I, like you, don't care what people use as long as it does the job.
You also say "I'm not convinced that building a community is easy, unless the problem being solved is one that is faced by a lot of other people" - I agree it isn't easy. But not every project needs to do so, my message is that projects should create the infrastructure for community as part of their internal project management. It just makes project management and development easier.
Furthermore, all projects have a community whether they know it or not. Even the most blue sky of research projects need to consult with a wider set of stakeholders in order to understand the problem domain. That is their community.
Sure you can use a mail client to talk to those folk, but why not set up an archived mailing list and create a project memory of those consultations that can easily be searched, indexed, cross-referenced and distributed across team members.
A community does not only mean developers. In fact it starts with users and everyone has a user or two (of not why the hell are you doing it?)
---
Anecdotally, I had a consultation today with a project that is a number of weeks behind schedule because an open source toolkit they wanted to had not built a community infrastructure during initial development so there was no history of design decisions, svn logs, technical documentation, bug fixes or known bugs.
Why had this project not built this community structure? Probably because they thought there would be nobody external wanting to use their code - now they are spending (unpaid) time going over stuff that should be available in a community memory in the form of issue trackers, archives, commit logs etc.
My point being, the tools make the current developers life easier and allows a community to grow should there be a need. It's not about whether you expect there to be a community, it's about whether you are restricting a potential community.
Post a Comment