home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / utils / gadlayou.lha / Style_Guide < prev    next >
Text File  |  1993-03-30  |  19KB  |  366 lines

  1.  
  2.                        Judging a Book by its Cover:
  3.                             A Synopsis of the
  4.                     "Amiga User Interface Style Guide"
  5.  
  6.                           Copyright (c) 1993 by
  7.                              Timothy J. Aston
  8.                            All Rights Reserved
  9.  
  10.                            Editor: Mark Rickan
  11.  
  12.  
  13. * Introduction:
  14.  
  15. If you've ever used such graphic operating systems as the Macintosh,
  16. Windows on a PC-clone, or a NeXT, you've likely come to appreciate the
  17. consistency in the way their applications both appear and operate. Through
  18. the enforcement of strict interface guidelines and the increasing
  19. competition among vendors, developers have become particularly concerned
  20. with how their software conveys a sense of professionalism and attention 
  21. to detail. The important factor here is "consistency" in the look and
  22. functionality of different applications running under the same operating
  23. system.  Apple, Microsoft, NeXT and others created a set of guidelines to
  24. ensure that developers would provide applications that would look and act
  25. alike on their particular systems. Functions common to most applications,
  26. such as selecting a file, would then be performed in an identical fashion
  27. in all applications.
  28.  
  29. In the formative years of the Amiga, many applications could be described 
  30. as in a state of chaos when it came to user interface design.  With no
  31. real established standards and a limited set of resources for product
  32. development, many programmers inevitably developed software on the basis
  33. of their own impressions of how a software package should look and feel.
  34. Anyone that has either owned or used an Amiga since the days of Release
  35. 1.3 of the operating system won't need to be reminded that Release 2 was a
  36. major revolution to the Amiga as a whole.  This revision of the operating
  37. system and its graphic user interface (+) -- or GUI, pronounced "gooey" --
  38. forever changed the way users would interact with the the Amiga.  With an
  39. impressive new 3-dimensional look, 2.0 heralded the beginning of a new
  40. era.
  41.  
  42. Today, programmers have can access a variety of functions in the operating
  43. system to create attractive and powerful user interfaces for their
  44. software.  In addition, Commodore has provided a set of guidelines for
  45. software development which are embodied in the "Amiga User Interface Style
  46. Guide".  This book brought to the Amiga an element which had traditionally
  47. been absent: user interface standards. The text covers a broad spectrum of
  48. user interface issues such as pull-down menu layout, requester design,
  49. ARexx command interfaces and keyboard equivalents.  Developers now have
  50. official guidelines they need to ensure  that their applications will be
  51. consistent, powerful and easy to use.
  52.  
  53. (+) Although the term coined by MicroSoft is in fact "graphical user
  54.     interface", I have used the word "graphic" instead, as there is no
  55.     such word in the English language as "graphical".
  56.  
  57.  
  58.  * The Problem:
  59.  
  60. Sadly, this major advancement for the Amiga has turned into somewhat of
  61. a disappointment.  What could have led to a major step forward in
  62. the overall quality of Amiga software has not yet been realized to its
  63. full potential.  Though the Style Guide has been available for almost two
  64. years now, there have been almost no commercial, and only a few shareware
  65. or public domain software packages that follow its guidelines.
  66.  
  67. Why is this so?  If the comments in the introduction are indeed true, why
  68. haven't the guidelines laid out in the Style Guide been heartily embraced
  69. by developers?  The reason appears to be two-fold:
  70.  
  71. 1) Lack of knowledge:
  72.  
  73. A large number of people, particularly users, are not aware of the
  74. Style Guide, nor have they come to appreciate how important standards are.
  75.  
  76. 2) Insistence on creative freedom:
  77.  
  78. Among many developers, there is a tendency to create software which looks
  79. and acts according to personal preferences. This is also coupled with
  80. concerns to continue supporting the now obsolete Release 1.3 revision
  81. of the Amiga's OS. Because the Style Guide assumes Release 2, it is
  82. difficult to write Style Guide compliant software that still runs on
  83. older versions of the OS.
  84.  
  85. One of the goals of this document is to help address the first reason. 
  86. By learning that standards exist, it is hoped that users will increasingly
  87. appreciate the need for programs that follow these standards.  In the
  88. following section, a brief overview of some of these standards will be
  89. provided to give users some idea of what constitutes a standard interface.
  90.  
  91.  
  92.  * The Guidelines:
  93.  
  94. Some people seem to be of the opinion that as long as their programmes 
  95. conform to the 3-D look of Release 2, that their software may be
  96. considered as having a "standard user interface".  This could not be
  97. farther from the truth.  The Style Guide contains a very extensive list of
  98. guidelines, all of which should be followed as closely as possible in
  99. order to earn the distinction of being style-guide compliant.
  100.  
  101. I will now take some time to provide a brief synopsis of some of these
  102. guidelines.  This overview will give users a basic understanding of how an
  103. Amiga application should act.  It may also be helpful as an introduction
  104. for developers.  Please keep in mind however, that it is essential to
  105. obtain a copy of the Style Guide before you release any software in order
  106. to make certain that you are fully compliant.
  107.  
  108.   - The Basename:
  109.  
  110.     Every program should have a basename.  This is a simple string that
  111.     identifies the program.  For the most part, this can simply be the
  112.     name of your programmes binary.  If the program has a fairly long
  113.     name, it should be abbreviated to something more manageable.  But be
  114.     careful, if you abbreviate too much, your basename will become
  115.     ambiguous and fail to properly identify your program.
  116.  
  117.   - Pull-Down Menus:
  118.  
  119.     Most applications share a set of basic functions.  For example, just
  120.     about every program has to allow the user to load and save a file. 
  121.     Most programmes also need to let users change program options. 
  122.     Other common functions include items such as support for the clipboard
  123.     and macros and other features. These functions should be laid out in the
  124.     pull-down menus in a very specific manner, using specific names.
  125.     Additionally, pull-down menus should use the same font as the screen
  126.     they are on, and should be drawn in the pen colours given to you by the
  127.     OS. (This is accomplished by using functions in the GadTools library).
  128.  
  129.     Briefly, here is how the Style Guide states the menus should appear.
  130.     Of course, not all programmes will implement all of these items, since
  131.     they are not appropriate for all applications.
  132.  
  133.    Project            Edit        Macros              Settings
  134.      New         N      Cut   X     Start Learning    / Option
  135.      Open...     O      Copy  C     Stop Learning     / Option
  136.    <bar>                Paste V     Assign Macro...   / Create Icons?
  137.      Save        S    <bar>         Load...           <bar>
  138.      Save As...  A      Erase Z     Save..              Option...
  139.    <bar>              <bar>                             Option           >>
  140.      Print              Undo                          <bar>
  141.      Print As..         Redo                            Load Settings...
  142.    <bar>                                                Save Settings
  143.      Hide                                               Save Settings As...
  144.      Reveal...
  145.      Close
  146.    <bar>
  147.      About...
  148.    <bar>
  149.      Exit Level
  150.    <bar>
  151.      Quit Program... Q
  152.  
  153.     A few notes on the above: First, the capital letters following some
  154.     items denote Amiga key equivalents, the "/" refers to an item that may
  155.     be "checked", ">>" means that the item brings up a submenu, and <bar>
  156.     represents the standard bar separator item.
  157.  
  158.     Stylistic points you should note include the use of the elliptics
  159.     ("...") for items that will bring up some kind of requester in response
  160.     to their selection.  In the "Settings", note how toggle items come first,
  161.     followed by items that bring up a requester, followed by items that
  162.     bring up sub-menus. Note also the placement of the bars.  This menu should
  163.     be the last menu unless you have implemented the "User" menu described
  164.     following.
  165.  
  166.     A menu called "User" may be provided for user defined macros.  This
  167.     menu will be variable length and could hold anything the user wishes
  168.     to configure for it.  This should be the last menu, pushing the
  169.     "Settings" to the second to last position.
  170.  
  171.   - Preferences Files:
  172.  
  173.     As mentioned above, any program that allows users to adjust its
  174.     settings in any way should have a "Settings" menu from which users can
  175.     do this.  For the most part, you will also want to be able to load and
  176.     save these settings.  If a program has only a very small amount of
  177.     things that it has to save as a part of the settings (eg. half a dozen
  178.     or less variables), then a convenient way is to save them as "tool
  179.     types" in the program's icon file (the .info file).  In most cases,
  180.     you'll have a fair number of settings options, thus you'll need to keep
  181.     them in a seperate file.  The way you decide which file to use is by
  182.     following these steps according to sequence:
  183.  
  184.       1. Check  for a user supplied settings filename, via either the
  185.          SETTINGS workbench tool type or command line keyword.
  186.       2. Look in the current directory for a file called <basename>.prefs.
  187.       3. Look in the directory in which the program resides in
  188.          (programmers: use the special AmigaDOS assignment PROGDIR: to
  189.          facilitate this) for <basename>.prefs.
  190.       4: Look in ENV:<basename>/<basename>.prefs.
  191.  
  192.     The Style Guide suggests using the IFF format for your settings files.
  193.  
  194.   - Keyboard controls:
  195.  
  196.     It is important for software to have facilities for effective keyboard
  197.     and mouse control.  Try to make it so that you can do as much as
  198.     possible with both the keyboard and the mouse, but don't go to extremes 
  199.     simply for the purpose of providing complete keyboard control.
  200.  
  201.     For example, if you try to give every gadget in a requester a keyboard
  202.     equivalent, you'll probably end up having keys that have little
  203.     relation the gadget text.
  204.  
  205.     Keyboard equivalents in menus are simple to implement, as the OS does
  206.     just about all the work for you.  Just remember to follow the equivalents
  207.     suggested by the Style Guide.  Gadgets require a little more work in order
  208.     to give them keyboard equivalents.  The operating system will handle the
  209.     placement of an underscore under the character that will serve as an
  210.     equivalent to gadget selection. But remember, you have to check for the
  211.     keypresses yourself.  These keypresses should be accepted unqualified,
  212.     accept in the case of cycle and listview gadgets, where the unqualified
  213.     key should give you the next item in the gadget and a shifted entry
  214.     selects the previous item.
  215.  
  216.     The cursor keys should be used to move around within your project. 
  217.     Unqualified, they should move you up, down, left or right one "unit"
  218.     (eg. a character in a word processor).  <shift> plus a cursor key
  219.     should move you to the appropriate extreme within the current view of
  220.     the window, and if already there, move you along the size of the view.
  221.     <control> plus a cursor should move you to the appropriate extreme of
  222.     the project.  <alt> along with a cursor is not defined, its usage is
  223.     left up to the application.
  224.  
  225.   - ARexx:
  226.  
  227.     As with menus, we see a lot of programs that have ARexx commands on
  228.     different applications that are similar in function, but have different
  229.     names.  The Style Guide attempts to remedy this somewhat by providing
  230.     a set of standard commands.  Naturally, the scope of commands an
  231.     application might support will go far beyond what can be detailed in
  232.     any document, but a program should support as many of the Style Guide
  233.     commands as possible.
  234.  
  235.     The ARexx port name of an application has a naming convention:
  236.     <basename>.<instance> where <instance> is the execution instance of
  237.     the program in case it has been run multiple times at once by the
  238.     user. It can also be a project number in the event that the program lets
  239.     you work on several projects at once.
  240.  
  241.     Even simple program should try to support as many ARexx commands
  242.     as possible, even if this amounts to as few as half a dozen commands.
  243.  
  244.  
  245.  * The Style Guide in Practice:
  246.  
  247. Naturally, it is going to be difficult for programmers to have their
  248. applications follow the Style Guide word for word.  Some things will have
  249. to be left out if not supported by the application, and when it comes to
  250. adding things not discussed in the Style Guide, you're on your own. 
  251. There are also going to be cases where the Style Guide specifications
  252. simply will not make provisions for enough power, and functions will have
  253. to be implemented differently.
  254.  
  255. All you have to do is be a little mindful when implementing the Style
  256. Guide.  Try to follow it as closely as you can.  When it comes to adding
  257. things that are beyond what is in the Style Guide, look at what else is
  258. out there to see if there are some common practises.  A fine example of
  259. this is the folder gadget for bringing up a file requester to select a
  260. directory.  This was something we originally saw in Commodore's Fountain,
  261. and has since appeared in other software such as ToolManager and Term
  262. It is not something that is talked about in the Style Guide, but it
  263. is a common practise, and from the point of view of the user, that's
  264. almost the same thing as a standard.
  265.  
  266. There are also a few cases where your opinion may differ from the official
  267. guidelines.  One example is with cursor movements.  The Style Guide says
  268. that <control> + <up cursor> or <down cursor> should move you to the upper
  269. or lower extreme respectively.  What we see most commonly however is <alt>
  270. being used instead of <control>.  I find the best idea is to use both,
  271. since the function for <alt> can be program specific.
  272.  
  273. There also appears to be at least one case where you can make a very
  274. substantial argument against a Style Guide suggestion.  This one case
  275. that I am familiar with is with the SELECT ARexx command.  This seems to be
  276. a poor choice in name, since SELECT is a built-in ARexx command, and to
  277. actually send this command to an application via ARexx requires extra care.
  278. My suggestion is to implement this command, but to also add a command called
  279. REVEAL as a synonym.
  280.  
  281. I would also like to point out that the Style Guide really only sets up
  282. guidelines for a MINIMAL user interface.  You should comply with its
  283. guidelines, but to have an interface that goes beyond merely adequate,
  284. you'll have to do more.  The few Style Guide compliant GUIs I have seen
  285. have been quite dull indeed.
  286.  
  287. Don't be afraid to use images in your gadgets or anywhere in your
  288. program (but please note, if your program runs on the Workbench screen
  289. or any place that the user can adjust the pens for, you'll have to be
  290. prepared to remap your images to match the user's pen selection).  With
  291. gadgets you have far more than GadTools to work with; you also have
  292. BOOPSI, which is a tremendously powerful addition to Intuition and an
  293. integral part of Release 2.
  294.  
  295. On the other hand, don't go overboard.  It's okay to be creative with your
  296. GUI, just keep good taste and the standards in mind while you do so.
  297. You may think you have an idea for a GUI that would be really attractive,
  298. but before you go ahead and implement it, ask yourself if its really
  299. consistent with other Amiga GUIs that you could consider to be exemplary.
  300.  
  301.  
  302.   * Pet Peeves:
  303.  
  304. These are some things I have noticed in a lot of Amiga software that I
  305. personally find really annoying, and would love to see an end to all of
  306. them:
  307.  
  308.  - Programs that save their data files in the S: directory.  "S" stands
  309.    for "script", this directory is mainly used for AmigaDOS script files,
  310.    leave it alone.  The Style Guide defines very clearly where data files
  311.    should be placed.  At the very least, please use PROGDIR:.
  312.  - Programs that ASSUME you are using an 8x8 font.  Properly written
  313.    software should adjust to the user's screen font setting (which may
  314.    not be proportional). If you're not prepared to do this, the least
  315.    you can do is make certain that you have an 8x8 font, and ask for it
  316.    if you don't.
  317.  - It's very annoying when you can't choose the screen mode an
  318.    application runs in.  By default, programmes should open in the same
  319.    mode as the Workbench screen, while allowing you to change into any of
  320.    the Amiga's allowed screen modes (check the display database for this).
  321.  - Please try to get as many defaults as you can from a user's preferences
  322.    settings.  The screen mode example above is just one.  Instead of
  323.    defaulting to Topaz 8, default to the user's screen font selection. 
  324.    The system preferences are there for you to make use of, so do so.
  325.  - Don't make use of non-standard requesters such as those provided by
  326.    the ReqTools library.  User's can patch their system to use these if
  327.    they want to, but your application should always be coded to use the
  328.    standard system requesters.
  329.  - Stay away from forcing users to make special "assigns".  With Release 2
  330.    there is little need for this since it is a trivial matter to find out
  331.    what directory your program resides in (use the special DOS
  332.    assignment PROGDIR:).
  333.  
  334.  
  335.  * About the Author:
  336.  
  337. I am student studying computing and information science at the University
  338. of Guelph in Ontario Canada.  I have owned an Amiga since 1988.  My first
  339. major programming project on the Amiga was TransAmiga BBS, which I continue
  340. to develop.  More recently, I have written a system for programmers called
  341. GadLayout that greatly simplifies the task of making gadgets adjust
  342. dynamically to user font and language preferences (VERY important in being
  343. Style Guide compliant).  My main focus over the last 6 months has been in
  344. writing a text editor which I hope will serve as an example of what a
  345. style-guide compliant user interface should look like.
  346.  
  347. As you will have probably already gathered, user interface issues are my
  348. main interest in computing.  I am available for any consulting or design
  349. work if you need help with the GUI in software you are developing.
  350.  
  351. If you wish to get in touch with me, any of the following are methods
  352. are at your disposable, and are listed in order of preference:
  353.  
  354.   InterNet E-Mail: cs1087@snowhite.cis.uoguelph.ca
  355.   FidoNet Netmail: 1:247/192.0
  356.               IRC: Timmer @ #amiga
  357.               FAX: (416)682-3501
  358.      Regular Mail: 128 Riverview Blvd.
  359.                    St. Catharines, Ont.
  360.                    L2T 3M2
  361.                    CANADA
  362.  
  363. If you want suggestions, critisisms or insults about a GUI, feel free to
  364. contact me.  I'm eager to help if it means that we'll get better looking,
  365. more functional and more standard GUIs out there in the Amiga community.
  366.