More and more software gets moved inside the web browser. I don’t like this, I’m actively hostile to it, but I think it’s worth asking why it happens. Why do we do this? What are we gaining? Somebody finds this more effective or more convenient or something or it wouldn’t happen. Some possibilities:

  • Cross platform capability. Except you don’t need this and don’t get it anyway, or at least not until very recently. Instead of having to write separate code for windows/mac/linux[1], you get to write separate code for IE/Firefox/Chrome/whatever. And today there are plenty of ways to get cross-platform support in native GUI applications. Python even supports it out of the box.
  • No user installs. This is a user convenience rather than a developer convenience, but I’m not sure I buy it anyway. If you write your app with no need for initial configuration by the user (and you’re doing that anyway if you’re doing a web app), it can’t be that hard to click Next.
  • Client control, or lack thereof. If you’re running a web service, you may want to ensure all your users are on the same page. You actually do get this out of web apps over native ones, except it is basically evil. So maybe this matters to developers, but it’s not convincing to me.
  • No user admining; no developer support of self-infliced user problems. This is a genuine benefit for server-side clients in general, though not web apps in particular.
  • Port 80 works everywhere. You can run something other than http on port 80 just fine if you want, though.
  • Rent-extraction. It’s probably easier to collect rent on a service if you control both the client and the server end of that service. (the web browser is Not Your Client) This isn’t exactly evil, but throwing a good user experience out for easier rent collection strikes me as a Molochian sacrifice.[2]

Many of these are not specifically solved by the web browser so much as by using a server-side-client. Now, I don’t like server-side clients for many reasons, but it strikes me that there has to be a way to produce a server-side client that works with native widgets and interfaces rather than trying to cram it in a hypertext rendering window. In fact, this has already been done, by technologies like X, RDP, and Citrix. These have their own faults, but crummy UI isn’t one of them. Crummy performance may be, although in my opinion it’s not usually worse than browsing web pages. Being technologically finicky certainly is.

I don’t know much about how such tech works, but it seems to me like it ought to be possible to provide, say, a Python program as a server-defined application in the same way that we currently provide Javascript programs as embedded web applications.


  1. Ha ha ha. Like anyone ever cared about linux support.  ↩

  2. I sort of wonder how much of the steady drift towards bad browser replacements of good native software can be modeled effectively as a Molochian trap, where good user interface design is thrown under the bus in exchange for a more convenient, and therefore more competitive, product.  ↩