Friday, September 12, 2008

Think Small

In his blog on Adobe, John Nack voices concern that many Photoshop users will find the addition of 3D features off-putting, and will believe the product is evolving in directions they don't care about. Unfortunately, this is an intrinisic problem with monolithic ("single stone") applications. They're big, expensive, and wasteful. Not everyone is going to use all the features, but everybody pays for them, in disk and memory space and in performance as well as in price.

I thought we had learned this lesson years ago. Unix had things beautifully worked out. There are hundreds of simple command line programs that you could use as building blocks. You could create your own workflow by piping the output from one program to become input to the next.

In the early days of object-oriented program, this kind of world was envisioned. The computing environment would be populated with objects which had methods, and could respond to messages. Your new application would send messages to the appropriate other objects, already in place, to use their methods to manipulate their data. CORBA (Common Object Request Broker Architecture) was one statement of this vision, though it never caught on for various reasons.

But the general idea, that software should be built from small, reusable components, has been around for about as long as software has. In fact, software is just a way of re-purposing hardware!

The plug-in approach is a step in this direction. Applications like Photoshop, Illustrator and InDesign allow plug-ins to add new functionality, or change the behavior of what's already there. But there's still a tendency for the applications to become more and more bloated with new built-in features and functions in each release. The most obvious downside of this is that it drives the price up to the point at which there's a whole sub-industry of Photoshop imitators. Photoshop CS3 is listed at $650 on the Adobe site right now! The "Extended" version is $999! And this is software for creatives?

I think developers need to challenge themselves constantly to think in terms of software building blocks that can be assembled to meet various needs. Same-day startup time wouldn't be a bad thing either.

No comments: