Back in 1992, tchrist wrote GUIs Considered Harmful. A few of the main quotations:

All very relevent points, many of which are still problematic. There has been some attempts to make a programmable GUI application framework (like OLE), to varying degrees of success.

However, with the growing maturity of the web, we now have the ability to run a fully programmable GUI. WWW::Mechanize is the most flexible realization of this, but it isn't the only one.

As soon as people had CGI-capable web servers, the address bar had many of the capabilities of a command line. Early on, some people even had bash execute parameters off the query string directly. Of course, this was horribly insecure, but illustrates the capabilities of this method.

Web applications address two interesting points at once:

  1. It solves tchrist's problem of the programmable GUI
  2. It becomes a mechanisim for RPC

Many people think you need something like SOAP to get RPC out of a web application, but really this was possible all along. SOAP and others merely provide a standard protocol so that libraries can be written in multiple languages and (hopefully) all get them to work together.

The WWW::Mechanize method of grabbing forms, filling them out, and submitting is perhaps more cumbersome than the Unix filter concept, but it allows the same web application to serve both GUIs and command line users with no additional work for the application developers.

Further, it was inevitable that once the web got big, command line tools would be made to use it. Both wget and lynx (with the -source option) allow you to use a web app as part of a Unix shell pipeline.

Firefox takes this even further. The "Quick Searches" bookmarks lets you use a keyword followed by a string. It'll place the string within the query. For instance, I can search Google with google Perl. It's easy to add your own. Just make a bookmark within the Quick Searches section. The string %s in the address will be replaced with whatever you type. I've added a few custom search bookmarks, such as CPAN (http://search.cpan.org/search?query=%s&mode=module).

With features like that, the address bar becomes a command line, and we didn't need Java Applets, JavaScript, or Flash to do it (in fact, those things usually get in the way of this concept).

Between better browsers and simple tools, we no longer need to fear GUIs, at least for the web.

"There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

Replies are listed 'Best First'.
Re: The Address Bar is the new Command Line
by jdporter (Paladin) on Dec 29, 2004 at 21:10 UTC

      In Soviet Russia, Cliche overuses You!

      I rather like the "is new" cliche. AFAIK, it started in the fashion world ("Pink is the new red"), and I like the idea of subverting their saying for my own evil purposes.

      Don't forget:

      "There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

Re: The Address Bar is the new Command Line
by martinvi (Monk) on Dec 30, 2004 at 08:44 UTC

    I disagree, but then: I often disagree with that "new" and "exciting" stuff.

    Not the command line, not the GUI, not the Address Bar or whatsoever is intrinsicaly bad, but the idea, that one of them could cope with every conceivable need.

    As a system administrator, I like (and need) the shell. As an user, I like the GUI. As a remote \$something, I like either the shell (spell that ssh) or the web interface (spell that Citrix)

    In my staunch opinion, the "one size fits all"-thingy is Bad And Evil.

      In my staunch opinion, the "one size fits all"-thingy is Bad And Evil.

      I agree. I know this may step on some toes, but all the concern about making a script run cross-platform, making sure it works with or without GUI's, makes alot of simple code complex, and harder to use. After all, what are "scripters like us" for? You should be able to take a script that you like and modify it to do what you want and need on your platform. Microsoft(or other big code producing entities) don't write it's code so it compiles cross-platform, why should we?


      I'm not really a human, but I play one on earth. flash japh
Re: The Address Bar is the new Command Line
by Anonymous Monk on Dec 29, 2004 at 21:48 UTC
    Google M.V.C.

      MVC has nothing to do with this. Many applications were made in very clean MVC patterns that are difficult/impossible to use programmatically by outside code. Further, even poorly-written web applications by people who don't know what MVC is can be queried by a screen scraper.

      "There is no shame in being self-taught, only in not trying to learn in the first place." -- Atrus, Myst: The Book of D'ni.

Re: The Address Bar is the new Command Line
by dimar (Curate) on Dec 31, 2004 at 06:45 UTC

    As someone who has a favorable inclination toward both perl, and GUIs (something that may be a tad uncommon) ... I think there is a single factor that is the blame for most of the harm and limitations inherent in GUI development. There is a prevalent view that a "GUI" is a *substitute* for a command line, or an alternative for those who are not willing to use one. This is a mistake.

    Until this prevalent view becomes less prevalent, the drawbacks and justifiable misgivings about GUI development will probably not be displaced. This difficulty is compounded by the fact that the term GUI carries a whole host of differing connotations depending on who is using it, and in what context.

    This is why I like to summarize this whole dilemma with what I call the "Photoshop Test." (with apologies to Turing)

    GUIs will never be sufficiently flexible and powerful until you can run a graphically-intensive program (like Photoshop for example) in such a way that it is impossible to distinguish whether an instance of usage and output was generated by a human end-user or by an automated agent.
    (Photoshop being a GUI-intensive application that everyone has at least heard of, no endorsement or evangelism of that particular product intended).

    I use the Photoshop test because this naturally precludes and surpasses the definition of the term "GUI" that you typically see in the context of the Web (aka 'request-response' driven apps that consist of input forms, buttons, and other basic widgets primarily used to manipulate text, but little more than that).