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!