Archive for the ‘copyright’ Category

More riffing on software licenses

Wednesday, September 14th, 2011

Suppose you've written some software from scratch on your own time, using no resources from your employer. Suppose also that, having written it, you're proud of it and want to show it off to other people, perhaps get them to use it and give you feedback on it.

When doing this, the question invariably comes up of which software license you should publish it under, especially if other people would also like to contribute to it. If your aim is to eventually publish it as proprietary software you might choose a restrictive license like the Microsoft Reference Source License (Ms-RSL) which allows people to look at the source code but not to redistribute it. If your aim is to further the cause of eliminating all proprietary software you might choose a copyleft license like the GNU General Public License (GPL) which forbids use of the code in proprietary software. If your aim is to allow the software to end up running in as many places as possible, you might choose a permissive license like BSD.

Generally one will have multiple goals. For example:

  1. I want the software to be as useful as possible to its users.
  2. I want the software to do the greatest good for the greatest number of people. Note that this isn't the same as (1), since software can be useful to those running it without doing good to society as a whole - consider the case of the software controlling the machines at the cigarette factory.
  3. I want the software to be as widespread as possible to maximize my reputation.
  4. I want to make as much money as possible from the software, one way or another.

I think it's pretty difficult to predict at the start of a program's lifecycle which license is going to have which effect on which goals. Therefore the choice tends to be made on philosophical principles rather than sound science, such as "I believe the greatest good is done by making life as difficult as possible for developers of proprietary software" or "I believe that putting as few restrictions as possible on developers will make the software as useful as possible" or "I can maximize my chances of making money with this software by forbidding its distribution".

The philosophical principle which currently seems to make most sense to me is that goals 1, 3 and 4 are the important ones: the best way in the long term to make lots of money out of my personal programming projects is to make a good reputation for myself, which means getting my software running in as many places as possible, which means making it as useful as possible. Goal 2 would be nice but it's impossible to predict the long-term social good of any given action. The money spent on Microsoft software has done an enormous amount of good, for example, but that doesn't necessarily mean that all Free Software authors should drop what they are doing and contribute to proprietary software instead.

Suppose I write some piece of software X, and software developer Y takes this work and incorporates it into product Z, adding proprietary feature W and releasing the result as proprietary software. I haven't really lost anything in this situation - I (and the other users of X) can still do all the same things we could do before Y got involved (we can just pretend that product Z doesn't exist if we prefer to). Users who buy Z benefit because feature W is worth more to them than the cost they paid (both in money and reduced freedom) - they have one option that they didn't have before Y got involved. I (and the other users of X) benefit from publicity that Y creates around Z (especially if they don't try to hide the fact that Z is based on X) since that may itself draw more users to X (users who would not have otherwise heard about X and for whom W is not worth the cost).

As I see it there are a few disadvantages for copyleft licenses. One is that they are incompatible with existing non-copyleft software licenses (for example, one cannot take GNU code and use it in software that has an incompatible but still copyleft license). Another is that many companies have an aversion to copyleft licenses, eschewing such software entirely for the (not unfounded) fear that an accidental inclusion of copyleft software into their proprietary products will cause said products to become copyleft. In such cases the advantages for X above would never have happened.

Compatibility with other licenses is a big advantage for a permissive license - the BSD license is compatible with the GPL, for example (meaning you can take BSD code and release it under the GPL - the reverse is forbidden). Can we do better than the BSD license for compatibility? I think we can - even the BSD license includes some restrictions, such as the one that the warranty disclaimer must remain in place. I don't really see the advantage of warranty disclaimers - they seem like a CYA piece of legalese which doesn't actually do anything except take up space in licenses. I'm not a lawyer, but has anybody ever been sued because free software they wrote misbehaved and didn't have a warranty disclaimer? I doubt it - it seems like we can't even prosecute malware authors, who not only don't disclaim warranty but write software that's actively harmful.

My preferred software license would therefore be the most permissive one possible - essentially equivalent to not being copyrighted at all (same as "public domain" in many places). This state of affairs is compatible with any license that a third party chooses to use when redistributing the software. Maximum compatibility means greatest usefulness. Now, not all contributors to my software necessarily feel the same way, and that's okay - if Richard Stallman wants to contribute to my software but only on condition that his changes are GPL, that's okay - he can just make a GPL fork of my software and contribute to it. Others might contribute to my fork (if they share my views) or to the GPL fork (if they share Stallman's). One could even have a change-tracking system which would keep track of the license associated with each change, and therefore be able to tell you which license you can distribute the software under, if you include changes A, B and C. Forks could then compete on the merits of the resulting software - i.e. if one license tends to get more and better patches than another, its quality will rise and it will tend to be the one that gets used, so further patches will build on it and use the same license. If one particular license causes the software to be less useful, that license should die out. It would be an interesting ecosystem experiment to do. My suspicion is that the root "public domain"-like license would tend to be win more often than not because I would expect that most programmers would think the same way I do, preferring to get their patch into all license forks rather than just one. Also, restrictions can always be added in the future but removing them is much more difficult.

Downsides of copyleft

Tuesday, September 13th, 2011

As well as being not invulnerable and somewhat unnecessary, copyleft licenses may also be at least a little bit harmful to the software they are protected by, at least compared to permissive licenses.

The trouble with Free Software licenses (especially restrictive ones) is that they have a tendency to be incompatible with other licenses (even other Free Software licenses). Consider the sad case of the GCC manuals which underwent discussion on the GCC developers mailing list a while back. GCC is licensed under the GPLv3, whilst the documentation is licensed under the GFDL. Both of these are Free Software licenses, but because they contain slightly different restrictions, they are mutually incompatible - you can't take GCC source code and copy it into the GCC manual, nor can you take parts of the GCC manual and copy them into the source code. This means that the technique of literate programming is impossible - documentation can't be automatically generated from the code.

This could be solved if there was one single copyleft license that was used for everything, but I can't see that happening if the GNU project can't even standardize on a single license for its own projects.

It's important to note that these problems are caused by the restrictions imposed by the license, not the freedoms it guarantees - the same problems would occur with proprietary software, if the corresponding situation ever occurred.

Benefits of copyleft without copyleft

Monday, September 12th, 2011

Yesterday I showed that copyleft is not invulnerable. Today I will show that it is also (at least somewhat) unnecessary.

Let's again suppose that Microsoft wants to make a proprietary MS-GCC. They make version 1 (based on GCC 4.6.1, say) and it all works out great. But then GCC 4.6.2 becomes available and the proprietary patches don't work with the latest version any more. Microsoft wants to take advantages of the changes in 4.6.2 (otherwise MS-GCC will look bad compared to the latest FSF-GCC). So they re-do their patches. Each time a new GCC becomes available, Microsoft has some work to do to keep up.

It costs Microsoft money to keep doing this, so they look for an alternative. One such alternative is to assign copyright of these patches to the Free Software Foundation and contribute them to FSF-GCC. This might be a bit more work than just updating the patches, but it only needs to be done once. Then, further versions of GCC will include the Microsoft patches without any additional work on Microsoft's part.

This does, of course, mean that those proprietary changes become Free Software. That might not be such a big deal - chances are that if MS-GCC was really that much more useful than GCC, the equivalent functionality would be duplicated by GCC developers anyway (especially now that they know it's possible and useful).

So the "carrot" part exists independently of the "stick" part (the GPL) - even without any threat of a copyright violation lawsuit, there are still reasons to contribute your changes.

Copyleft loophole

Sunday, September 11th, 2011

A while back I showed that it is possible to work around the anti-Tivoization provision of GPLv3. I've since realized that the GPL itself has a similar loophole.

The entire thing is predicated on the idea that if you change a program, you've created a "derived work" which therefore falls under the same copyright protection as the original. But is a change necessarily a derived work? If it doesn't include any of the original program, I don't think it necessarily would be if the change was distributed as a delta from the original. Normally a diff file says things like "in file x, look for the line that contains y and change it to z". Because this file will contain the line "y" (and even the filename "x", if it could be considered a creative work) it is a derived work of the original program. But one were to use a diff format that says "in the third file, change line 327 to z" that would contain no copyrighted information from the original, and could be distributed without restriction. There really isn't any difference between a code change and "mere aggregation".

What does this mean? Suppose you're Microsoft and you want to include GCC in Windows, modified with some proprietary algorithms and you don't want to release the source code. It turns out that this can be done. All Microsoft would have to do is include in the installer some code that will download the source (or binary) from a known location (perhaps from GNU servers, or a trusted third party's servers) patch it and (if necessary) compile it. Hey presto, there's the MS-GCC binary. The patch could be in the form of obfuscated code, object files or even (with some difficulty) binary deltas as long as care was taken to ensure none of the GNU-copyrighted works ended up in the Microsoft-distributed patch. Microsoft would not be committing copyright violation since none of the things they actually distributed contained any GNU-copyrighted code. The end-user would not be committing copyright violation either since they aren't distributing the software.

Essentially, with this hack, we've shown that the GPL is essentially equivalent to a BSD license. This isn't something that can be fixed by changing the license - it's a fundamental fact of copyright law.

The reason people don't do this is because it's more convenient to just release changes under GPL (so that a compiled binary of the aggregate can be released) than go through this hacky patching process. So it doesn't mean that copyleft isn't worth doing - in fact, I have heard it said that there are important parts of gcc which would never have been contributed if their authors' hands were not forced by the GPL.

GPL v3 loophole

Thursday, July 31st, 2008

For the most part I like the v3 GPL - it makes some things clearer and closes a few loopholes that allow people to violate the spirit of GPLv2 while sticking to the letter of it.

The one part I don't like is the anti-Tivoization clause. Not because I think it's draconian, but because I think that it is ineffective. Suppose you are Tivo and you want your users to only be able to use your signed version of some particular piece of GPLv3 software on it. All you have to do is split into two companies (Tivo Hardware and Tivo Software).

Tivo Hardware doesn't distribute any GPLv3 code at all - it just ships boxes which download software from some internet site, check that it is signed correctly and then install it. Tivo Hardware is therefore not bound by GPLv3. Tivo Software just modifies GPLv3 software they way they want to, signs it it with some private key and then uploads to some internet site (the same one the Tivo boxes happen to download from). Tivo Software are not "conveying an object code with or specifically for use in a User Product", they're just distributing signed code as many (if not all) GNU/Linux distributions do. That it happens to be the same key that Tivo Hardware boxes accept is irrelevant - that's not Tivo Software's fault, Tivo Hardware could do that with anyone's public key.

If there was a way that the Tivoization clause could work, someone could really mess with the FSF by releasing a piece of hardware that didn't include any GNU software but would only run GNU software signed by the FSF.

Given that this clause is so easily circumvented it might as well not be there to simplify the license. While I appreciate what the FSF are trying to do with this clause I don't think there is any way to make it work reliably without being overly draconian. The "distribution to business" compromise is also weird and could possibly be thought of as a "code smell".

The other minor gripe I have with GPLv3 is that it is much longer and more difficult to understand than GPLv2. I guess that's an inevitable (and unfortunate) consequence of making it more lawyer-proof, though.

Copyrighting public domain information

Friday, May 16th, 2008

Some people seem be confused about copyright and public domain, thinking things like:

  1. I used some public domain code in my program, so I have to release it as public domain as well
  2. I should be able to take some public domain code, add my own copyright to it and then prevent anyone else from using the public domain version
  3. I need a new law passed so that I can copyright this list of facts I compiled.

These are all wrong. Public domain isn't a copyright license like the GPL - it's just the absence of copyright, meaning that you can do what you like with it.

There's nothing stopping anyone from taking copyright-expired works of arts or lists of facts and copyrighting them, but such a copyright would be completely useless because it couldn't be enforced - if you sue someone for violating your copyright on that work they have an iron-clad defence - they can just say "my work is based on the public domain version, not your version" (in the case of copyright-expired works) or "I compiled my own list of facts which happens to be the same as yours because both are based on the same reality" (in the case of the phone book example) and you would not be able to prove that they had referred to your copyrighted work.

No new law is necessary because there's an easy workaround - just change something slightly to make it a new creative work - add a fake name to your phone book or change a few words in that old story. Then not only do you have a perfectly good legal case against anyone who copies your work, you also have a way to prove it (their copy will also have your changes). And you won't be "removing" anything from the public domain to boot. Sure you probably can't make much money by taking public domain works, changing something and then releasing a copyrighted version, but that's seems quite reasonable to me because you haven't actually contributed much (if anything).

I understand that map makers have used this technique in the past - changing the position of roads slightly or adding features to the map that don't exist in reality in order to make their maps copyrightable "creative works" and to enable them to track down counterfeiters.

Three laws of robotics and DRM

Thursday, March 30th, 2006

I think one reason I find Digital Rights Management (DRM) reprehensible is that it violates the three laws of robotics as described by Asimov. While these laws were conceived with humanoid robots in mind, they are just as applicable to non-humanoid robots and almost as applicable to robots without bodies (computers). For those unfamiliar with the concept, the three laws are as follows:

  1. A robot may not harm a human being, or, through inaction, allow a human being to come to harm.
  2. A robot must obey the orders given to it by human beings, except where such orders would conflict with the First Law.
  3. A robot must protect its own existence, as long as such protection does not conflict with the First or Second Law.

These laws have the consequences:

  • A robot cannot be used as a weapon
  • A robot can be ordered to destroy itself if necessary
  • A robot will sacrifice itself to protect human beings

Now, the first law doesn't really apply to computers (to kill someone or fail to take action that would save someone's life, a computer would have to be connected to some device that has one of those capabilities, which would make it a robot).

The problem with DRM is that your computer won't do what you tell it anymore - the laws have effectively been changed to:

  1. A computer cannot be used to do anything with copyrighted information beyond what the copyright holder explicitly permits
  2. A computer must obey the orders given to it by human beings, except where such orders would conflict with the First Law.
  3. A computer must protect its own existence, as long as such protection does not conflict with the First or Second Law.

These modified laws have the consequences:

  • A computer cannot be used to infringe copyrights
  • A computer can be ordered to destroy itself if necessary
  • A computer will destroy itself to protect somebody else's copyrights

Effectively, they mean that your computer is not your own anymore - it will do the bidding of copyright holders over and above the bidding of its owners.

A computer system which includes DRM is more like a gun than a computer, not in the sense that it can be used to kill people, but in the sense that it doesn't follow the original 3 laws. In the case of a gun, the laws would be more like:

  1. A gun must obey the orders given to it by human beings.
  2. A gun may not harm a human being, or, through inaction, allow a human being to come to harm, except where this would conflict with the First Law.

This has the fairly obvious consequence that a gun can be used to kill people.

Perhaps I wouldn't have such a beef with DRM if it were marketed honestly and paid for by those who effectively "own" it - the copyright holders. I guess having a machine in my house that enforced copyright protections on the data it contained and prevented me from tampering with it wouldn't be so bad if it was rented instead of sold and the artificial limitations were clear from the start. A gun is sold for a particular purpose and nobody is trying to make it out to be something it isn't, but unfortunately today's DRM systems are marketed in such a way as to bring as little attention as possible to the fact that the hardware you're buying is designed to prevent you from doing some things you might very well want to do.

What Colour are your bits?

Saturday, November 5th, 2005

Sorry for the lack of posts lately. I have a number of things on my backlog but they're in various states of incompleteness. Maybe tomorrow I'll find some time to finish some of them.

This is a really good essay about why computer scientists and lawyers will never quite see eye to eye and a very good way of thinking about things such as digital rights management and cryptography. The
follow up essay is a good read too.

Legalese hall of shame

Saturday, June 2nd, 2001

Don't you just hate software licenses? Not only are they appalling examples of use of the English language, but more often than not they are downright hostile as well as being just plain difficult to read. This is particularly annoying when you "have to read and agree to this license" before installing the software - quite often you feel like you have to hire a lawyer before continuing the installation procedure, and let's face it - most of us just don't bother - we assume the license doesn't say anything too nasty and agree to it without reading it. I hope this page will start a meme which changes this deplorable state of affairs. I intend to list on this page the top ten best and the top ten worst software licences, according to the scoring system outlined below.

I haven't scored any licenses yet, but if you'd like to do one, please send the name of the license, the company which created it, the name of the software product it covers and the score to me at

Legalese hall of shame - scoring system

  • 1 point for each occurence of any of the following legal jargon words or phrases:
    • notwithstanding
    • limitation
    • limited
    • including, but not limited to
    • may not
    • must not
    • authorized [or authorised]
    • entity
    • without prejudice
    • void
    • exclusive [or exclusively]
    • inclusive [or inclusively]
  • 1 point for each word in CAPITAL LETTERS, not including acronyms. As we all know, words in capital letters really *really* have to be obeyed, much like the difference between a "dare" and a "double dare".
  • 2 points for each term "defined" by the license
    • +2 extra points if the definition of the term is completely obvious to a non-lawyer without the definition
      • +2 extra points if you have to think to make sure that the definition means what you think it means.
    • +5 extra points if the term isn't used anywhere else in the license
  • 5 points for each misspelt word or misused punctuation mark.
  • 5 points for each use of the passive voice (a grammar checker will help here).
  • 5 points for each sentence longer than 50 words.
  • 10 points for each sentence which does not make sense in the language the license is written in.
  • 10 points for each of the following rights the license tries to take away from you:
    • the right not to have your email address used for unsolicited commercial email
    • the right to rent something
    • the right to lease something
    • the right to lend something
    • the right to borrow something
    • the right to time-shift or space-shift something
    • the right to archive something
    • the right to resell something
  • 10 (ten) points for each time a number is used in both numeric and longhand versions, e.g. "90 (ninety)" or "thirty (30)" (like that's supposed to make it clearer, or "more legal" or something).
  • 10 points for each of the following:
    • a premium rate telephone number
    • a telephone number in a different country to the country you are in, or in which you bought the software
    • a telephone number but no email address
    • a postal address but no email address
  • 10 points if you are told that by doing something you agree to the terms of the license (this always reminds me of childhood games involving writing an insult on a piece of paper and writing after it "if destroyed true").
  • 20 points if you paid for something, and the license claims it doesn't have to work.
  • 20 points if the license tries to take away your right to reverse-engineer anything.
    • +20 extra points if there's no "except to the extent that such activity is expressly permitted" (or equivalent) clause.
  • 20 points if the license has more than one language on the same page.
  • 50 points if the license is longer (in bytes) than the content it protects.
  • 50 points if you found a way to access the content without even seeing the license, let alone "agreeing" to it (implicitly or explicity).
  • 50 points if the license agreement itself is explicitly copyrighted.
  • -10 points for each attempt at humour
    • -10 extra points if it's actually funny

The future of music distribution

Wednesday, July 12th, 2000

I remember the first time I heard about MP3 - it was from a purely technical point of view. A friend was telling me about this new sound format with terrific compression ratios and how it used psychoacoustical techniques to achieve this compression with no loss noticeable to the human ear and about how it could be played back with a reasonably modest PC. Remember, when reading this essay, that although I am talking mostly about MP3, that it is a just a format, not a way of life - MP3s can be used quite legally and any other music format can be used for piracy in just the same way (MP3 is just a particularly convenient, hence popular, hence controversial one).

What he didn't tell me was the enormous social implications which would be brought about by this invention. To be fair, back then few people had heard of it, fewer still had the equipment to play it back and it probably wasn't an issue. But less than 2 years later, I myself have the equipment to make, play, obtain and distribute MP3s. I have an incredible music system in front of me. If I think of a song I want to hear, and I can remember its name (or even just some of the lyrics) I can obtain a near CD quality copy of the song in minutes at the touch of a button, for free, and from the comfort of my own room.

But there are two tiny problems with this musical utopia. It is illegal, and it is immoral. I shall ignore the fact that it is illegal and concentrate on the far more important moral aspect.

The main problem is that if I go to one of the many music shops in Cambridge and buy a CD containing a song I want to hear, the artist who recorded it gets paid some money, whilst if I download the song from the net or make an MP3 from a friend's copy of the CD, that artist is paid nothing.

Artists have to eat. Some die-hard campaigners for free music will claim that any artist worth their salt isn't in it for the money, but for the sheer love of music and of performing it, and for making their fans happy. To a certain extent, this is true, but the fact remains that they have to make a living out of it, or they'll have to find something else to do, and chances are that that career won't leave enough time for making the music we love to hear.

There is also the problem of ensuring that the artist's popularity is recognised. When I buy a CD that purchase is registered in the sales charts for that week. Musicians whose works are popular are kept on by the record companies and encouraged to make more records. Musicians whose music nobody buys are not invited to make any more recordings (even if their music is very popular to download over the internet).

A good way to judge whether something is immoral or not is to imagine what the world would be like if everybody did that thing (incidentally, that's also a good way to decide what should be legal and what should be illegal, but laws are just another form of moral code - one which is forced upon us and enforced by the judicial system). If everybody downloaded MP3s instead of buying CDs, then all the artists would starve to death and nobody could afford to make music anymore (okay, deeply oversimplified picture but you get the idea).

I buy many more CDs now than I did before I started downloading MP3s. There are several reasons for this. One is to save my poor overloaded hard disk from cracking under the strain of all that music. Another (probably lesser, if I'm honest - practical considerations all too often seem to come first) reason is to support those that make the music I love. I've discovered a lot of music through listening to MP3s that I might otherwise never have heard. If I find I have many MP3s by the same artist I try to find an album which has as many as possible of those songs on it and buy that album.

So perhaps everyone should be free to download as much music as they like, but they should still buy the occasional album to keep the artists happy. The artists should see the free music as a promotional tool, not as a threat to their livelihoods. An ideal situation, right?

Well, no, not perfect, because albums are a very clumsy way to buy and listen to music when you've seen what MP3s are capable of (and, by the time you reach the end of this essay, you should understand this). Let's leave aside for the moment the fact that not everyone is as conscientious as I am and that in all probability most artists in the "free music" society wouldn't make as much money as they do in this one.

On any given album in my CD collection, there are some songs I like more than others. Some albums have a higher proportion of songs on that I like, and some have only one or two that I'd listen to by choice. I've never come across an album where I like all the tracks the same. But the way I tend to listen to albums is to just stick one in the CD player and press play, and then when it finishes change it for another. I listen to all the tracks the same number of times, even though I prefer some to others. Of course, I could change CDs after every track, but it's too much effort, particularly since I tend to listen to music whilst doing other things. I could just skip the occasional track but then I'd have to change CDs more often. Also, unless you have a shuffle feature on your CD player you always hear the songs in the same order, which can get boring.

When I listen to my MP3 collection I shuffle the whole thing into random order and play it all the way through. I can skip any tracks I feel like skipping and the list will still take me days to get through. Since I've hand picked every song, I generally get higher quality music (i.e. a greater percentage of songs that I like) when I'm listening to my MP3 collection.

What I'd like from an ideal MP3 player would be for all the tracks to be weighted, and for it to pick one at random that I haven't heard too recently. If I get bored of a track I should be able to say "play this one a bit less often", whilst if I hear a great song that I haven't heard for a while, I should be able to say "play this one a bit more often". If I really get annoyed with a song I should be able to say "never play this song again unless I specifically ask for it" (these commands will henceforth be referred to as "voting for" a song). I'd have a continuous stream of music much like I get on the radio, but tuned to my specific tastes, and without those annoying DJs (apologies to any DJs reading - I don't hate quite *all* of you...)

The system could be further refined by telling the computer what sort of mood you're in. There will be some songs that you like whilst you're in one mood and some songs that you like whilst you're in another (it would get to know this by which songs you voted for whilst in which mood). Then it can use a different set of weightings depending on your mood. You could even take into account that some songs will change your mood, so you could instruct the computer "play some music to cheer me up". Try doing that with your CD collection!

So lets suppose for a moment that we're in some sort of socialist utopia where the artists get all they want to eat and everybody listens to music like this. How does anybody ever get to hear any *new* songs? We need some sort of infrastructure in place whereby new songs can get into the system. Well, you could get told by your friend about this great new song he heard recently, but that's a bit hit and miss, especially since your friends might not share your taste in music. You could listen to the radio, but then you might end up listening to stuff you don't like (plus, of course, all the time you're not listening to your own personal music collection you're not refining your preferences).

The answer is really fairly simple if you think about it. All it requires is a very slight modification to the program. In this ideal society, everyone has, of course, a permanent high-speed connection to the internet. In fact, all this music is probably being streamed from a server somewhere to save you having to lug around gigabytes of storage in your personal stereo. So all you need to do is to instruct the server to occasionally play you a track you haven't heard before, based on the songs liked by other people that like the same songs as you. When the server decides that you should hear something new, it looks at somebody else's music collection, collects a list of songs that they like you haven't heard before, decides how much their tastes overlap with yours, weights the list by this "overlap coefficient" and by how much they like these songs, repeat for lots of people and pick the song which comes out with the highest score (you could take your mood and the moods of these other people into account as well). It then plays you the song and you can vote on it. If you're an adventurous listener, you might instruct the computer to find new songs often, if not, you might tell it to do so only rarely.

New songs get into the system because everyone uses it, even the artists who are recording these new songs. The artist just tells the computer that she likes the new song she's recorded, and soon it's being recommended to people who like the other songs she likes (including those she's made). The computer ought to take into account how many times a particular song has been heard to give new songs a chance to spread.

It will be easy to generate accurate statistics about how popular any given song or artist is - just add up the votes for each song. People can choose to listen to the most popular songs if they want to. The system could also take into account different genres (although, of course, since a song rarely fits into any given genre, it will probably have weightings in many different genre categories).

Finally, if there are two people in the room, the computer will be able to pick songs that both people like. Even with a room full of people, all with different moods and personal preferences, the computer should be able to pick a song that at least most of the people there will like. If you want to meet people with the same taste in music as you, you could just go to a place which is playing music that you like and meet the people there. Or you could be even more direct about it and ask the computer to introduce you to (or get the email address of) someone who has the same taste in music as you. Give the computer a bit more personal information about yourself and you can use your MP3 player as a dating agency!

There's still this question of money. The artists still have to eat. Well, I don't know about you but I'd certainly be prepared to pay quite a lot for that service. I have bought (or been given) about 60 albums in the 6 years or so since I started buying CDs. That's at least about £100 worth of CDs a year. If this service is as good as it ought to be I need never buy a CD again, so I'd be quite prepared to pay that much for the service. However, since the overheads are so much lower (there are no CDs to make and artists won't need to employ a record company to promote them) the artists will be able to make just as much money with us spending much less on our music.

There are several payment systems which could be used. There could be a fixed annual sum (as with TV licences in Britain), you could pay by the track, or by the minute that you spend listening to music. You could even pay nothing yourself and let the computer play adverts to you instead. You could vote for and against adverts just as you do with music tracks so advertisers could find out which adverts you like and which just get on your nerves (the "never play this again" button, applied to adverts, would be a fantastic tool for giving the advertisers some incentive to make their adverts less annoying). The mood system could also be applied to adverts.

There are many other ideas I've had for this that I haven't covered - choosing the right music for the occasion, for example - you could say to the computer "I need some music for a party. Here's the list of people who will be there and I want to get them dancing." or "I've just brought this girl back to my room for coffee and I need some romantic music now!". Or the fact that there might be two songs you like but you wouldn't want to play one after the other. Or that some people like to listen to entire albums, with the tracks in the order the artist put them in. Or the new generation of personal stereos which contain wireless internet connections for the purpose of listening to this music, buttons for voting, changing your mood, etc, maybe a screen to display lyrics, images or videos...

Of course, you can still download the music so you don't have to pay or listen to adverts in order to listen to it if you wanted to (it's impossible to stop you doing so - something that I hope will soon be realised by those who are trying to pedal such technologies as the so called "secure digital music") but with all the extra value added by listening to your own personalised stream, I think few would want to.

I don't doubt this will happen, but a big question is how. Here are some possible ways it could happen. The reality will probably be somewhere between these extremes.

The first way starts off with the program just being a player for your own MP3s, not an MP3 exchange program. As list exchange starts to happen, bands that want to make their music available do so, in exchange for subscription fees (which are very small at this stage). Perhaps they also sell some CDs. Then, as it becomes more popular, the big record companies want a slice of the huge amount of money which is being made, and decide to release their music to the system (presumably having discovered that SDMI doesn't work). The process will happen gradually, perhaps just a few (maybe crippled) songs at first, from a few artists signed to a few record companies, but hopefully it will take off so that all the back catalogues eventually get put on as well and the streaming can really start to take off.

If the program starts to take on some of the features of Napster or Gnutella and exchange information which allows people to get in touch with each other and exchange songs if each has music the other would like, it could get completely out of the record companies control. Anarchists will like this bit - the next thing that happens is that it becomes really popular so no-one buys CDs anymore (well, maybe one person to get the songs onto the system in the first place). The record companies quickly go out of business and no-one can do anything about it. The problem with this scenario is that when the record companies collapse, talented musicians might stop making music because they know they won't be able to make any money from it. When can the system start charging? As soon as they do, a free clone will spring up and we'll be back to square one.

As you can see, the digital music distribution has the potential to not only completely revolutionise the way we listen to music, but to completely revolutionise society itself. I think it will be for the better, but if you disagree, you can always do it the old fashioned way - I'm sure it will take quite some time for it to disappear.