Saturday, 16 August 2008

A lengthy list of practical problems with shipping non-free software

This has been written since Ubuntu Brainstorm doesn't allow comments over a certain length, I want to cover this in as much depth as I can and I have a tendency to ramble :P

This is about non-free software (ie. proprietary, the cost doesn't matter) and the practical problems which would be encountered if it were shipped by default in a distribution. This does not go into the Free Software vs. proprietary software political arguments, it is all about the undeniable problems that come with non-free software.

The main software for discussion is codecs, the software which can encode and decode different types of file. Codecs are simply algorithms, they are nothing more. They contain no GUI, no player, nothing except the algorithm. An algorithm (like MP3) is just a set of steps to follow, as an example an algorithm to read a book would be something like:

Pick up book

Rotate so that front cover is facing you and the top is at the top

Lift the front cover at the edge furthest from the spine, being careful not to lift any pages

Turn the front cover 180 degrees until it is in the same plane as the pages yet on the opposite side of the spine

If there is any text on the inside of the page beneath the front cover:

- Find the end of the top line closest to the spine
- Read until the end closest to the edge of the book is reached
- If there is any more text on the page then move to the line below and repeat

Turn a single page from the right-hand-side to the left-hand-side of the spine in the same way as the front cover

If there is any text on the left page:

- Find the end of the top line closest to the edge of the book
- Read until the end closest to the spine is reached
- If there is any more text on the page then move to the line below and repeat

Repeat the steps for the previous page, then for this page, on every subsequent page until the end of the book is reached

Turn the back cover of the book onto the rest of the book

Put down the book

That's obviously a very crude algorithm as it doesn't take into account right-to-left languages, footnotes, etc. but it is a valid implementation of a book decoder. The copyright on the above text belongs to me, since I have written it, and will remain so for probably well over a hundred years. However, somebody can look at a book and make their own algorithm to read it without ever knowing that I've even written this blog post. My copyrights will not be infringed since their algorithm cannot be a derivitive of my work as they haven't even seen it.

This is how LAME (LAME Ain't an MP3 Encoder) was written. The developers didn't look at how anyone else had decoded the MP3 format, they didn't need to, and thus no copyright is infringed.

However, software patents allow me to patent the working of my algorithm, as long as it is novel and non-obvious to someone skilled in the field where it applies (the rigour for such things is often debatable though!).

The problem with patents on software is that it's very easy for someone to make software, but they could be treading all over other people's patents without ever know it!

No comments: