and "balanced"
Everything here is my personal opinion. I do not speak for my employer.
March 2013
April 2013

2013-03-23 »

Imagine for a moment that Hypothetical Web-based Product X was canceled because even though it is "successful," the moderate success doesn't outweigh the opportunity cost imposed by devoting energy to its ongoing maintenance.  (It's a hypothetical product, so we can imagine that it's true.)

If Product X were a real-world product, or even a shrinkware software product, the effects of its cancelation would be contained.  Existing users could keep using it until they get tired  of not having any new bugfixes/features, and slowly leave at their own pace.  Like, say, Windows XP. They might be sad that it is no longer maintained, but they aren't violently angry, because there are no immediate consequences to them.

Web-based products aren't so lucky. But I got to thinking: why is that? What's the big difference?  Well, the big difference is that unlike shrinkwrap software, web software keeps on costing the service provider money to keep on hosting the service. That seems pretty much inevitable, barring near-impossible-sounding options like open sourcing it and the entire set of hypothetical infrastructure the Product X depends on.

On the flip side, however, computing power is getting vastly cheaper every year. Naively, the cost of running Product X should decrease every year, assuming you don't have annoying things like a growth in user population.  In fact, given Moore's Law, one might hope the cost would decrease exponentially year over year.  Interestingly, if that were true, you could actually account for the total costs of a web service (again, assuming users don't increase) up front, using the net present value of all future costs.

But that's not how it works, of course.  Why not?  My theory is: because the infrastructure APIs keep changing.  If you leave Product X alone, it will soon kill itself irreparably because the underlying infrastructure changes incompatibly.

There are different ways to deal with the stability of an underlying platform.  One way is the Microsoft approach of putting tons of effort into backward compatibility (such that many DOS programs still work in present-day Windows).  But that method is expensive and annoying.  On the other hand, I don't need Windows in order to run, say, Lotus 1-2-3 for DOS: I just need DosBox on my Mac.  If I need Windows apps, I can also run Windows XP just fine in a virtual machine that will keep working as long as I have an x86 processor - and by the time I don't, the emulators will probably be fast enough.

I wonder if, one day, we can create a world where web services infrastructure stays stable long enough for it to be shrunken down and virtualized, like DOS, so that it can keep working forever, and there is no economic reason to shut down a popular-but-not-popular-enough service.

Why would you follow me on twitter? Use RSS.