[sword-devel] Re: GUI interfaces
Jerry Kreps
sword-devel@crosswire.org
Wed, 19 Dec 2001 22:25:03 -0600
On Wednesday 19 December 2001 15:24, Stuart D. Gathman wrote:
[snip]
>
> GUIs are nice. Their benefit lies in making the abstract appear
> concrete - visible and audible in todays technology, more in
> tomorrows technology.
>
> However, GUIs have a serious drawback. They require a warm body to
> operate them. All too often, I struggle with anger because some
> utility is available in a GUI interface only. This means some poor
> soul has to sit in front of a screen somewhere and click a mouse
> and/or keyboard until the task is done, when they could be home
> with their family. Countless hours are wasted with GUI chores that
> could be automated if only a command line or other programmatic
> interface was provided.
More than likely you encountered a GUI app written by a command line
coder. Not too intutive and not mindful of standard mouseing rules.
BTW, doesn't your 'warm body' operate the keyboard on the command
line as you type in the utility name and parameters? :)
I understand what you are saying, though.... gui-less utilities allow
unattended batch processing, for example. I use that approach all
the time. But, to my users, it is just another app activated by
clicking a mouse. They don't write the scripts nor do they care
about the utility. The job is what counts. For example, to
replace Win98E running the Wildcat BBS, I wrote one bash script, one
page long, and two python scripts, also one page each. The bash
script is what is executed when the user logs into their account. and
it restricts their activity to three tasks, or logging out. The two
python scripts automate two repetative manual processes that the BBS
admin does. Both python scripts are accessed via desktop icons that
the BBS admin clicks on. Both scripts could have been coded as
exposed methods of some resident object supplyling services and also
triggered by a desktop gui, but the required processing and data
movement was cut and dried. Sound familiar?
I've been using commandline utilities since 1978. The biggest
objection is that there are so many, they are obscure, and each have
their own set of switches (parameters), and none are standardized as
to what switches do what, except that either -h, --h, -help or --help
calls up some form of help. Frankly, as I got older, I got tired of
trying to remember parameters, switches, etc..., and inevitably one
loses the manual, if there ever was one, that explains them all.
When I got into Linux four years ago the most popular coding tool was
emacs, or xemacs. I got O'Rilley's book and after a couple of
chapters grasped the number of pluggins and switches that are
associated with each one. I realized that, having only 5 to 10
activing coding years remaining ahead of me, there isn't enough time
in life to endure such nonsense. GUI apps are standardized far
better than commandline apps are, and the well designed ones are
intuitive. The general user can move from app to app and never have
to consult a manual on mouse clicks. Coders writing GUI apps who
short-circuit this design principal are shooting their apps and
themselves in the foot. A commandline app is never intuttive,
unless you were the coder that wrote it.
>
> Microsoft's solution to this problem is a programmatic interface.
> Good Windows programs include a DDE or COM interface which is
> automatically available to Windows aware scripting languages.
> (This is where the Windows term "automation" came from as in "OLE
> automation".) The common unix solution to this problem is to
> provide a command line interface to the program.
The command line is not like Dynamic Data Exchange or Object Linking
and Embedding, later expanded to become ActiveX, etc.... A script
composing a shell program, ... maybe. Scripts are not event driven
like GUI interfaces are. Part of the 'dynamic' is the user, for
example, seeing clues in the data returned from, say, a remote
server, that causes him to mouse a particular GUI control that
triggers a particular event, out of many, causing the data to be
moved, processed, returned, destroyed or what ever. Such dynamic
interaction is not possible with commandline utilities unless the
'warm body' types commands that pipe data to files or does a screen
capture, etc... Object linking was created to allow an object to
reuse code present in exposed methods of other objects.
GUI interfaces, of course, are not procedural, because the coder
usually doesn't know in advance in what order events will be
triggered, except in certain limited ways.
>
> Command line utilities are not valuable because they are "friendly"
> to the casual user (they aren't). They are valuable because they
> are easily integrated with other programs in a way that does not
> require user intervention.
That they are not 'friendly' is why they are dying, no matter how
useful they've been in the past. When it was only academics and
geeks using them, and they were the only game in town, there was no
other choice. The number of people who are impressed by geek
knowledge of utility apps and their parameters is rapidly dwindling.
>
> How does this relate to Sword? Well, Sword is currently available
> to C++ programs. There should be alternate interfaces for other
> tools. A simple command line tool to quote a verse by reference or
> output a concordance like list of references given a search key
> would be handy for a scripted web page or editor macros. A C
> interface would be more easily wrapped for script languages like
> Python or Perl. A command line tool would also let you search the
> Scriptures on a 4Mb 386 in console mode (although an ncurses
> frontend would be nicer for that).
Diatheke does that. A curses version by Richard Holcombe also
exists, but it has had less than 100 downloads in the last 9 months,
which probably explains why Richard isn't too active right now. The
last work was on 0.16 on 2-17-2001. I've noticed a lot of older
geeks talk about the 4MB 386 as if there were a huge, unexploited
market for software that would run on them. There isn't. If those
boxes haven't been run the dialectrics in their capacitors have begun
to or have dried out. If they are being run then their component
MTBF limits have been passed and they are in need of constant repair
from a pool of parts that are drying up. No one makes 386 stuff
anymore. Few people write for it. Even third world countries won't
settle for them. Would you be happy with a model T when everyone
else is driving a 2001 Saturn? Even my brother, Dennis Malepi, in
Botswanna is using Pentiums and acquiring them for the Christian
school he is building there.
That BBS box I told you about is a P200 with 64MB of RAM and two 1GB
HDs, running SuSE 6.4. It replaced a P450 with 128MB running Wildcat
because the higher ups didn't think Linux could do the job and they
didn't want to waste a 'good' box on what they considered an
experiment. That was 16 monhts and ZERO crashes ago. The WinXX
'solution' averaged a couple of crashes a day and couldn't be left on
overnight to allow after hours downloads from electronic taxpayers.
The clerk that runs it says it is easier to use than the WinXX setup
and KDE1 is just as easy to use as WinXX. She says the P200 solution
runs about twice as fast as the WinXX solution.
Finally, if folks had to install Linux distros the way they did when
Slackware first came out...... Only the GUI install programs are
giving Linux a fighting chance in the desktop arena. GUI apps are
rapidly taking over sever control too. With will designed GUI apps
users do not have to give up power, either.
The reign of the command line has come to an end.