|
|
|
|
Traditional
closed-source proprietary software licences are bad for software, the users
and society for all the perfectly valid reasons the
FSF give. Here's a summary of what I think
are the most important ones:
- Inefficient
Much work must be duplicated because existing implementations cannot
be easily reused. Furthermore, a programmer may find a bug in a
third-party library but will not be able to fix it directly without the
sources.
- No Quality
When the source for a program is not public, there can be no peer
review, no external feedback. It means programmers tend to write a hacked
temporary solution without thoughts of the code being reused in the
future.
- No right to evaluate
You wouldn't buy a car without giving it a test drive, so why buy some
software without evaluating it first? Many many developers have had to
spend 1000's on some third-party software, only to find out it's poorly
written or unsuitable.
- No interoperability
Getting one program to work with another is hard when you've no idea
what the protocols or formats each uses are. This encourages monopolies
and discourages innovation and overall of course makes software much less
useful than it should be.
Now "free" software (I use "free" rather than free to indicate liberty,
not price) has taken two approaches to solving this:
BSD and
GPL. BSD more or less
gives full freedom of use and reuse, so long as a statement of use is made
somewhere. GPL goes further and has a viral-like quality which does not
permit use of the GPLed code unless all other code is also GPLed.
Now I'm fine with "free" software. I think its ideology is honourable,
the concept pure and most importantly it's been a massive counterbalance to
the existing regime. However, I also have grave concerns about its
sustainability:
- "Free" software inhibits blue-sky innovation
Money can only be made from mature software, whatever the field.
Proprietary vendors use the profits from existing sales to finance the
development of new software. They get the workers obviously enough by
paying them.
However, new "free" software can only be created two ways: by enough
volunteers or by a suitable bespoke contract (eg; government grant). With
the first, there is a major problem because psychologically most people
won't donate their time on whacky unproven ideas. With the second, there
is always a strong bias in favour of achieving a fixed & limited goal, so
the possibilities for true radical innovation are low.
Proprietary vendors aren't much better for radical innovation in practice,
but over the course of twenty years it becomes important. Their small
allocation to really radical invention (via very blue-sky R&D) is a bet on
striking lucky against finding a niche in industry standards and it proves
beneficial in the long run. Also, when a company is on the rocks, it can
invest in very blue-sky projects as a means of saving itself and I can see
no equivalent in "free" software.
- "Free" software does not encourage entrepreneurism
Western capitalism and indeed much of its culture and society depends
on an innovation-based culture. If you want innovation to be generated,
you must decrease the risks and increase the rewards for success as much
as possible.
Now Richard
Stallman would disagree that the carrot and stick approach is best
here, but I would and the majority would too I think. The problem is
"free" software does not generate a lot of profit so the carrot is much
smaller. It is made further smaller again by the way anyone can take a
copy of your work and derive their own competing copy, although they must
make it under the GPL.
These are not short-term concerns. The success "free" software has had
against proprietary is amazing, but I think mostly only because proprietary
is so bad for everyone except the CEO's of certain US multinationals. If an
improved form of proprietary software were adopted, you could get most of
the benefits of "free" software without its accompanying disadvantages. Most
importantly, such a scheme must be self-sustainable in the long term.
Now among my critics, many will argue "free" software does innovate
widely. They would of course be quite correct, but I was speaking of
radical innovation ie; complete redesigns and rewrites from the
ground-up. To my knowledge, there is no successful ground-up redesign and
rewrite in the "free" software world that was not subsidised by a third
party (eg; ReiserFS by DARPA).
Furthermore, all non-subsidised radically innovative "free" software
projects such as GNU
Hurd have limped along because they can't attract enough programmers,
and this is a detriment to not only "free" software but software in general
as without competition, proprietary software has no reason to innovate
either.
So what's the alternative?
The alternative is to make software a form of IP implementation,
not IP design. The reason why most software is licensed and not sold
is because some decades ago US software corporations decided it'd be a good
idea if their software were IP design and thus more controllable. This was
possible because unlike any other form of IP, software is both the
design and the implementation, and rather go down the "it's
implementation" route they chose the design.
It gets worse: since 1980 the US legal system has permitted the patenting
of software. This is an incredibly stupid move which is terrible for
software. Software patents are one of the single most evil things to
happen to software and I cannot stress how much they need to be
repealed.
However "free" software has no answer for this other than to say
"software patents prevent 'free' software". Let me be clear: politicians
don't give a damn about "free" software except for what supporting it can
gain them. Given "free" software can't make campaign donations, it's already
missing a large chunk of what US software corporations can offer.
If we were to change software into IP implementation instead, what would
the consequences be:
- Software binaries are the same as software source
Is there really much difference between people giving illegal copies
of your program's source to each other rather than the binaries? Of course
you say, then people could modify your product and sell a better one. Well
exactly! - if your product isn't up to par, then everyone should have the
right to improve it so long as they pay you an appropriate royalty
A further consequence is that if you sell a binary, it must come
with optional source. You wouldn't buy a car whose engine you couldn't
tinker with, so why with software?
- Royalties are paid for the implementation, not the theory
And this is exactly how it should be. If you write 10,000 lines of
code and someone reuses 2,000 lines of it, you should get a royalty from
the full project. The software patent concept of having someone pay a
royalty for using a certain compression algorithm in the creation of their
software is dangerous because (a) algorithms are nothing without an
implementation and (b) it dissuades others from improving the algorithm.
Contrast with a patented pump. I can buy a certain pump off the patent
holder or licensee but during my work with it I realise I can improve the
design (which I could then patent without usually paying royalties for the
original design). The pump itself is like software, not the design for a
pump.
Also, there are some other peculiarities of software eg; its extremely
short life-cycle. In any other form of engineering, a twenty year patent is
usually sufficient because improvements work at that speed. Software can be
completely rewritten in only ten years and a major failing of traditional
proprietary software is that it does not encourage study.
Because of both these reasons, I suggest a five year fixed limit on
copyright ie; five years after public release, all source reverts to the
public domain where it can be reused and indeed relicensed. This single
feature would do a great deal to encourage innovation, reduce monopolies and
fix the interoperability problem.
The "Fair Use" Software Licence
(WARNING: This has not been checked by a legal expert, so have it checked
by one before using for your own software).
Explanatory comments are in italics.
This software was released to the public on <insert date of release
here>.
The price of this software on that date is <insert price here>. The
supplement payable for full sources of this software is <insert supplemental
price here>.
The contact for royalties, reuse and sales enquires is:
<insert name and address here, along with telephone and email address>
- This License applies to any piece of computer software (the "work")
which contains a notice placed by the copyright holder saying it may be
distributed under the terms of this "Fair Use" License. The "Program"
refers to any such piece of software and a "work based on the Program"
means either the Program itself or any derivative work under copyright
law: that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications. It also includes any translations
of the Program into another programming language and for the rest of this
licence translation is included without limitation in the term
"modification".
- This Licence refers to copying, distribution and modification of the
Program and nothing else. It does not cover the execution of the Program
nor the output of Program except where the output's contents constitute a
work based on the Program.
You optionally may offer a warranty with or without an extra price
supplement, or take the financial responsibility for incorrect operation
of the software.
- You are guaranteed the right to receive a full working copy of the
Program's source code with any purchase from its supplier for a supplement
to its original cost not exceeding 25% of the Program's original cost.
Where the binary version of the Program is distributed for free, the
charge for the source code may not exceed 50 euro. The ability to purchase
the sources post-purchase of a binary must exist for a minimum of five
years after its initial public release.
- You are guaranteed the right to modify your copy or copies of the
Program or any portion of it, thus forming a work based on the Program,
and copy and distribute such modifications or work under the terms of this
licence provided that you pay an appropriate royalty per copy distributed
which is to be negotiated with the copyright holder of the work (see
below).
- You are totally responsible for the collection and payment of
royalties payable as the result of the derivation from the Program ie;
those who purchase or modify your derived work must directly pay you or
your agent and you or your agent in turn must pay those from whose code
you derived your work according to the previously agreed royalty rate.
- In any redistribution of the Program's source, you must conspicuously
and appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and give any other recipients
of the Program a copy of this License along with the Program.
- When distributing modified copies of the Program, you must cause:
- The modified files to carry prominent notices stating that you
changed the files and the date of any change.
- Any work that you distribute or publish, that in whole or in part
contains or is derived from the Program or any part thereof, to be
licensed as a whole to all third parties under the terms of this same
License.
This replicates the "viral" nature of the GPL and the power it gives
is used below.
These requirements apply to the modified work as a whole. If there are
clearly identifiable sections of that work which are not derived from the
Program, then those sections can be distributed separately without
involving this licence. However when such sections are distributed with
the overall work derived from the Program, this Licence must be applied to
the whole of the distribution equally irrespective of who wrote it or
copyright licence.
- THIS SOFTWARE IS PROVIDED "AS IS"' AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR NEGLIGENCE
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
- This licence applies to the Program and works based on the Program. It
does not affect other works placed on the same storage or distribution
medium as the Program.
- The price for this software is that "per simultaneous user" ie; if one
user wishes to use the software on three different computers irrespective
of configuration then they may do so. If there are two simultaneous users
of the software on the same three computers, then two payments are
required.
This is to balance between home use, company use and bespoke use.
Whilst most benefiting residential users with no per-computer fee (see
below for more residential use exceptions), it catches companies in the
traditional manner.
"Irrespective of configuration" means irrespective of processor, chipset
or operating system where there is an implementation of the software
capable of running on that configuration. It is intended that the price is
to include all binaries capable of running on all supported configurations
within the same price.
This is because soon and for the future most new software will be
developed using portable libraries and thus porting will become changing a
compiler switch. It is to prevent users being exploited for using more
than one type of computer or operating system or indeed more than one
virtual machine running different operating systems on the same computer.
Where there is significant extra work required in altering the Program for
use on a different operating system, the vendor may charge up to an
additional 25% over the cost of an existing implementation for that
release only. However, in the next major version release, all
implementations shall be provided together for the same price.
If the vendor intends to discontinue support for an implementation for a
certain configuration, notice must be given publicly at least one major
revision release previously.
To prevent releasing a port for the 25% premium every product cycle.
- All software under this licence shall revert to the public domain
after a period of five (5) years after its date of public release which
has been listed above.
To vastly encourage reuse, study, interoperability and discourage
monopolies and closed standards.
- The royalty per distributed copy paid for the reuse of some or all of
the Program shall not exceed 90% of the price of the original Program as
listed above (or the price of the sources if the original Program was
free). This licence's main intent is to encourage code reuse, and as such
there is a distinction made between is-A and has-A reuse of the Program
(is-A and has-A are OO terms).
Is-A reuse is where most of the purpose of the original Program is present
in the modified Program eg; a new library extending an existing library or
say a CAD program with extra features. In this case, royalty per
distributed copy = (price of original Program as listed above, or the
source price if binary was free) * (% of real source[1] reused
against total real source in the original).
Has-A reuse is where part of the original Program is used as an internal
library by the modified Program eg; a routine to perform a FFT or a PNG
library internally used to process PNG's for some wider purpose. In this
case, royalty per distributed copy = (sale price after sales taxes) * 50%
* (% of real source[1] reused against total real source in
project). Where the project is made up of mixed programming languages,
weighting for languages will have to be employed.
[1]: Real source reused = the source code less comments, blank lines,
text, numbers, variable names, code names, non-human generated and
repeated fragments of code. White space and carriages returns insofar as
their minimal human-written and language-necessary usage remain.
It is intended that while an automated scanner can help with the
calculation of real source reused, negotiation will always form the
finally agreed figure, especially regarding the weighting per language
It's clearly biased for Has-A reuse and indeed this is the single point
where it becomes incompatible with the GPL (which prevents reuse of its
software outside itself).
- You may distribute a has-A modified copy of the Program without paying
any royalties mandated by this licence if you do not charge for it. It is
recommended everyone sets a price for the software even if you intend to
primarily distribute it for no charge as then reuse of your free code in
other projects which do charge will have the appropriate royalties paid
where they're due: to the creator of the software. For the truly
altruistic, they can go to charity or a worthy cause.
You can always set a price and then give it away for free. This might
not make sense, but you can equally do this in any other marketplace eg;
free gifts with another purchase. This is intended to promote bug fixing,
study, passing to friends, extra features, entrepreneurism and the ability
for software of little reuse value alone to become reusable through the
inclusion in a free library.
The has-A limitation is purely to prevent someone undermining software by
a competitor redistributing it for free, but not prevent inclusion of
competitive technology.
- You may distribute delta changes (ie; patches, diffs) which when
applied to the source of the Program produce an is-A modified copy of the
Program without paying a royalty. This is not applicable if the delta
changes contain any non-functionally modified code.
To permit users to bug-fix software they have bought and distribute the
fixes to other users without royalty. The last sentence ensures you cannot
include the entire source with say an extra tab in it in order to abuse
this clause.
- All documentation accompanying the Program may be freely copied
verbatim without change without fee.
I hate when documentation isn't publicly available. It should be, to
aid evaluation.
- If a royalty cannot be agreed upon between two parties, third-party
arbitration at a suitable arbitration facility will result (note, this
isn't legally enforced but it should be). If a request for setting
royalties is not answered within one month after repeated attempts by all
methods available (keep evidence of the attempts in case of contest), the
rights conferred in the rest of licence are still valid and one may
progress with the derivative work - however, at a later stage, the
copyright holder may request royalties to be set whereupon the normal
provisions of this licence apply. There is nothing any copyright holder
can do to prevent distribution under the terms of this licence but they
always have the right to be paid the royalties specified under this
licence. Since this licence is voluntary, it is expected no dirty tricks
like stalling tactics will be used.
To achieve the aims of this licence, to protect both rights owner and
customer. Some legal support would be wonderful for this as I'm not
entirely sure it's legally binding.
- Software patents are one of the worst things possible for computer
software - however if a company must patent software for defensive
purposes, then this permitted and indeed encouraged.
Under no circumstances shall a licensee prosecute software patent
infringement against a company or person which is not nor ever has sued
the user for software patent infringement. Doing so revokes the licence
for use of any software under this licence for that licensee.
Furthermore under no circumstances shall a licensee seek royalties for
held software patents off anyone except others requiring royalties off the
licensee for software patents.
Basically an ethical condition to discourage the aggressive use of
software patents. Under this, a company can change its ways and stop
aggressively using software patents and thus be able to use the licensed
software.
- Under no circumstances shall a user of this licence knowingly cause
the prosecution of private individuals for failure to pay royalties nor
negotiated a royalty contract resulting from private distribution among
personally known friends and colleagues on computers residing in
private residences. Doing so revokes the licence for use of any software
under this licence for that licensee. An employer remains liable for
royalties caused by use of this software on their work machines.
I don't agree with the persecution of private individuals for copyright
infraction and I furthermore think that in fact private personal
distribution actually helps software sales eg; Doom.
Some notes:
- The aim of this licence is for copyright holders of software to
voluntarily adopt what is best for the industry. Since adoption is
voluntary, I expect people not to abuse it eg; someone not permitting
someone else to reuse their code for any royalty. Hence I have left the
section on arbitration without detail.
- If the copyright holder issues this licence with a 100,000,000 price
but distributes both source and binaries for free, then effectively this
licence becomes the GPL with an effective but not absolute ban of reuse in
commercial code. If the copyright holder issues this licence with a 0
price then effectively this licence becomes a viral BSD licence.
- This licence is designed to maximise the reuse of software and
furthermore to make software packages more competitive. Now someone
writing a new superior protocol or even a perfect library implementing the
same protocol as some other library can win or lose depending on its
quality, price and suitability.
- The idea is to create a knowledge-based entrepreneurial environment
for software where different skilled practitioners compete to produce the
most technically perfect piece of reusable software.
- Many computer software engineers will recoil in horror at the thought
of the regime outlined above. However, I ask you, is it not worse to work
everyday in some company who makes a profit of two euro for every euro
they pay you? Wide adoption of this licence will decentralise software
production, so teams up to one hundred will become the maximum and
software companies worldwide will much more resemble the European norm.
- A failing of the GPL is addressed, in that all GPL code is effectively
unreusable by commercial entities. This I think wrong - this licence
permits free software to reuse for free, and if a commercial entity then
reuses the free software royalties return. This opens the previously
closed possibility of combined commercial and free software becoming
commercial again.
- Innovation will be greatly increased, as will cooperation on mutually
beneficial interoperability standards. A company could even integrate the
entire of a competitors solution within their own. Or a company could
produce an overly-large GUI-based application and someone else could
extract the core code making up perhaps 5% of the total to produce a rival
solution, perhaps with improved GUI or none at all (command-line only)
with a price discount!
- This is a major goal - to have more customisable software out there,
and thus to vastly increase customer choice. Since user interface code is
usually very expansive and dwarfs the rest of the program, there will be a
tendency to reduce code spent on user interfaces and thus improve user
interface handling techniques.
- Because of the viral nature of the licence, the original creator of
the software can inspect redistributed versions of their code for bug
fixes and new features, and reimplement them in their own product. I think
this fair.
- It is assumed that royalty management service companies will spring up
as so to remove the need to individually handle processing of royalties.
This will be somewhat similar to similar services for book or CD
publishers except tailored for the individual programmers a la IT
contractor financial services.
- The biggest problem I and I'm sure others will foresee is the
calculation of real source values. I have done some experiments and I
believe anything compiled can be computed reasonably accurately and with
difficulty of cooking the results (basically you analyse the assembler
output of the compiler, not the source itself). However interpreted
languages remain much harder though I feel not technically impossible.
|