---
title: Two Wrongs Do Not Make A Right
---
Recently there was an Open Source iPhone application made called
[OpenClip](http://www.openclip.org/faq.php) which allows copy and paste
functionality to work between applications. Well, seems Apple didn't care for it
and in their latest firmware update they've [stopped it
working](http://ostatic.com/171724-blog/apples-2-1-update-shuts-down-openclip-copy-and-paste).
To me that just means a bit of I-told-you-so gloating, since it's exactly what
to expect when you take on a computer that's largely controlled, and for all
intents and purposes owned, by the manufacturer.
In somewhat related news, perhaps this is Karma (no not the OpenSuse
one), the iPhone adverts which Apple have been spreading liberally all over the
place have been
[labelled "misleading"
by the Advertising Standards Authority](http://news.bbc.co.uk/2/hi/technology/7582197.stm). Now, although it causes yet another
I-told-you-so moment and I'm obviously teh awesome at modestness, I'm going to
tell you what it's about. The adverts are apparently misleading because they
claim "all the parts of the internet are on the iPhone", but since Flash and
Java aren't installed then that claim is wrong and (to quote the BBC) "Some
pages on the iPhone won't look like they do at home".
Now, I'm sure a few people will remember my furious claims that the Internet and
the Web are not the same thing. Well, this confusion is right at the heart of
the issue. I'll say right away that I think this decision is wrong and that the
iPhone adverts are not misleading in the way that has been claimed. I'll detail
why it is wrong below:
## Teh Internets ##
The Internet is a super-global computer network. A computer network is defined
(as I can attest from both my formal and informal studies in this area) as a way
for machines to communicate, but which specifically describes a **general**
network (so the 'phone network isn't a computer network since it passes analogue
audio signals around, whilst most computer networks pass packets of binary data
which are, in a quantum mechanical world,
[general](http://en.wikipedia.org/wiki/The_Laws_of_Thought) as they can mean
anything). An internetwork (an internet) is a network of networks, where devices
called routers translate between the different physical technologies and virtual
addressing systems of each network (for instance I have a router in my house
which translates between IEEE 802.11g wireless networking, Ethernet, USB
networking and my ADSL line). "The Internet" is a slang name for the network of
internetworks which reaches around the globe, into the Earth and out into space
which is more commonly referred to by its correct title "teh Internets". If you
want a diagram showing the "net" then this'll have to do:
As you can see, each vertex (joint) is a computer, and each edge is a network
connection of some kind. Apple have claimed that on their iPhone (connected to
the 3G network operator on the left at about 8 o'clock) has all parts of the
Internet on the 'phone. Now, since the Internet is by definition more than just
one 'phone this obviously referrs to the fact that the 'phone can access the
entire Internet (insomuch as any device can, taking into account people using
encryption and various server outages around the world). The Internet is real,
physical thing that you can see if you look at the wires coming out of your
house. The iPhone can access the entire Internet just as much as a desktop
computer.
Now, the actual data that gets passed around on the Internet can be literally
anything, since it is by definition a general network. However, throwing random
bits at computers isn't particularly useful if the other end doesn't know what
you're trying to say. This is where protocols come in. There are LOADS of
protocols, and they stack up on top of each other at various layers of the
architecture. Examples are IP (the Internet Protocol), FTP (file transfer
protocol), XMPP (eXtensible Messaging and Presence Protocol), SMTP (simple mail
transport protocol), and of course HTTP (hypertext transfer protocol).
## The Web ##
HTTP is all about transfering "hypertext". This is like plaintext (which is
actually just a bunch of binary, anything can be seen as a type of plaintext)
except that it uses SGML markup to specify links (called "hrefs"). These links
allow readers of the hypertext document to be transported to another hypertext
document living at the address given in the href. I'll draw you another diagram
below:
This is a little harder to understand since there are two kinds of node, the
pages (in green) and the links, technically called anchors (in red). Plus the
edges are directed (ie. there are arrows). Just to clarify, there are no arrows
pointing TO links, all arrows end in a green page but I'm not too good at
drawing with a mouse :P
What's happening is that you're at a certain page in your browser (in green)
when you click one of the links (in red). Your browser shoots off down the arrow
coming from that link until it gets to the green page at the end of it. If there
are links in that page you can click those, but if not then you either need to
go Back along the last edge your browser went down or enter a location
manually. This is the Web, and you can't see it because it's not real. It's just
a visualisation of a data structure. The green web pages mostly live on
computers , which are nodes in the first picture, but the Internet and the Web
are completely different things.
Web pages, as I've said, are hypertext, written in the HyperText Markup Language
(HTML), which is just a special structuring of text. HTML is designed to allow
arbitrary non-HTML stuff to be stuck inside, and the
[standards](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html)
say, and I quote:
> **13.3.1 Rules for rendering objects**
> A user agent must interpret an
> [OBJECT](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#edef-OBJECT)
> element according to the following precedence rules:
>
> 1) The user agent must first try to render the object. It should not render
> the element's contents, but it must examine them in case the element contains
> any direct children that are
> [PARAM](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#edef-PARAM)
> elements (see
> [object initialization](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#object-init))
> or [MAP](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#edef-MAP)
> elements (see
> [client-side image maps](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#client-side-maps)).
> 2) If the user agent is not able to render the object for whatever reason
> (configured not to, lack of resources, wrong architecture, etc.), it must try
> to render its contents.
>
> Authors should not include content in
> [OBJECT](http://www.w3.org/TR/1998/REC-html40-19980424/struct/objects.html#edef-OBJECT)
> elements that appear in the
> [HEAD](http://www.w3.org/TR/1998/REC-html40-19980424/struct/global.html#edef-HEAD)
> element.
Flash and Java applets are examples of OBJECT elements. The standards say that
the user agent (browser) should try to render OBJECT elements which aren't
inside the HEAD element. If they can't then they should try to render the
contents (for example the "alt" text which is rendered if an image doesn't
load). The iPhone's WebKit browser is completely following the rules here.
So, in essence what I am saying is this:
1) The "Internet" is the physical network which carries data. The iPhone has a
complete connection to the Internet, as they claim.
2) The Web, which seems to be the point being argued, is NOT the Internet.
Apple have not claimed that everything on the Web will work on the iPhone,
they've said that you can get everything that is on the Internet.
3) Flash and Java are not HTML and thus not even IN the Web. They are external
in nature, even if they appear in the middle of a HTML document. For an
analogy, open a text editor window and drag it over this web browser window. Is
the text editor now part of the Web? Is it bollocks. Flash and Java can
communicate over HTTP if directed to do so but they are not part of the Web.
They are interpreted programs which can be accessed over the Internet.
4) Flash and Java have been incredibly proprietary until very very recently.
When the iPhone was in development it was completely reasonable to not include
these proprietary technologies, especially if they weren't available for Darwin
on an ARM (which was an internal Apple build environment until the iPhone came
out anyway). Now that Free Software Flash players and Java environments are
getting mature it may be a different story, since the rules are different with
Free Software (Apple would still be in control, rather than Sun or Adobe).
5) [For fuck's
sake](http://dowebsitesneedtolookexactlythesameineverybrowser.com/)! The
**BEST** part about the Web is that it degrades gracefully. If a browser
doesn't support some feature which it encounters then it just ignores the
request and carries on. This is exactly what the iPhone is doing. The real
irony is that WebKit, the browser engine used on the iPhone, is [one
of the most standards-compliant](http://webkit.org/blog/173/webkit-achieves-acid3-100100-in-public-build/),
correctly done browsers there is! The majority of desktop machines are stuck on
[Internet Explorer](http://www.drunkenfist.com/304/2008/03/04/acid3-test-released-i-took-some-screen-captures-lots-of-fail/),
so the comparison to "at home" (ie. on a desktop or laptop, most probably
running IE) is actually scary.
OK rant over. For now.