Tim Bray wrote another interesting article, this one with a wide enough interest level to reach the Blogdex top 5. In The Web’s the Place, Tim draws the comparison between developers working within proprietary systems and sharecroppers (farmers who work land owned by someone else). I think that’s a great analogy! How many companies have made utility programs for Windows that then got blown away by a built in feature in the next Windows version? How many applications vendors have successfully competed head-to-head with Microsoft? (I can think of one, and they were nearly acquired.)
Tim feels that the best way to avoid being a sharecropper is to create for the Web and that
All computer applications fall into one of three baskets: information retrieval, database interaction, and content creation. History shows that the Web browser, or something like it, is the right way to do the first two.
Here’s where my opinion differs from Tim’s. The Web works great for many applications, to be sure. But there are also many applications that benefit from the “richer” interfaces that Tim says are losing.
Tim says that he counts NetNewsWire as a Web browser. I disagree! NetNewsWire is a GUI app with all of the benefits that comes with that (and I guess Ranchero is a sharecropper because their software only runs under Mac OS X). Calling NetNewsWire a web browser is like calling Quicken a web browser, because it can access online resources.
WinAmp and KaZaA are other examples of applications that benefit from a rich client application. And I’m certainly glad that Eclipse does not have a web-based UI.
Even when it comes to “database interaction” apps, the web offers certain advantages (cross-platform with remote access capabilities for free), but has also traditionally had disadvantages. If you’re doing a lot of data entry, you need to be able to move very quickly using nothing but the keyboard.
One thing to note: creating a rich client app does not automatically mean that you’re a sharecropper. People who create apps using wxPython certainly aren’t, because those apps work on Unix, Windows and Mac OS X. I don’t think that people who create Java apps are really sharecroppers either. Sun owns the Java™ name, but I think they would have a really hard time making that technology more restrictive. (Check out gcj if you don’t believe me.)
In summary, I agree with Tim that being a sharecropper is a bad thing, and that developing for the web is a way to avoid that. But, it’s not the only way and there remain compelling reasons to make rich client apps today.