What is innovative software? Before you discovered it, you did not feel that you were
missing out; there was no obvious void. However, after you discover
it, its use becomes so second-nature that you wonder how you lived without it.
Practically every piece of software that you currently use was once an innovation -- Web browsers, text editors, calculators, instant messengers, media players. Today, use of these applications has become commonplace.
Pause for a minute and try to think of the most innovative software developments over the last couple of years. The only three I could think of were tabbed browsing, Linux LiveCDs with hardware auto-detection, and BitTorrent. One of those is not even really
innovative at all -- while I would not like to live without tabbed browsing, surely it is nothing more than an extension of MDI? LiveCDs are not truly innovative either, are they -- thin clients, anyone? Don't get me wrong -- they are starting a
mini-revolution, and they are more complicated than I'm giving them
credit for, and I am a great fan of them myself (*cough* MEPIS
*cough*) but I am hard pressed to call LiveCDs innovative.
If you ask me the same question about innovative hardware in the last few years, the task is simpler. Wireless networking, Bluetooth, portable music players, DVD writers, external hard drives, digital cameras.
"But," you cry, "wireless networking and Bluetooth were just
extensions of radio technology, DVD writers have always been around
(but not realistically available to consumers), external hard drives
are just derived from hard drives, and digital cameras are old news!"
True. However, you try take away my wireless networking gear, my portable music player, and any of the rest, and we are in for a fight. I could live without any of the aforementioned technologies -- but I would struggle. Having to trawl wires around my house, and not having Internet access during lectures (research purposes, of course), is simply too great an inconvenience. What do you mean I cannot listen to an
extensive catalogue of my favourite music, anywhere I go?
But take away my LiveCD? Big deal. Take away BitTorrent? There are other ways to download files. Take away my tabbed browsing? I can still open new links in the background.
What's the cause of this sorry state? It is more complicated than a simple lack of new ideas but -- far more worryingly -- a lack of motivated, innovative developers.
Which software areas have seen the biggest growth in the last few years?
Security: anti-virus, firewalls, and encryption. These fields have
grown massively as a result of more attacks. Many
decent software engineers, particularly the younger generation, would
rather achieve a modicum of fame (infamy?) and notoriety
by seeking attention in the form of destructive software (virii,
buffer exploits, password cracking) than creating valuable software.
This extends beyond simple network intrusion attempts and creation of
email worms but 'anti-social' software such as game exploits and
cheating software. The cat-and-mouse game played by Valve and other
anti-cheat software creators, and the bot (automation of
aim/movement) creators, typifies this attitude: in interviews many
bot developers have stated that they would be willing to help Valve,
and are swift to point out faults with Valve's designs -- which
indicates a deep (but perhaps narrow) understanding of the software
involved -- but prefer to seek their minute of fame by creating
Another problem that is becoming increasingly apparent is the copying of
features from rival products. Popular Linux distributions tend to
copy features (particularly those in the window managers) from
Windows; Microsoft copied alternative browsers with the blocking of
pop-up windows; Mozilla copied mouse gestures from Opera.
While there is nothing bad about implementing features that are
popular, valuable, or just clever, it is far easier for a developer to
copy an existing feature that solves a problem than it is to devise
a new, innovative solution to such a problem. And what
incentive is there for a developer to implement a new feature
when said developer knows that any good feature will be copied by his competitors?
For the sake of argument, let us say that I created a piece of truly
innovative software. What would I want to do with it? Should I make it freely
available on-line, with the source available, and encourage people to help me, or should I could keep the source to myself and try to sell it (or at least make it
'donationware' by offering people a chance to donate money if
they like it)?
The problem with the latter is that it is hard to get the software out in
the open if it costs money to use, and unless it is widely popular,
many people are unwilling to donate.
Problems with the former? Licensing. There are many available licenses; GNU
lists 20+, with free and non-free combined. It can be confusing to
know which license is appropriate. We read stories week on week about major developers changing licenses -- why? If the software is licensed, how does a
developer intend to make money from it? While this may not be a make-or-break issue for a new piece of software, it can still be time-consuming and cause problems unless handled
Without any real incentive, or reward, it
is hard to attract developers to commit time to projects. Most
developers who are working on well-known software projects are
required to work full-time jobs in addition to their project
contributions -- it's a pity that there are few full-time
project roles available. This is largely down to the extremely noble
(but arguably, stifling) notion of free software, which is beyond the
scope of this article.
The next generation of software engineers, who will be producing software in the next twenty-odd years, are simply not able to produce
innovative software. Thirty years ago, programming was a niche area,
an art, under constant evolution and requiring intellect and ability.
New software was really just that -- completely new. There was
money to be made and there were obvious needs to be fulfilled.
Nowadays, anyone can write a program. Why is this a bad thing? Well,
if I am going to spend three or four years at university studying
computer science, yet not be able to offer any significant
advantage to a major software development house compared to a simple
'code-monkey' who can churn out lots of code at a very low wage,
where is my incentive to do
software development? Sure, I may have been taught better programming
principles -- object-orientated programming, and the like -- but there's
nothing special that I can do. Why would I want to spend my
time doing nothing but churning out code, when there is better money to
be made in less monotonous fields?
Perhaps this attitude is a tad elitist, but when I look around at peers
studying computing at university level, there are many great minds
who no doubt have great ideas, yet they have little incentive
to actually go into software development. Business and finance offer
higher salaries, and higher scope for salary growth.
Part of me hopes that I am wrong, that there will be endless innovations
in the software world; but when I look around, I worry. Many great minds seem to have better things to do (their words, and mine) than go into software development. The attraction to be a hacker (in the traditional sense) is fading -- and unlike
my T-shirt, I don't think it has anything to do with too much
Jonathan Love is in his third year of an undergraduate degree at Imperial College, London (UK), studying Computing. He has run his own company, offering game server Linux hosting, for three years, and has been a keen Linux hobbyist for the last more than five years.