My personal reflections after the conference focused on open source. Regular readers of this blog will be expecting the third instalment in the current series on the real-world business issues of SOA. However, it's the week before Christmas, so I will defer the heavy stuff until the New Year, and instead share with you some thoughts on what is happening at the leading edge of software production. And these thoughts are appropriate for the time of year, Christmas being a traditional time to take stock of how some things change and other things stay the same.
I am now aged 43, and have been working in the software industry for nearly 20 years. Many people who enter the industry as developers have moved on by this stage into less technically-oriented roles - consultancy, management, or writing, for example. In fact, I have played such roles myself for a long time now, but make sure also to periodically return to the coal face to refresh my development skills and actually build software, as I am doing at present. However, this is actually quite unusual - by their mid-forties, most people who started out by programming are no longer developing software in their daily work.
Further, a corollary of the youth of programmers is that they tend to take little account of such warnings, when issued by greybeards! This is healthy in some ways, but it is also worth remembering Santayana's famous words on how those who don't remember history are condemned to repeat it.
An interesting example of such cycles is the current stir around open source software. During the Javapolis conference I met and talked with various people engaged in producing and/or using open source software. And it was fascinating to hear not only their evangelical enthusiasm for open source, but also their concerns. These concerns centred around issues such as the following:
- Growing and retaining a developer team
- Growing and retaining a user base
- Maintaining code consistency and quality
- Preventing feature cherry-picking by competitors
- Monetizing products
- Retaining control over products
Sound familiar? There is nothing at all in the above list to differentiate open from closed source. All software vendors have these issues. And therefore, by association, so do their customers.
Many people seem to view open sourcing software as a solution in itself - both a solution for vendors (to gain a community) and a solution for customers (to lower costs). I don't see this happening. In every area of life, you get what you pay for, and enterprise software is no exception. Complex issues of software development and use don't magically go away - they just pop up in slightly different forms.
In fact, the discussions I had at Javapolis made me wonder even what it means to say software is "open source". Is it just about access to program code? Hardly. Enterprise customers of commercial software vendors have always been able to get hold of program source code if/when they need it, either by licensing it or by arranging for it to be held in escrow against the supplier going out of business. Further, most enterprise customers view access to the source of third party applications as a last-ditch option they hope and pray never to need.
So is it about price? Well, again no. Free software may well be closed source. Further, enterprises always have to pay for any software they use, if only in service costs - which have always been been far greater than license costs, as Eric Raymond pointed out so clearly in his seminal work on open source, "The Cathedral and the Bazaar".
How about licensing? A tricky one. There are many variants of open source license, and much debate. However, it is fair to say that most producers of commercially significant open source code are very careful about the license they use - and about the way in which their software is released into the marketplace. Of the concerns listed above, the number one (it seemed to me) was retaining control. Few people really want to let go of their baby, especially if you have invested serious time into it, and that baby is now worth serious money.
Finally, is it about a difference in the way software is written and/or released? Here again, I see no real difference any more. Most significant open source projects and commercial software packages are gravitating towards a halfway house between the agile coder's "release early, release often" mantra and the "seasonal release, periodic patch" approach characteristic of traditional closed source. It is in neither the supplier's nor the customer's interests to adopt either extreme. OK, you can download a nightly drop of Eclipse, but only the diehards will install and try using this for their daily work - and very few people indeed would do so with an unstable release of JBoss application server.
In fact, I would argue that what "open source" is (or was) truly about is the community model of development, in which people from outside the boundary of a single organization actively contribute to the application, and engage with the developers to test it. This model is what I now see breaking down. Most successful open source applications these days are entirely controlled by a single commercial vendor - Sun (Java), IBM (Eclipse), RedHat (JBoss), and so on. Nearly all, if not all, "committers" to such open source projects work for the company concerned. So how are such applications genuinely different from Windows or WebSphere?
I think we may be over halfway through a long-term cycle. The pendulum is already swinging back, away from open source and back towards more old-fashioned models of software production. It is quite possible that as we go forward, it will mean less and less to label a software application as "open source".
Just some seasonal reflections - no TAKE AWAY section this week! Your comments are welcome as always. And have a very Merry Christmas.