<page xmlns="http://projectmallard.org/1.0/"
      type="topic"
      id="application-basics">

  <info>
    <credit type="author">
      <name>Allan Day</name>
      <email>aday@gnome.org</email>
    </credit>
    <include href="legal.xml" xmlns="http://www.w3.org/2001/XInclude"/>
    <desc>Basic application characteristics.</desc>    
  </info>

<title>Application basics</title>

<p>These Human Interface Guidelines provide design guidance on the creation of GNOME applications. Given this focus on applications, this page provides a definition of applications from a user experience perspective. It also provides guidance on basic application behavior and characteristics.</p>

<p>The application model allows users to understand how software is distributed, installed and removed, as well as how that software behaves when in use. Ensuring that your software behaves according to this model will therefore help to ensure that it is predictable and conforms to user expectations. It will also ensure correct integration with system tools for installing and removing applications.</p>

<section id="application-definition">
<title>What is an application?</title>

<p>The following list of characteristics provides a basic definition of an application. An application is a distinct piece of software which:</p>

<list>
<item><p>Can be individually installed and removed from the system.</p></item>
<item><p>Does not affect or interfere with the behavior of other applications.</p></item>
<item><p>Does not rely on other applications in order to run.</p></item>
<item><p>Provides at least one <link xref="primary-windows">primary window</link>.</p></item>
<item><p>Has a unique name and <link xref="icons-and-artwork#application-icons">icon</link>.</p></item>
<item><p>Has an application launcher.</p></item>
</list>

<p>A key theme in this definition is that applications are intended to be independent of other applications. This ensures flexibility, predictability, and simplicity of use.</p>

<p>Of course, there are other characteristics that are expected of applications, including standard window behavior, system integration, and application metadata. Guidance on these aspects of applications can be found elsewhere.</p>

<!-- Add a section on application launchers? -->

</section>

<section id="application-names">
<title>Naming your application</title>

<p>An application’s name is vital. It is what users will be first exposed to, and will help them decide whether they want to use an application or not. It is a major part of your application’s public face.</p>

<p>An application name plays a number of functions:</p>

<list>
<item><p>It must advertise your application to potential users.</p></item>
<item><p>It should serve to reinforce a positive identity, and have expressive qualities.</p></item>
<item><p>It needs to identify your application in the systems where it is installed and run.</p></item>
</list>

<p>Ensure that your application name is short - fewer than 15 characters. This will ensure that it is always displayed in full within a GNOME 3 environment.</p>

<p>Additionally, choose an application name that is easy to understand and communicates your application’s functionality. Avoid references which will not be understood or be familiar to potential users, such as obscure cultural references, inside jokes and acronyms. Instead, pick a name that references what your application does, or the domain in which it operates.</p>

</section>

<!-- Possible additional section on defining scope. "A successful application does one thing, and does it well." -->

</page>
