The Importance of Transparency
I know some people who read this can’t be arsed with the technical
posts, but I do use this blog to tell the world, including my friends,
what I’m up to, so please bear with me :)
People > Data
> Code > Hardware
That sequence represents two things.
Firstly, if those are treated as arrows, it shows how computer programs
are generally used. A person inputs some data and the code does
something with the data by running on the hardware. Another way of
looking at it is as an inequality. People are more than data, data are
more than code and code is more than hardware.
Hardware is a
lump of plastic, silicon, germanium, steel, etc. It only exists to run
code, therefore code > hardware.
Code only exists to
manipulate data, whether those data are numbers in a calculation, images
to be displayed, music to be played, messages to be sent, etc. Therefore
data > code.
Data is only kept around because it is of use
to people. Despite our best efforts, hardware and software cannot
appreciate the humour of a LOLCAT image. Therefore people >
data.
This relationship can be seen in many areas. If I have
the most awesome server ever, nobody gives a crap if my Web site is
crap. Google’s search engine started life on incredibly underpowered,
unreliable hardware, but nobody noticed because the code was redundant
and reliable. Mugshot.org may be coded better than Myspace.com, but
nobody uses Mugshot and there are far more data in
Myspace.
Hardware doesn’t matter, so as much as possible
should be as cross-platform as possible. I have Linux running on my
desktops, my laptops and my ’phone. Windows will only run on x86 and
x86-64 machines, which means no phones, no PDAs and very few embedded
devices like set-top boxes and games consoles. If code is cross-platform
then users don’t need to give a shit about hardware, which makes life a
hell of a lot easier.
Code doesn’t matter as much as data, so
as much as possible should be in standardised, implementable, documented
formats. The spreadsheets I write in OpenOffice.org also work fine in
Gnumeric and have live copies saved on Google Spreadsheets. Spreadsheets
made in Microsoft Office 2007 can only be opened in Microsoft Office
2007, since everyone else’s attempts at compatibility are flawed. If
data is openly standardised then users don’t need to give a shit about
software, which makes life a hell of a lot easier.
This just
leaves people and data, which are the only things that are important
(code and hardware are just tools used by people to manipulate
data).
Using the examples above, I can save a spreadsheet on
my desktop and access it from anywhere in the world via Google
Spreadsheets in the browser on my phone. The proprietary alternative is
to only be able to use Microsoft Office 2007, which requires Microsoft
Windows, which requires x86/64 hardware. A very cosy position to be in
for Microsoft, but for the vast majority of the world who are not
Microsoft employees, why give up so much? This isn’t just a feature
argument either, since Microsoft could make a browser-based spreadsheet
system. The argument is WHY DO I HAVE TO WAIT FOR MICROSOFT? If you hand
someone the keys to your data, you should expect to be taken for a very
long ride, at the end of which you might not even have that data any
more.
The same goes for Facebook and other proprietary
applications. (Free Software doesn’t always use standard formats, but
the formats are at least documented to some small degree in the code.
Proprietary apps give you no code.)
END COMMUNICATION