Web apps are houses built on sand
---------------------------------

Okay, time for another rant about the internet.  But first, a small introductory
kind of thing.  I have been using the internet regularly since about 1998, and
pretty hevily from 2000 or 2001 onwards.  In general, I absolutely love the
internet.  It feels like a spiritual home to me, cheesy as that sounds.  For the
last maybe 3 or  years, I have been increasingly troubled about the way things
are developing.  I have wanted for a long time to write some blog material on
the blog I have under my real world identity, but I have been reluctant in part
because I feel like I've not had a good overall and well-thought-out picture of
what troubles me and how to express it succinctly and convincingly (never mind
that I'm not sure I've expressed something succinctly in my life!).  All I have
is a random pile of individual things that really annoy me.  So part of the
purpose of this phlog is to vent about these things in a free-and-easy fashion
pseudonymously.  But the ultimate aim is to synthesise some kind of coherent
stance and possibly even theorise on how to make things Right (TM) again.  I
don't want to be the kind of person who just complains endlessly and vaguely
about everything, but you might have to put up with me being that kind of person
temporarily.  Well, I hope it will be temporary.

I've been online since about '98, but I've been on computers longer, and so I've
seen the proportion of programs the average person uses day to day which are web
apps increase from 0% to what may actually be 100% for a lot of people.  What
was once software people ran everyday alongside the browser - email clients, 
word processors, spreadsheets, image galleries, music players, games - can now
all be done in the browser.  Actually running non-browser, non-OS software on
your very own CPU is kind of a novelty these days.

I don't want to say that this is an entirely bad thing, because it's not.  It
has some definite upsides.  For example:

* With web apps, you are always, automatically, running the latest version of
  the software, and there's no effort or downtime on your part involved with
  updating.
* You can use the softare on different devices and all of your files are
  available on all of the devices.  If your computer gets stolen, you don't
  necessarily lose any work at all.
* Your computer doesn't have to be fast enough or have enough memory to do
  really advanced things if some super server somewhere can do it for you and
  just hand your browser the relatively light-weight task of rendering the
  result (of course, browsers are increasingly not light-weight at all and even
  the most trivial webpage is loaded down with lots of JS, etc.)
* Perhaps most importantly, web apps are fundamentally cross-platform.  Gmail
  works just fine and exactly the same on Windows, OS X, Linux and BSD.  We
  should not understate or back down from this achievement!  A young developer
  today has to actually make a deliberate and active effort to write
  Windows-only software, and that's a big improvement on the world of not so
  long ago.

But all of this comes with a non-trivial costs which is the almost _total_
sacrifice of user control, even of very minor kinds.  In fact, the truth of this
crept in when I was writing the "pros" above: with web apps, you are always,
automatically, running the latest version of the software -- whether you want to
or not!  Web apps rob us of the choice to keep using an older version if we
prefer it.  This might thing like an odd thing to get upset about, but it's
actually a very important power for the user.  If you have version X of FooSoft
installed on your computer, as in physically on _your_ hard drive, and version
X+1 comes out and you don't want to use it for whatever reason, you can in
fact not use X+1 (and this includes not _buying_ X+1 if it is proprietary
software), and the developer has no power whatsoever to take version X away from
you (well, unless you're on a device where something like an "app store" is the
only way to get software on or off the machine, but that's another rant for
another time).  This is not a contrived example.  Remember when Windows Vista
came out, and the early adopters had an awful experience?  Plenty of people,
and plenty of large companies, schools, etc. decided to give Vista a miss and
wait for the next version of Windows.  Microsoft could not take XP away from
those people, and those people could and *did* withold their money from
Microsoft by not upgrading.  This no doubt hurt MS financially to some degree
and no doubt had an impact on how quickly Windows 7 came out and on some details
of how Windows 7 was designed and built.  The users were able to exercise some
kind of power over the developers.  Imagine if instead everybody had woken up
one day to find they were running Vista, all of a sudden, and it was literally
impossible for them to downgrade!

A web app user is completely beholden to the app's developers.  If they change
or remove your favourite feature, there is literally nothing you can do but
accept this.  It's a level of powerlessless a computer user has never in history
been subject to.  If Microsoft removed your favourite feature from Word, and you
were forced to stop using the older version to maintain compatibility with users
of the new version, well, at the very least you still had your .doc files!  You
could, in principle, through Herculean effort, reverse engineer the binary
format and write your own replacement program which is both compatible with the
latest Word _and_ has your favourite feature.  Perhaps not very likely, but you
could.  In the case of a web app, 99% of the time you do not even have this
desparate recourse because you don't even have your data!  You have _nothing_.

In fact, being left with nothing is a very real risk with web apps even if you
are not fussy about features at all, and this is the motivation for this entry's
title "houses on sand".  If the developer of a web app goes out of business, the
app and all your data vanishes forever.  This is also unprecedented.  In the
Before Times, if you bought a physical FooSoft 4.2 disk with money, and then
FooCorp went bankrupt and every programmer who ever worked for them died and the
building where the software was written burned to the ground, it did. not.
matter.  You had your FooSoft 4.2 disk, and nothing could take that away from
you.  You could copy it from a floppy to a CD to a USB stick as storage
technology moved on and never lose it.  It was _yours_.  You could run FooSoft
4.2 50 years from now if you tried hard enough, just like there are strange
people today (like we SDF-using weirdos, for instance!) who run software from
many decades ago.  Web apps by contrast are totally ephemeral.  If the
underlying company goes bankrupt, or gets bought out by new owners who want to
discontinue or radically change the product (as happened to, e.g., Delicio.us,
and probably countless other apps I'm not aware of), then the app is gone
forever, like tears in rain.  Nobody will be able to run today's most popular
web apps 50 years from now, even if they maintain their current computer in
perfect working condition for all that time, even if they are a master hacker in
every programming language under the sun.

I said earlier that the benefits of web apps are real, and should not be backed
down from.  I stand by this.  But the downsides are just as real, and I worry
that if we don't make an effort to counteract them, a generation of people will
grow up on web apps not knowing what they've lost and with no real drive to get
it back.

Remember what I said above about never having expressed a thought succinctly in
my life?  I was not lying!