I had an odd thought earlier today after reading some news about a Yahoo project that brings the concept of Unix pipes to the Web.

A lot of the value of HTML is that it is a machine-readable format. This is the reason why we all care about “separating content form presentation”, right? Microformats takes that to the next level, as does RSS and other XML-based approaches to structuring content.

IMHO, this whole movement toward more machine readable web formats is one of the most exciting things happening right now. Now how does Flex factor in?

~

From command line to visual interfaces

I started out in programming on the Apple II, but soon moved over to Unix in the early 80s. One of the core philosophical tenets of Unix was to create lots of simple text-based tools that could be chained together.

Even back then, there was a natural tension between formats for machines versus formats for people. For example, if you were designing the “ls” command for machines, you want to format the information simply, which is indeed the default for “ls”. If you are formatting it for humans, you may want a more readable format, which you can get through various command line arguments.

Now, let’s look at email programs. The original Unix mail was user centered, but fairly easy to navigate by machine. You go into the mail program, you type commands (like “2” to go to the second piece of email) and the email is printed to stdout. Yes, it’s intended for people, but you could theoretically write software that communicated with this thing through stdin and stdout. I don’t think that was the explicit goal here — even back then, it was probably better for a program to try to find out where your mail was being stored and to parse the text directly — but it was the style of text-based UI that was prevalent on Unix.

Shortly after this, more usable email programs came about that were totally about people and were terrible for machines. Pine is an example. Pine paints a text-based interface on your console window which is formatted for humans, not machines. It does so in a way that makes it very hard for machines to understand what it is doing.

Nowadays, in the case of mail, we optimize differently for machines and humans. Machines understand POP and IMAP. Humans use visual email clients like Thunderbird and Outlook, or web-based clients like gmail.

Applying this to the web

So now let me make a perhaps silly and perhaps self-serving analogy.

HTML -> command line (can be understood by machines or humans)
AJAX -> Pine (based on the same technology, but can’t be understood well by machines)
RSS -> POP (purpose-made information for machines)
RIA technologies -> Outlook/Thunderbird (made for people, not machines)

Of course, this is a gross oversimplification. There are other arguments for machine readability (search engines), and there are ways to make RIAs accessible to machines. But the main point I want to make is that at some point, you have to ask yourself if it is the right approach to try to make your application accessible to both machines and humans, or whether you should try to use two different formats for the two different purposes.

2 Responses to “Command line is to windows as HTML is to ??”

Two different formats. Rich Internet Applications, like other non-ria solutions, are pieces of a whole. They are the user interface to the services (i.e. interfaces) exposed by the back end systems. HTML is simply rendering a readable display. While, HTTP is facilitating the protocol for machine usable data.

What Web 2.0 and SOA is bringing into the spotlight is the machine interface is just as valuable as the user interface. del.icio.us is a great application because of the storage and socializing of bookmarks, not merely the listing via HTML.

However, the deeper question you are asking is can the two goals be achieved using one format. Regardless of the technical advancements, my answer is no. Human beings, outside of the small select uber geeks, are influenced by presentation of content as much as the message. Window dressing is important. Web users do not want to type in ‘ls’ switches to list content on a favorite blog. They want the information listed in a certain font in a specific section of the window. They don’t want to rig a bunch of pipes together. That’s the job of the programmer and the client interface. Therefore, RIAs will have a market to satisfy.