A conversation I had recently reminded me of some views I've long held on the subject of user interfaces, or UIs. For most people, the term UI, or GUI (graphical user interface), conjures up images of dialog boxes, choosing fonts and colors, and deciding what a piece of software should look like.
These are part of the process, but the real user interface is the conceptual, or cognitive, model that is instilled in the user. This model dictates the user's understanding of what data is being presented and manipulated, and sets the user's expectations about what effect different actions will have. Every single feature of the design of a product must establish and reinforce that conceptual model.
Consider the difference between draw programs and paint programs. Both are designed to let users draw pictures on the computer. Yet the underlying representations of those pictures are completely different. A draw program allows the user the define geometric representations of shapes, which can then be displayed in various colors, patterns, etc. Adobe Illustrator is perhaps the best known of these, though there are plenty of others.
A paint program, on the other hand, stores everything as pixels ... tiny dots of colors arranged like tiles in a mosaic. The user's actions will affect the color of individual pixels, but once these are drawn, there's no concept of shapes, underlying geometry, etc. Pictures from your digital camera fall into this category, since they're just made up of colored dots recorded by the camera. Adobe Photoshop is the best known example of this.
Each of these models, draw vs. paint, or vector vs. bitmap, has some features and some limitations that the other does not have. So, over time, the more successful programs have tried to shoehorn in various features that expand the capabilities at the expense of keeping the model pure. Photoshop has paths, and text, and other non-pixel data. Illustrator has smudging and blurring and other effects that use pixel-level manipulation.
Adding features is not a bad thing, but complicating the models makes it much harder to learn and use the software. Sure there are plenty of people who become expert in Photoshop or Illustrator or both, but it requires a lot of dedication and time to do so. The conceptual models are not simply anymore, so the user interface is more complicated.
Later, I'll talk more about these draw and paint models, and suggest some other ways to look at the problem of representing pictures.