Pendulums are one of the coolest displays of physics in action. I always remember as a kid going to the Smithsonian Museum of American History and seeing their giant Foucault Pendulum swinging back and forth, always perilously close to knocking down one of the many little red candles strategically placed at the edges of its swinging amplitude. Sadly, I never saw the ball of the pendulum knock down any of the candles and since the pendulum display was dismantled in 1998, I probably will have to look elsewhere for amusing (yet flawed) displays of physics.
Perhaps I’ll have to make do with applying a pendulum metaphor to something that’s been on my mind lately as I get more immersed in the subject of enterprise mobility. I’ve been thinking a lot about how the distribution of computing power as delivered by applications has shifted back and forth from centralized to decentralized models over the last 20 years. The proliferation of powerful mobile devices forced the industry to reconsider decentralization as a result of new apps which in another era could have been dismissed as “fat clients”. If you represent this back and forth shift as a pendulum, you’d see complex, heavyweight client applications talking to often equally complex server resources on one end, and thin, rendering vehicles like browsers talking to complex server on the other. The pendulum started swinging from the right side in the mainframe era, moved dramatically to the left for client/server and then swung right back for the Web.
Now it seems that the massive expansion in mobile applications are shifting the pendulum back to the left, towards something that could easily be described as “the revenge of client/server” (which could also be the title of a really bad movie about IT people). It’s not quite a full throwback to the days of PowerBuilder and VisualBasic, but it does represent a shift in both the way in which applications are built, and the way in which they are ultimately delivered to the end user. That shift suggests that there’s still some contention around the basic concept of the Internet Browser that demands applications should always be centralized away from the user and accessed through simple windows (pun fully intended — note lower case w) that simply render stuff on the screen.
This topic even came up in a recent interview with Marc Andreessen in Wired Magazine.
About halfway through the article, Marc is asked about his infamous comment back in the browser war era that Microsoft Windows would “become a poorly debugged set of device drivers” and that access to all applications would be done through a browser. Turns out he borrowed that line from Bob Metcalfe! Still, as a former Netscape engineer, I was curious how his views may have evolved 10+ years now that he’s dedicated himself to investing in companies that are trying to bring us the next big thing. During the interview, Marc revisits the idea and reaffirms he still believes that computing wants to be centralized. He goes further to suggest that “this is what technology wants” and along the way qualifies the statement by assuming that infinite and ubiquitous bandwidth would need to be available for this to take hold (a pretty big assumption, to say the least).
Well, if this is truly a pendulum phenomenon where we are always in the midst of a swing from centralized to decentralized computing, it would seem like Marc and others believe the ball is on the way back towards the centralized model and that consequently anybody betting on a future of rich, standalone client apps is going to be disappointed.
But why? What’s so bad about decentralization? Or better yet, is there anything better about a more “client/server” type model? Well, let’s start with the bad news. One of the main challenges that Marc and others raise about rich client apps is the challenge of updating and managing apps on remote devices. As a guy who has 10+ apps needing upgrades on his phone at any given time, I can appreciate the challenge this poses. But guess what? The reason I don’t update those apps all the time is because for the most part, whatever I’m using is working. Yes, I may be missing features and bug fixes, but in the end, I will happily update them when I feel it’s necessary. Let’s say we’re talking about enterprise apps, and worse yet, ones where the updates are related to security and have to be applied. There’s an answer for that one too. The task of remotely delivering and updating applications on managed devices is something that is not only technically possible, it’s already being tackled by some vendors. Whether or not the management model for apps is perfect today is another matter. The point is that manageability of apps is not in and of itself a reason to resist the idea that feature rich apps that run locally on a device are a good idea.
In addition to focusing on the challenges posed by rich clients, its worth taking a look at some of the benefits of this model. After all, there’s a reason why our pendulum has shifted away from the web and back to the other side. Perhaps the biggest benefit is in functionality. Rich client apps being built today not only are capable of accessing powerful device components like cameras, accelerometers, GPS, and microphones to deliver experiences that are simply not possible on PCs. Regardless of whether they’re built in native frameworks or in HTML5, the fact remains that apps that are smart enough to run locally while leveraging remote services where necessary provide the user experience, especially when you consider the reality that no matter how ubiquitous bandwidth gets, apps will need to gracefully handle the occasionally transient nature of any wireless connection.
Having explored this pendulum analogy there’s still one last question to answer. What’s the force that keeps the pendulum in motion? In a Foucault pendulum, gravity acts as the “restoring force” that pushes the pendulum back towards equilibrium. That force plus the mass of the pendulum is what swings it past equilibrium to the other side keeping the thing in motion forever (or for a very very long time if you don’t grant me air friction and other technicalities :). Well, it turns out that users like you and me are the restoring force that keeps the pendulum in motion. Our desire to use technology to improve our personal and work lives leads us to choose things we like and leave behind things we don’t. This is in sharp disagreement with Marc’s observation that “what technology wants” is what will ultimately lead us back towards a server-centric model. Perhaps we’ll get to a world where wireless connectivity truly is ubiquitous and rich apps can be created that run entirely in some cloud while magically beaming down three dimensional holograms with the directions on how to get to your next meeting. Until then I’ll continue to enjoy the resurgence of client apps and wait for the pendulum to start swinging again.