Hi,
Antti wrote:It is hard to believe that "all software should be free" really works. Now that we have the enemy, proprietary software, it is easy for few high-profile free software projects to stick out. They are good and charitable alternatives against something not-so-good. It is clear that competition will lead to better software and now free software projects mainly compete with proprietary software. If this competition disappeared, it would confuse things.
In general "software is truly free" means programmers can't be paid for their work, which normally means programmers only want to do the fun parts and the software ends up low quality (unfinished, buggy, undocumented, etc).
This should not be confused with "software is donation-ware", which isn't quite free because you either pay by donation or pay with guilt. This can work well (it can encourage programmers to do the boring stuff and improve the quality, to increase the chance of donations). It can also fail miserably (donations often don't add up to enough).
Then there's "software is free (haha, not really)". This mostly happens when the price of developing the software is disguised by adding it onto the price something else (e.g. the hardware), so that you're paying for the software indirectly (e.g. by increased hardware costs). For a simple example, if you buy an Intel CPU then you'll pay a tiny amount extra to fund Linux development.
Then there's "software is free (to some people, but not for others)". In this case "others" are companies who pass the extra costs onto their customers. This results in everyone paying indirectly for the "free" software, regardless of whether they use the software or not. For a simple example, if you go to a shop and buy some milk, and that shop happens to use Redhat and pay for a service contract, then an extremely small fraction of what you paid for milk ends up being used for the service contract, which ends up paying for Linux development.
Then there's "free (for now, sucker)". In this case something is free until people become reliant on it, and then when enough people have taken the bait they're forced to pay. This is most effective when the cost of shifting to something else is higher than the new cost of the previously free software.
Next is "software is free (if you believe blatant lies)". This method is used a lot by multi-player online games that are actually share-ware and not free at all (where you get limited use of the software, but have to pay to unlock certain parts of the game). Of course share-ware is no different to "not free at all, with a restricted demo used for advertising purposes".
That brings me to the final version of "free", which is funded by advertisers. Whether or not this is good or bad depends on what you think of advertising, and how obvious the advertising is. A very obvious advert on the side of a web page is less bad than (e.g) a game that subtly inserts a specific brand of softdrink into the game world. In any case this isn't free at all (you pay by being subjected to adverts instead of paying with money, but you're still paying).
Of course it's possible (and common) for a mixture of some or all of these techniques to be used at the same time. For example; for Ubuntu; a lot of the software they're providing is written by unpaid programmers, some of the cost of development is covered by increased hardware costs, they use service contracts to get a bit more (the "Ubuntu Advantage" program), they've experimented with adverts (amazon adverts in unity's dash) and they also use
donations.
Now; if you think about it, proprietary software is the most honest (least deceptive) method of obtaining funds to pay developers; and free software either uses deceptive tricks to make you pay (and is therefore more "evil" than proprietary software) or exploits programmers by making them work for nothing (and is therefore more "evil" than proprietary software).
The problem with proprietary software is not that you pay for it - it's how development costs are divided. Ideally (ignoring markup/profit), if a piece of software will cost $12345 to develop and will be used by 12345 people, then each of those people should pay $1 before the software is written. In practice this can't work because you can't know how much the software will cost to develop or how many people will use the software beforehand, and normally development continues after it's released anyway. This means that you need investors to cover the cost of developing software (and those investors will want a return on their investment that justifies the risks), and you need to guess the number of people that will buy the software (and typically you take into account that some people are willing to pay more than others, and start with a higher price and then lower the price over time to extract the most cash from the most people).
Basically what I'm saying is that free software is evil, proprietary software is good; and companies that uses unfair tactics designed to extract the most profit are evil (regardless of whether their products are "free" or not); and these evil companies can make proprietary software seem evil even though it's good (in the same way that bananas are good, but they may seem evil if people are constantly trying to ram bananas up your nostrils). Sadly, almost all companies are "evil", so proprietary software seems evil even though it's not.
So, what is the least evil way of developing software (a way that doesn't involve exploiting programmers or deceiving consumers or trying to extract profit unfairly)? I don't think it really exists, but...
I'd suspect that the least evil way of developing software would begin by estimating a "minimum cost of development", then soliciting lots of small investors that want the software (and not a few large investors that want profit) until you've got enough to cover the minimum cost of development. Then (once the software is finished) you'd give the software to the original investors (they've already paid) and start selling it as proprietary software to other people (to recover the difference between "minimum cost of development" and "actual cost of development"). Finally, once the actual development costs are recovered (and not more), you'd release the software and its source code into the public domain so that anyone can use it for anything for free (including letting other people doing other projects take pieces of it or create "derived works" without expecting anything at all in return).
Cheers,
Brendan