The Widget Overdose
Dare writes about MySpace’s dissatisfaction with widgets, and how they plan on instead offering their own versions of popular services that users embed in their MySpace pages. Okay, let’s get this out of the way first: yes, it is humorous to see a Microsoft-centric point of view criticizing the strategy of creating a clone of someone else’s technology in order to control a market.
Actually, the truth of the current situation can be found in that little bit of comedy. MySpace is acting no differently from Microsoft (or, really, most big companies): if someone is making money off their platform, they want to get in on that action. This is not contradictory with providing a developer-friendly platform; you need external developers to try things out, see what works. When someone is successful, you either buy them out or create a copy to eat their lunch. There’s nothing new here.
So how does this affect all the recent talk here, and elsewhere, regarding applications composed of far-flung software widgets pulling data from all over the network? The truth is, this should serve as a sobering reminder for those of us excited by the widget concept. Exemplum #1: I often write little helper apps for myself, and some of these apps use data that can be found on the net. What I typically do is write my program such that it pulls in the data, processes it, and gives me the result. This model appeals to me, because it has a nice separation of logic from data, and I tell myself that I can just take this little file of source code to any networked computer without having to also carry around a copy of the data. All true, but what’s the point? In reality, there are many times when the data set I’m processing really isn’t that large or dynamic. In fact, it would be more practical for me to just copy the data locally; for all its cuteness, my program is useless if the server hosting the data goes down or moves things around. In other words, I’ve created a dependency, and I ought to weigh the benefits of that dependency against the costs that come with it.
I will probably continue to write light-weight apps that grab their data on-demand, but I realize that it’s a bit pointless. Such network-consuming applications only really exhibit advantages over their non-network cousins when the data is dynamic or too large to be comfortably stored locally. For instance, a weather reporting widget should download its data. For such software to require that the user manually download a new data file and put it in a prescribed location for every update would be preposterous (alternatively, the software could have no updated component at all and simply be a farmer’s almanac). Similarly, I don’t maintain a locally cached index of the entire Internet. Instead, I use certain web pages to pull the parts of that data set that I need in an on-demand fashion. This last example benefits from the network-aware model because the data set is both huge and dynamic. In both these cases, there genuinely is something to get excited about: network-connectivity makes certain previously impractical applications practical, efficient, and, most importantly, useful.
So what about the application categories occupied by photo sharing sites or YouTube? If I’m writing an app that should include pictures or video, should I leave my data on these sites? In fact, the primary use of these sites is sharing. If, however, I’m writing photo editing software, I probably want to be operating on locally-stored images. If I have a program that processes a particular video, I might as well have a local copy. The video isn’t dynamic, nor is it prohibitively large for me to maintain my own copy. So if my name is MySpace, and I want to embed a video on one of my pages, what does external hosting buy me? I don’t really care about the dynamic part of YouTube’s video hosting — the comments — because I’d rather people be writing about the video on my site. I also have a ton of resources, so the hosting of that video is something I could do myself in terms of disk space, bandwidth, and staff to build the infrastructure. In fact, I look at my page and realize that I’ve taken on a dependency that really doesn’t help me out a whole lot.
The fact is, photo and video hosting services are beneficial to you and I because we are not setup to serve content. I don’t have a lot of upload bandwidth, I don’t have a lot of spare computer cycles, I want to put my computer to sleep sometimes to save electricity, and I don’t want to worry about any extra security risks. Note that the previous sentence changes completely if my name is MySpace.
Exemplum #2: With today’s technology, I could embed in my page a bit of JavaScript to go to another web page, pull down some text I want to use, and quote that text on my page using the return value of that script as the quote body. Or, I could copy and paste the text directly onto my page.