Projects/Usability/HIG: Difference between revisions

    From KDE TechBase
    (89 intermediate revisions by 5 users not shown)
    Line 1: Line 1:
    = Introduction =
    Human interface guidelines (HIG) are software development documents that offer
    application developers a set of recommendations. Their aim is to improve the
    experience for users by making application interfaces more consistent and
    hence more intuitive and learnable.
    [[/About|Learn more about the philosophy behind the KDE HIG]]
    = Structure =
    = Structure =
    <div style="display: none;">
    == Conceptual Model ==
    == Conceptual Model ==
    * Real World, Vision
    * Have a clear [[Projects/Usability/HIG/Vision|vision]] what your application will achieve and what not.
    * Meet the needs of KDE's [[Projects/Usability/HIG/Persona|personas]] in your application.
    * Define a [[Projects/Usability/HIG/Scenario|scenario]] where persona(s) interact with your application.
    * Specify requirements considering [[Projects/Usability/HIG/Destinata|destinata]] and [[Projects/Usability/HIG/Animata|animata]] of users.
     
    == Design Vision and Principles ==
    * Get to know the [[Projects/Usability/HIG/Presentation/DesignVisionPrinciples|design vision and principles]] for KDE Applications and Workspaces.
     
    == Task Flow ==
    == Task Flow ==
    * Core usability goals, Use cases / User requirements, Task aggregation
    * Users should be able to complete tasks in natural [[Projects/Usability/HIG/WorkFlow|work flow]].
    * Personas, Scenarios, Usability criteria, Feature list
     
    == Organizational Model ==
    == Organizational Model ==
    * [[Terminology]]
    * Information architecture, Interface management, Window style, Basic arrangement, Screen design, Design Pattern
    * Information architecture, Interface management, Window style, Basic arrangement, Screen design, Design Pattern
    * [[Projects/Usability/HIG/CentralConfiguration|central configuration]] (content tbd.)
     
    * [[Projects/Usability/HIG/NotificationMechanism|Notification mechanism]] (content tbd.)
    * Central configuration
    *Minimize to tray (perhaps at behaviour>navigation)
    * Notification mechanism
    </div>
    * Minimize to tray
    * Processing of passwords
    * Implement a [[Projects/Usability/HIG/SearchPattern|search]] as common pattern.


    = Behaviour =
    = Behaviour =
    == Viewing and Navigation ==
    == Viewing and Navigation ==
    === General navigation ===
    * [[Projects/Usability/HIG/Dialogs|Dialogs]]
    * Accordion
    * [[Projects/Usability/HIG/Tabs_Pages|Tabs and Pages in Dialogs]]
    * Toolbar
    * Status bar
    * Paging
    === Access functions ===
    === Access functions ===
    * [[Projects/Usability/HIG/Menu_Bar|Menu Bar]]
    * Apply a [[Projects/Usability/HIG/Menu_Bar|menu bar]] to every standard application.
    * [[Projects/Usability/HIG/Buttons|Buttons]]
    * Try to omit the [[Projects/Usability/HIG/StatusBar| status bar]] from your application.
    ** [[Projects/Usability/HIG/Toggle_Buttons|Toggle Buttons]]
    * Provide a [[Projects/Usability/HIG/ContextMenu|context menu]] for controls with implicit functions.
    * Links
    * Provide a [[Projects/Usability/HIG/Toolbar|toolbar]] for frequently used functions.
    * Keyboard Access
    * Use a [[Projects/Usability/HIG/Buttons|push button]] to initiate an action when the user clicks it.
    ** [[Projects/Usability/HIG/Keyboard_Accelerators|Keyboard Accelerators]]
    * Use a [[Projects/Usability/HIG/Toggle_Buttons|toogle button]] to indicate a state, preferably in toolbars only.
    ** [[Projects/Usability/HIG/Keyboard_Shortcuts|Keyboard Shortcuts]]
    * Use a [[Projects/Usability/HIG/Command_Link|command link]] to navigate between pages.
    * Support keyboard access by [[Projects/Usability/HIG/Keyboard_Accelerators|accelerators]] and [[Projects/Usability/HIG/Keyboard_Shortcuts|shortcuts]].
    * Follow the guidelines for [[Projects/Usability/HIG/Dialogs|dialogs]] for secondary windows.
     
    === Grouping ===
    === Grouping ===
    * Group box, Panel
    * Arrange associated controls by using a labeled [[Projects/Usability/HIG/GroupBox| group box]] or an unlabeled [[Projects/Usability/HIG/GroupBox| frame]].
    * Splitter
    * Allow users to resize aligned groups by placing a [[Projects/Usability/HIG/Splitter| splitter]] between the groups.
    * Use [[Projects/Usability/HIG/TabControl|tabs]] to show related information on separate pages.
    * Provide an [[Projects/Usability/HIG/Accordion|accordion]] (aka tool box) for different views to content.
     
    === Complex views ===
    === Complex views ===
    * Use a [[Projects/Usability/HIG/ListView| List View]] to show some items out of one category.
    * Use a [[Projects/Usability/HIG/ListView| list view]] to show some items out of one category.
    * Tree view
    * Use a [[Projects/Usability/HIG/TreeView| tree view]] to show items with a single, natural, hierarchical categorization.
    * Grids
    * If you really need to create your own widget follow the guidelines for [[Projects/Usability/HIG/CustomControls| custom controls]].
    * If you really need to create your own widget follow the guidelines for [[Projects/Usability/HIG/CustomControls| custom controls]].
    * Double check the guidelines about plotting [[Projects/Usability/HIG/Diagram|diagram/charts]].


    == Editing and Manipulation ==
    == Editing and Manipulation ==
    === Selection ===
    === Selection ===
    * Use [[Projects/Usability/HIG/Radio Buttons|radio buttons]] for 1 of a few n selections.
    * Use [[Projects/Usability/HIG/Radio Buttons|radio buttons]] for selection of 1 out of a few items.
    * Use one or more [[Projects/Usability/HIG/Check_Box|check boxes]] for clear options or n of a few m selections.
    * Use one or more [[Projects/Usability/HIG/Check_Box|check boxes]] for clear options or to select items out of a small number of options.
    * Use a [[Projects/Usability/HIG/DropDown| drop-down]] list for 1 of a few n selection.
    * Use a [[Projects/Usability/HIG/DropDown| drop-down]] list for selection of 1 out of a small number of items.
    * Use a [[Projects/Usability/HIG/Combo_Box| combo box]] for 1 of a few n selection where users should be able to add items.
    * Use a [[Projects/Usability/HIG/Combo_Box| combo box]] to select 1 out of a small number of items where users should be able to add items.
    * Use a [[Projects/Usability/HIG/ListView|list view]] for 1 of some m (singular) selections.
    * Use a [[Projects/Usability/HIG/ListView|list view]] to select 1 singular item out of a potentially big list.
    * Apply the [[Projects/Usability/HIG/DualList| dual list]] pattern for n of m (multiple) selections.
    * Apply the [[Projects/Usability/HIG/DualList| dual list pattern]] for several selections out of a large number of (multiple) items.


    === Unconstrained input ===
    === Unconstrained input ===
    * Provide a [[Projects/Usability/HIG/LineEdit| line edit]] to enter one line of text.
    * Provide a [[Projects/Usability/HIG/LineEdit| line edit]] to enter one line of text.
    * Provide a [[Projects/Usability/HIG/TextEdit| text edit]] to enter multiple lines of texts.
    * Provide a [[Projects/Usability/HIG/TextEdit| text edit]] to enter multiple lines of texts.
    * Consider to provide inline editing with complex views.
    * Use a [[Projects/Usability/HIG/TableView| table view]] to arrange data in rows and columns with inline editing feature.


    === Constrained input ===
    === Constrained input ===
    * Use a [[Projects/Usability/HIG/Spin_Box|Spin Box]] for numerical input within a range and with fix steps.
    * Use a [[Projects/Usability/HIG/Spin_Box|spin box]] for numerical input within a range and with fix steps.
    * Use a [[Projects/Usability/HIG/Slider|Slider]] for arbitrary changes within a defined range.
    * Use a [[Projects/Usability/HIG/Slider|slider]] for arbitrary changes within a defined range.
    * (Under construction): Numeric input with both large changes and precise control: [[Projects/Usability/HIG/Slider_and_Spin_Box|Slider and Spin Box]]
    * Apply the [[Projects/Usability/HIG/Slider_and_Spin_Box|slider and spin box pattern]] for numeric input with both large changes and precise control.
    * Use [[Projects/Usability/HIG/Date_Time_Pickers|Date and Time Pickers]] for formatted input of datum, time of day, or periods etc.
    * Use [[Projects/Usability/HIG/Date_Time_Pickers|date and time pickers]] for formatted input of datum, time of day, or periods etc.


    == User Assistance ==
    == User Assistance ==
    Line 66: Line 81:
    === System triggered notification ===
    === System triggered notification ===
    * Provide a [[Projects/Usability/HIG/MessageWidget| message panel]] to inform users about non-critical problems.
    * Provide a [[Projects/Usability/HIG/MessageWidget| message panel]] to inform users about non-critical problems.
    * Use a [[Projects/Usability/HIG/Notifications|notification]] as system-triggered message to acknowledge about events out of the current context.
    * Use a [[Projects/Usability/HIG/Notifications|notification]] as system-triggered message to inform about events out of the current context.
    * Show a [[Projects/Usability/HIG/ProgressIndicator| progress indicator]] for lengthy actions.
    * Show a [[Projects/Usability/HIG/ProgressIndicator| progress indicator]] for lengthy actions.


    Line 76: Line 91:


    = Presentation =
    = Presentation =
    == Layout ==
    Become familiar with [[Projects/Usability/HIG/Presentation/DesignVisionPrinciples|design vision and principles]] to understand how the visual design plays its role in fulfilling them.
    * Resizing
    * Default and minimal size
    * Spacing
    * Carefully place control according the KDE [[Projects/Usability/HIG/Alignment| alignment]] style.
    * Do not use [[Projects/Usability/HIG/Color| color]] as primary method of communication.
    * Icons


    == Style ==
    == Style ==
    == Text ==
    The following style elements provide a palette to express your own unique vision while preserving the shared design vision.
    * Language localizations
    * Use [[Projects/Usability/HIG/Color|colors]] consistently.
    * Static text
    * Ensure [[Projects/Usability/HIG/Style/Backgrounds|backgrounds and edges]] honor the design vision.
    * [[Projects/Usability/HIG/Labels|Control Labels]]
    * [[Projects/Usability/HIG/IconDesign|Icon design and use]] should be consistent throughout the interface.
    ** [[Projects/Usability/HIG/KNS|KNewStuff Button Labels]]
    * Layout visual elements to reduce clutter and ensure balance.
    * [[Projects/Usability/HIG/Wording|Wording]]
    ** Use appropriate [[Projects/Usability/HIG/Placement|size and spacing]] to create breathing room.
    * [[Projects/Usability/HIG/Ellipsis|Ellipsis]]
    ** Follow the [[Projects/Usability/HIG/Alignment|alignment]] guidelines.
    * [[Projects/Usability/HIG/Capitalization|Capitalization]]
    ** [[Projects/Usability/HIG/IconsAndText|Icons with text]] should be laid out in a consistent manner.
    * [[Projects/Usability/HIG/Contractions|Contractions (don't, there's, etc.)]]
    * Treat [[Projects/Usability/HIG/Style/Typography|typography]] with the same care as any other aspect of the visual design.
    * [[Projects/Usability/HIG/Exclamation_points|Exclamation Points]]
    ** Keep [[Projects/Usability/HIG/Wording|wording]] consistent and easy to understand.
    ** Understand when and where to apply [[Projects/Usability/HIG/Capitalization|capitalization]].
    ** Apply standard [[Projects/Usability/HIG/Labels|control labels]] in your app.
    ** Use [[Projects/Usability/HIG/StaticText|static text]] for main instruction and supplemental information.
    ** Account for [[Projects/Usability/HIG/localization|localization]] of your project.


    See also:
    == Building blocks ==
    * [[Projects/Usability/HIG/Style/BuildingBlocks|Building blocks]] help make it easier to design applications that satisfy the design vision without needing to always create your own custom UI elements.


    * [[Projects/Usability/HIG/Tablet/Index|HIG for Plasma Active]]
    == Visual Design Tools and Resources ==
    * [[Projects/Usability/HIG/Netbook/Index|HIG for Plasma Netbook]]
    * Try the [[Projects/Usability/HIG/MockupToolkit|mock-up toolkit]] which includes UI controls stencils, color swatches and fonts to help create the visual design your application.
    * Ask for help and share your visual design ideas on the [http://forum.kde.org/viewforum.php?f=285 KDE Visual Design Group forum].


    =Contributing=
    =Contributing=
    Line 109: Line 124:
    Our Human Interface Guidelines are a work in progress and we need your help. Visit the [[Projects/Usability/HIG/Contributing|Contributing page]] to report problems or get involved.
    Our Human Interface Guidelines are a work in progress and we need your help. Visit the [[Projects/Usability/HIG/Contributing|Contributing page]] to report problems or get involved.


    =Index=
    = See also =
     
    * [http://techbase.kde.org/Projects/Usability/HIG/Tablet/Index KDE HIG for Plasma Active]
    '''B'''
    * [http://techbase.kde.org/Projects/Usability/HIG/Netbook/Index KDE HIG for Plasma Netbook]
     
    * [http://hcibib.org/sam Guidelines for Designing User Interface Software (Smith & Mosier, 1986)]
    * [[Projects/Usability/HIG/Buttons|Buttons]]
    * [http://msdn.microsoft.com/en-us/library/windows/desktop/aa511258.aspx Microsoft Windows User Experience Interaction Guidelines]
    * [https://developer.apple.com/library/mac/documentation/UserExperience/Conceptual/AppleHIGuidelines/Intro/Intro.html Mac OS X Human Interface Guidelines]
    * [https://developer.gnome.org/hig-book/stable/ GNOME Human Interface Guidelines (v2.2.3)]
    * [http://elementaryos.org/docs/human-interface-guidelines elementary OS HIG]
    * [http://developer.android.com/guide/practices/index.html Android User Interface Guidelines]


    '''C'''
    * [[Projects/Usability/HIG/Capitalization|Capitalization]]
    * [[Projects/Usability/HIG/Contractions|Contractions (don't, there's, etc.)]]
    * [[Projects/Usability/HIG/Check_Box|Check Box]]
    * [[Projects/Usability/HIG/Combo_Box|Combo Box]]
    '''D'''
    * [[Projects/Usability/HIG/Date_Time_Pickers|Date and Time Pickers]]
    * [[Projects/Usability/HIG/Dialogs|Dialogs]]
    '''E'''
    * [[Projects/Usability/HIG/Ellipsis|Ellipsis]]
    * [[Projects/Usability/HIG/Exclamation_points|Exclamation Points]]
    '''F'''
    * [[Projects/Usability/HIG/Form_Label_Alignment|Forms: Label Alignment]]
    '''K'''
    * [[Projects/Usability/HIG/KNS|KNewStuff Button Labels]]
    * [[Projects/Usability/HIG/Keyboard_Accelerators|Keyboard Accelerators]]
    * [[Projects/Usability/HIG/Keyboard_Shortcuts|Keyboard Shortcuts]]
    '''L'''
    * [[Projects/Usability/HIG/Labels|Labels]]
    * [[Projects/Usability/HIG/ListView|List Views]]
    '''M'''
    * [[Projects/Usability/HIG/Menu_Bar|Menu Bar]]
    * [[Projects/Usability/HIG/Messages|Messages]]
    '''R'''
    * [[Projects/Usability/HIG/Radio Buttons|Radio Buttons]]
    '''S'''
    * [[Projects/Usability/HIG/Slider|Slider]]
    * [[Projects/Usability/HIG/Slider_and_Spin_Box|Slider and Spin Box]]
    * [[Projects/Usability/HIG/Spin_Box|Spin Box]]
    '''T'''
    * [[Projects/Usability/HIG/Tabs_Pages|Tabs and Pages in Dialogs]]
    * [[Projects/Usability/HIG/Toggle_Buttons|Toggle Buttons]]
    '''W'''
    * [[Projects/Usability/HIG/Wording|Wording]]


    [[Category:Usability]]
    [[Category:Usability]]
    ----
    '''Legacy Stuff'''
    [[Projects/Usability/HIG/Lists_Rich_Lists|List Views]]
    Please add any guidelines questions or requests to the [[Projects/Usability/HIG_Questions|HIG Questions]] page.
    Also see the [[Projects/Usability/HIG/SOU_Workspace|Season of Usability HIG & Design Patterns Workspace]].

    Revision as of 06:36, 29 March 2014

    Introduction

    Human interface guidelines (HIG) are software development documents that offer application developers a set of recommendations. Their aim is to improve the experience for users by making application interfaces more consistent and hence more intuitive and learnable.

    Learn more about the philosophy behind the KDE HIG

    Structure

    Conceptual Model

    • Have a clear vision what your application will achieve and what not.
    • Meet the needs of KDE's personas in your application.
    • Define a scenario where persona(s) interact with your application.
    • Specify requirements considering destinata and animata of users.

    Design Vision and Principles

    Task Flow

    • Users should be able to complete tasks in natural work flow.

    Organizational Model

    • Information architecture, Interface management, Window style, Basic arrangement, Screen design, Design Pattern
    • Central configuration
    • Notification mechanism
    • Minimize to tray
    • Processing of passwords
    • Implement a search as common pattern.

    Behaviour

    Viewing and Navigation

    Access functions

    Grouping

    • Arrange associated controls by using a labeled group box or an unlabeled frame.
    • Allow users to resize aligned groups by placing a splitter between the groups.
    • Use tabs to show related information on separate pages.
    • Provide an accordion (aka tool box) for different views to content.

    Complex views

    • Use a list view to show some items out of one category.
    • Use a tree view to show items with a single, natural, hierarchical categorization.
    • If you really need to create your own widget follow the guidelines for custom controls.
    • Double check the guidelines about plotting diagram/charts.

    Editing and Manipulation

    Selection

    • Use radio buttons for selection of 1 out of a few items.
    • Use one or more check boxes for clear options or to select items out of a small number of options.
    • Use a drop-down list for selection of 1 out of a small number of items.
    • Use a combo box to select 1 out of a small number of items where users should be able to add items.
    • Use a list view to select 1 singular item out of a potentially big list.
    • Apply the dual list pattern for several selections out of a large number of (multiple) items.

    Unconstrained input

    • Provide a line edit to enter one line of text.
    • Provide a text edit to enter multiple lines of texts.
    • Use a table view to arrange data in rows and columns with inline editing feature.

    Constrained input

    • Use a spin box for numerical input within a range and with fix steps.
    • Use a slider for arbitrary changes within a defined range.
    • Apply the slider and spin box pattern for numeric input with both large changes and precise control.
    • Use date and time pickers for formatted input of datum, time of day, or periods etc.

    User Assistance

    User-driven information

    • Provide tool-tips for user driven information.

    System triggered notification

    Disruptive messages

    • Show a modal message dialog if the processing has reached an unexpected condition that needs interaction.

    Help system

    • Support the user by an elaborated interface or per help system.

    Presentation

    Become familiar with design vision and principles to understand how the visual design plays its role in fulfilling them.

    Style

    The following style elements provide a palette to express your own unique vision while preserving the shared design vision.

    Building blocks

    • Building blocks help make it easier to design applications that satisfy the design vision without needing to always create your own custom UI elements.

    Visual Design Tools and Resources

    • Try the mock-up toolkit which includes UI controls stencils, color swatches and fonts to help create the visual design your application.
    • Ask for help and share your visual design ideas on the KDE Visual Design Group forum.

    Contributing

    Didn't find what you were looking for?

    A guide to the guide can be found at the about page.

    Our Human Interface Guidelines are a work in progress and we need your help. Visit the Contributing page to report problems or get involved.

    See also