<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=John.broomfield</id>
	<title>Open-Xchange - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=John.broomfield"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Special:Contributions/John.broomfield"/>
	<updated>2026-10-06T02:01:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16454</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16454"/>
		<updated>2013-11-14T17:42:42Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Congratulations you have just built your first app for OX App Suite, but please keep in mind that there are [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] for developing for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended that you read and understand all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] provide you for OX App Suite development.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* You can read this to get a better overview of [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16453</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16453"/>
		<updated>2013-11-14T17:42:13Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Congratulations you have just built your first app for OX App Suite, but please keep in mind that there are [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] for developing for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended that you read and understand all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] provide you for OX App Suite development.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* You can read this to get a better overview [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16452</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16452"/>
		<updated>2013-11-14T17:41:14Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Congratulations you have just built your first app for OX App Suite, but please keep in mind that there are [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] for developing for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended that you read and understand all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] provide you for OX App Suite development.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* To get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16451</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16451"/>
		<updated>2013-11-14T17:39:08Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Congratulations you have just built your first app for OX App Suite, but please keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] for developing for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16450</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16450"/>
		<updated>2013-11-14T17:38:20Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Further Reading */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* Congratulations you have just built your first app for OX App Suite, but please keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16449</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16449"/>
		<updated>2013-11-14T17:36:46Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Packaging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is finished you will probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainers Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (themes do most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there are already tools available to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16448</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16448"/>
		<updated>2013-11-14T17:30:54Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Testing an App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as the server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite by opening your browser using this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code for your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoid and fix typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16447</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16447"/>
		<updated>2013-11-14T17:28:26Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Building an App */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It first has to be processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16446</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16446"/>
		<updated>2013-11-14T17:27:18Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing an App ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16445</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16445"/>
		<updated>2013-11-14T17:27:03Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building an App ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16444</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16444"/>
		<updated>2013-11-14T17:26:41Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Writing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing an App ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16443</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16443"/>
		<updated>2013-11-14T17:25:30Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Create Workspace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create a Workspace ==&lt;br /&gt;
&lt;br /&gt;
All your app development can take place inside one working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions please pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain elements are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16442</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16442"/>
		<updated>2013-11-14T17:20:51Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Installing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing the Development Tools ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory called &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create Workspace ==&lt;br /&gt;
&lt;br /&gt;
Your entire work on an app can take place inside a working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all relative paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions, pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain element are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16441</id>
		<title>AppSuite:GettingStarted 7.4.2</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:GettingStarted_7.4.2&amp;diff=16441"/>
		<updated>2013-11-14T17:17:15Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Getting Started&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; padding: 10px;&amp;quot;&amp;gt;[[File:OX_AppSuite_UI_Development_Workflow.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
Hello and welcome to the world of OX App Suite development. This document is designed to get you started with developing your first app for OX App Suite as quickly and simply as possible. However, along the way we will also tempt you to learn more by linking to some more in-depth documentation about the various topics we cover. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
First, you need to install some tools which are necessary for UI development. For now, the simplest way is to download the source of the OX App Suite UI. Since the source code is kept in a [http://git-scm.com/ Git] repository, you will need &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt; to download it:&lt;br /&gt;
&lt;br /&gt;
 $ git clone --depth 1 -b release-7.4.1 https://code.open-xchange.com/git/wd/frontend/web&lt;br /&gt;
&lt;br /&gt;
This downloads the latest version and unpacks it into a subdirectory &amp;lt;tt&amp;gt;web&amp;lt;/tt&amp;gt; in the current directory.&lt;br /&gt;
&lt;br /&gt;
The option &amp;lt;tt&amp;gt;--depth 1&amp;lt;/tt&amp;gt; prevents the download of the entire history, and reduces the download size from hundreds of MB to less than 20MB. The option &amp;lt;tt&amp;gt;-b release-7.4.1&amp;lt;/tt&amp;gt; specifies a git branch. The full functionality described in this article is only available in the branch &amp;lt;tt&amp;gt;release-7.4.1&amp;lt;/tt&amp;gt; until 7.4.1 is released.&lt;br /&gt;
&lt;br /&gt;
The tools which you will need are contained in the directory &amp;lt;tt&amp;gt;ui/bin&amp;lt;/tt&amp;gt;. To simplify their use, you should add this directory to your &amp;lt;tt&amp;gt;$PATH&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ export PATH=&amp;quot;$PATH:$(pwd)/web/ui/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Create Workspace ==&lt;br /&gt;
&lt;br /&gt;
Your entire work on an app can take place inside a working directory. The examples will assume you have created a directory named &amp;lt;tt&amp;gt;myapp&amp;lt;/tt&amp;gt; inside your home directory:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir ~/myapp&lt;br /&gt;
 $ cd ~/myapp&lt;br /&gt;
&lt;br /&gt;
It doesn&#039;t need to be in your home directory, and the actual name should reflect the name of your app. The main point is that all commands will be executed in this directory and all relative paths will be relative to this directory from now on.&lt;br /&gt;
&lt;br /&gt;
The source code of your app will reside in the subfolder named &amp;lt;tt&amp;gt;apps&amp;lt;/tt&amp;gt;. To avoid name collisions, pick a unique subfolder inside that. The easiest and recommended way is to use a domain name that you own. Typically, the domain element are reversed, like in Java. &amp;lt;tt&amp;gt;example.com&amp;lt;/tt&amp;gt; becomes &amp;lt;tt&amp;gt;com.example&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p apps/com.example&lt;br /&gt;
&lt;br /&gt;
== Writing ==&lt;br /&gt;
&lt;br /&gt;
As an example, let&#039;s create the smallest possible app and test it. It requires only two files: &amp;lt;tt&amp;gt;apps/com.example/register.js&amp;lt;/tt&amp;gt; for the source code of the app:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;&lt;br /&gt;
define(&#039;com.example/register&#039;, function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
    alert(&#039;Hello, World!&#039;);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &amp;lt;tt&amp;gt;apps/com.example/manifest.json&amp;lt;/tt&amp;gt; for the [[AppSuite:UI_manifests_explained | manifest]] which tells the UI that your app exists and what to do with it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-javascript&amp;quot;&amp;gt;{ &amp;quot;namespace&amp;quot;: &amp;quot;core&amp;quot; }&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
The source code of your app can&#039;t be used by OX App Suite as it. It has to be first processed by the [[AppSuite:UI_build_system | build system]]. This step will check the source code for syntax errors, compress it, and depending on the structure of your code, many other things. The processed code is then written to a directory named &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt; by default. Start the build with this command:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite app&lt;br /&gt;
&lt;br /&gt;
If your editor supports it, you can configure it to call the build system after every file save. Take care to call it from the top directory of your app&#039;s workspace, not from the directory of the saved file.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
The freshly built code can now be tested. Instead of uploading your code to an OX App Suite server, you can use the [[AppSuite:Appserver|appserver]] proxy to inject your code into the UI code of any existing OX App Suite installation. For example, start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; using [http://ox.io/ ox.io] as server:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;$ appserver --server=https://www.ox.io/appsuite/ build&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command will serve your app from the local directory &amp;lt;tt&amp;gt;build&amp;lt;/tt&amp;gt;, and get everything else from the URL specified by the &amp;lt;tt&amp;gt;--server&amp;lt;/tt&amp;gt; parameter. To serve multiple apps, you can specify multiple local directories separated by spaces.&lt;br /&gt;
&lt;br /&gt;
You should start &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt; in a separate terminal, since it needs to run in the background. To stop &amp;lt;tt&amp;gt;appserver&amp;lt;/tt&amp;gt;, press &amp;lt;tt&amp;gt;Ctrl+C&amp;lt;/tt&amp;gt; in its terminal.&lt;br /&gt;
&lt;br /&gt;
Once appserver is running, you can access OX App Suite opening your browser with this address:&lt;br /&gt;
&lt;br /&gt;
 http://localhost:8337/appsuite&lt;br /&gt;
&lt;br /&gt;
After logging in, the app should be loaded and display the &amp;lt;tt&amp;gt;alert&amp;lt;/tt&amp;gt; message.&lt;br /&gt;
&lt;br /&gt;
If you later add images or other files, which are not JavaScript, CSS or LessCSS, then you need to [[AppSuite:Appserver#Use_with_Apache | use a web server]] to serve them.&lt;br /&gt;
&lt;br /&gt;
=== Development cycle ===&lt;br /&gt;
&lt;br /&gt;
Once you are sure that your setup works, you can extend the example and write the actual code of your app. Keep in mind that after [[#Writing | writing your code]], you will always need to [[#Building | build the app]] and have your [[#Hosting the app | Appserver]] running in the background, but don&#039;t need to restart it after every build.&lt;br /&gt;
&lt;br /&gt;
While developing always keep in mind, that there is an [[AppSuite:Debugging_the_UI | article about debugging the user interface]] which helps you avoiding and fixing typical errors.&lt;br /&gt;
&lt;br /&gt;
== Packaging ==&lt;br /&gt;
&lt;br /&gt;
When your app is done, you probably want to test it on a staging system, and later install it on a production system. To keep track of which installed files belong to which version of which app, you should use the native package manager of the Linux distribution of the target system. The packages can be easily created using the build system.&lt;br /&gt;
&lt;br /&gt;
=== Initialization ===&lt;br /&gt;
First, you need to create several files describing how to package you app. Use the &amp;lt;tt&amp;gt;init-packaging&amp;lt;/tt&amp;gt; task of the build system:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite init-packaging&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.133931&lt;br /&gt;
 Package name: example-app&lt;br /&gt;
 Version [0.0.1]: &lt;br /&gt;
 Maintainer (Name &amp;lt;e-mail&amp;gt;): Maintainer &amp;lt;maintainer@example.com&amp;gt;&lt;br /&gt;
 Copyright line [2013 Open-Xchange, Inc]: &lt;br /&gt;
 &lt;br /&gt;
 Known licenses for which you don&#039;t need to specify a file:&lt;br /&gt;
 APACHE-2, BSD-2-CLAUSE, BSD-3-CLAUSE, CC-BY-3, CC-BY-NC-3, CC-BY-NC-ND-3,&lt;br /&gt;
 CC-BY-NC-SA-3, CC-BY-ND-3, CC-BY-SA-3, CC0-1, EXPAT, GPL-2, GPL-3, LGPL-3&lt;br /&gt;
 &lt;br /&gt;
 License name [CC-BY-NC-SA-3.0]: BSD-3-Clause&lt;br /&gt;
 Short description: Example app&lt;br /&gt;
&lt;br /&gt;
The task presents a number of interactive prompts to get the necessary information about the generated packages. The default values are presented in square brackets ([...]) and can be selected by just pressing Enter. Otherwise, the entered values should follow the Debian Maintainer&#039;s Guide. Debian tools are especially picky about the syntax of the maintainer name and email address.&lt;br /&gt;
&lt;br /&gt;
If none of the known licenses suit you, you can enter any other license name. Then you will be asked to enter the file name of your license text. It should be a plain text file using the UTF-8 encoding.&lt;br /&gt;
&lt;br /&gt;
Some or even all prompts can be skipped by explicitly specifying the information as a build variable. The list of variable names is available in the reference of the &amp;lt;tt&amp;gt;[[AppSuite:UI_build_system#init-packaging|init-packaging]]&amp;lt;/tt&amp;gt; task.&lt;br /&gt;
&lt;br /&gt;
After answering all the questions, you can customize the generated files to account for any additional packaging requirements.&lt;br /&gt;
&lt;br /&gt;
=== Static Files ===&lt;br /&gt;
If your app includes images (e.g. themes do this most of the time), then you should check the generated packaging files for sections marked&lt;br /&gt;
&lt;br /&gt;
 ## Uncomment for multiple packages&lt;br /&gt;
 #...&lt;br /&gt;
&lt;br /&gt;
and remove the &#039;#&#039; at the start of each line in each block. This enables the creation of a second package, with a name ending in &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot;. The images and any other files which are not JavaScript or CSS are served by the Apache web server, instead of the OX App Suite application server. These files are copied to a separate package for the case that the web server is on a dedicated system or maybe even has its own cluster. The default package is installed on the OX application server, and the second, &amp;quot;&amp;lt;tt&amp;gt;-static&amp;lt;/tt&amp;gt;&amp;quot; package is installed on the web server.&lt;br /&gt;
&lt;br /&gt;
=== Building Packages ===&lt;br /&gt;
Since the actual package format depends on the distribution it is built for, and there already exist tools to create packages from suitably arranged source code archives, the OX App Suite build system merely prepares such source archives. Using the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task to create the archives:&lt;br /&gt;
&lt;br /&gt;
 $ build-appsuite dist&lt;br /&gt;
 Node version: v0.10.21&lt;br /&gt;
 Build path: build&lt;br /&gt;
 Build version: 0.0.1-1.20131025.150034&lt;br /&gt;
 dpkg-source: info: using source format `3.0 (quilt)&#039;&lt;br /&gt;
 dpkg-source: info: building example-app using existing ./example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
 dpkg-source: info: building example-app in example-app_0.0.1-1.dsc&lt;br /&gt;
 &lt;br /&gt;
 $ ls tmp/packaging/&lt;br /&gt;
 example-app-0.0.1                   example-app_0.0.1-1.dsc&lt;br /&gt;
 example-app.spec                    example-app_0.0.1.orig.tar.bz2&lt;br /&gt;
 example-app_0.0.1-1.debian.tar.bz2&lt;br /&gt;
&lt;br /&gt;
The task creates a temporary directory and four files. The archive with the extension &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; contains the source of your app. It is required to build both Debian and RPM packages. The files with extensions &amp;lt;tt&amp;gt;.debian.tar.bz2&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.dsc&amp;lt;/tt&amp;gt; are used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build Debian packages. The file with the extension &amp;lt;tt&amp;gt;.spec&amp;lt;/tt&amp;gt; is used together with the &amp;lt;tt&amp;gt;.orig.tar.bz2&amp;lt;/tt&amp;gt; archive to build RPM packages.&lt;br /&gt;
&lt;br /&gt;
==== Building Debian Packages ====&lt;br /&gt;
The Debian package can be built directly in the temporary directory created by the &amp;lt;tt&amp;gt;dist&amp;lt;/tt&amp;gt; task:&lt;br /&gt;
&lt;br /&gt;
 $ cd tmp/packaging/example-app-0.0.1/&lt;br /&gt;
 $ dpkg-buildpackage -b&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;tmp/packaging/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Building RPM Packages ====&lt;br /&gt;
The RPM package build tool &amp;lt;tt&amp;gt;rpmbuild&amp;lt;/tt&amp;gt; requires the files to be in a specific directory layout before building:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p ~/rpmbuild/{SOURCES,SPECS,BUILD,RPMS}&lt;br /&gt;
 $ cp tmp/packaging/*.orig.tar.bz2 ~/rpmbuild/SOURCES/&lt;br /&gt;
 $ cp tmp/packaging/*.spec ~/rpmbuild/SPECS/&lt;br /&gt;
 $ rpmbuild --define &amp;quot;_topdir $HOME/rpmbuild&amp;quot; -bb ~/rpmbuild/SPECS/*.spec&lt;br /&gt;
&lt;br /&gt;
The package will be placed in &amp;lt;tt&amp;gt;~/rpmbuild/RPMS/noarch/&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;tt&amp;gt;--define &amp;quot;_topdir $HOME/rpmbuild&amp;quot;&amp;lt;/tt&amp;gt; can also be specified in the file &amp;lt;tt&amp;gt;~/.rpmmacros&amp;lt;/tt&amp;gt; or, on some distributions, is even unnecessary.&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
* You just build your first app for OX App Suite, keep in mind that there [[AppSuite:Developing for the UI#What_can_i_build.3F | quite a few options]] how you can develop for OX App Suite.&lt;br /&gt;
* It&#039;s highly recommended to gain more knowledge about all the benefits [[AppSuite:UI_build_system | the UI build system]] and  [[AppSuite:Appserver|the Appserver]] are providing you for developing OX App Suite.&lt;br /&gt;
* If you&#039;re stuck somewhere, the article about [[AppSuite:Debugging_the_UI | debugging the UI]] might help you.&lt;br /&gt;
* Get a better overview about [[AppSuite:Developing for the UI | developing the user inferface]].&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16440</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16440"/>
		<updated>2013-11-14T16:54:51Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What&amp;#039;s next */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]] is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]] which can be used to show first time users important information or help with the initial configuration of settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] allows you to extend App Suite settings or create a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] allows you to embed your own settings section in App Suite via iframes.&lt;br /&gt;
&lt;br /&gt;
And if you get stuck somewhere? Then here are some hints to help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and error free builds running on your App Suite in no time. The article shows you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Because the App Suite product consists of a server and a UI, you also need a working backend (App Suite application server) to communicate with. &lt;br /&gt;
This means you should run [[AppSuite:Appserver | Appserver]] using an existing OX App Suite server and  (with local parts of App Suite) automatically get the recent stable source packages from the App Suite servers. To use your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] for a step-by-step introduction on how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16439</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16439"/>
		<updated>2013-11-14T16:53:56Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* How to get your code running */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]] is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]] which can be used to show first time users important information or help with the initial configuration of settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] allows you to extend App Suite settings or create a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] allows you to embed your own settings section in App Suite via iframes.&lt;br /&gt;
&lt;br /&gt;
And if you get stuck somewhere? Then here are some hints to help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and error free builds running on your App Suite in no time. The article shows you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Because the App Suite product consists of a server and a UI, you also need a working backend (App Suite application server) to communicate with. &lt;br /&gt;
This means you should run [[AppSuite:Appserver | Appserver]] using an existing OX App Suite server and  (with local parts of App Suite) automatically get the recent stable source packages from the App Suite servers. To use your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16438</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16438"/>
		<updated>2013-11-14T16:50:00Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]] is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]] which can be used to show first time users important information or help with the initial configuration of settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] allows you to extend App Suite settings or create a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] allows you to embed your own settings section in App Suite via iframes.&lt;br /&gt;
&lt;br /&gt;
And if you get stuck somewhere? Then here are some hints to help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16437</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16437"/>
		<updated>2013-11-14T16:48:25Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]] is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]] which can be used to show first time users important information or help with the initial configuration of settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] allows you to extend App Suite settings or create a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
And if you get stuck somewhere? Then here are some hints to help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16436</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16436"/>
		<updated>2013-11-14T16:45:14Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]] is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]] which can be used to show first time users important information or help with the initial configuration of settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16435</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16435"/>
		<updated>2013-11-14T16:42:37Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite apps which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16434</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16434"/>
		<updated>2013-11-14T16:41:28Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], is used to enable upsell in the App Suite so user can purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16433</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16433"/>
		<updated>2013-11-14T16:40:15Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of App Suite. Configuring portal plugins is described in [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of App Suite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the App Suite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for App Suite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for App Suite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16432</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16432"/>
		<updated>2013-11-14T16:38:33Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] when writing a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins is described here [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16431</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16431"/>
		<updated>2013-11-14T16:36:46Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can only be used in the &#039;portal&#039;-section of App Suite. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16430</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16430"/>
		<updated>2013-11-14T16:35:47Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers. For example:&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16429</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16429"/>
		<updated>2013-11-14T16:35:01Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are many options available for App Suite developers.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16428</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16428"/>
		<updated>2013-11-14T16:32:49Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can I build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want a simple introduction with easy to follow steps - from creating your workspace to actually integrating your source code within App Suite - please read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16427</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16427"/>
		<updated>2013-11-14T16:29:58Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* How to get code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]].&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16426</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16426"/>
		<updated>2013-11-14T16:29:26Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* How to get code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop for the server/backend (using the OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16425</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16425"/>
		<updated>2013-11-14T16:27:59Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* How to get code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version control system and getting the code for existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you should check out the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16424</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16424"/>
		<updated>2013-11-14T16:26:11Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Using extension points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Here you  can get more information and a complete list of the [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16423</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16423"/>
		<updated>2013-11-14T16:24:44Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Using extension points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first: [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16422</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16422"/>
		<updated>2013-11-14T16:23:43Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Using extension points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points for you to add your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16421</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16421"/>
		<updated>2013-11-14T16:22:37Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Using extension points */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for App Suite will often include extending the existing user interface. App Suite provides extension points offering you possibility of adding your own content.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16420</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16420"/>
		<updated>2013-11-14T16:20:47Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Development Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16419</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16419"/>
		<updated>2013-11-14T16:20:07Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Development Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you write safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets, and getting them running with the right layout, colors, look and feel is a breeze if you follow the guidelines described here [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind that using OX products should be possible for everyone. Therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16418</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16418"/>
		<updated>2013-11-14T16:15:44Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* What can i build? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you writing safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets running with the right layout, colors, look and feel is a breeze following the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind, that using OX products should be possible for everyone and therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can I build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16417</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16417"/>
		<updated>2013-11-14T16:15:16Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Developing Guidelines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Development Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you writing safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets running with the right layout, colors, look and feel is a breeze following the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind, that using OX products should be possible for everyone and therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can i build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16416</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16416"/>
		<updated>2013-11-14T16:14:35Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Development Flow for the AppSuite UI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the App Suite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Developing Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you writing safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets running with the right layout, colors, look and feel is a breeze following the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind, that using OX products should be possible for everyone and therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can i build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16415</id>
		<title>AppSuite:Developing for the UI</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=AppSuite:Developing_for_the_UI&amp;diff=16415"/>
		<updated>2013-11-14T16:13:39Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;UI Development for OX AppSuite&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
This page contains articles explaining the inner workings of the OX App Suite, web-based, graphical user interface. It is aimed at software developers who want to expand existing features, implement extensions or just gain a general understanding of how the UI works.&lt;br /&gt;
&lt;br /&gt;
=== Tech Overview ===&lt;br /&gt;
All technologies and frameworks used for developing a new component for the App Suite UI are listed and described in the following article: [[AppSuite:UI developer primer| Requirements to develop for the UI]]&lt;br /&gt;
&lt;br /&gt;
==== Development Flow for the AppSuite UI ====&lt;br /&gt;
&lt;br /&gt;
[[File:OX_AppSuite_UI_Development_Workflow.png]]&lt;br /&gt;
&lt;br /&gt;
=== Developing Guidelines ===&lt;br /&gt;
While developing code for OX products [[AppSuite:UI Development Style Guide | the UI Developement Style Guide]] helps you writing safe, clear and functional code.&lt;br /&gt;
&lt;br /&gt;
Designing apps, plugins and widgets running with the right layout, colors, look and feel is a breeze following the guidelines described in [[AppSuite:UI Design Guide | the UI Design Guide]].&lt;br /&gt;
&lt;br /&gt;
Always keep in mind, that using OX products should be possible for everyone and therefor it&#039;s important to follow simple rules regarding [[AppSuite:Accessibility | accessibility]].&lt;br /&gt;
&lt;br /&gt;
=== Using extension points ===&lt;br /&gt;
&lt;br /&gt;
Writing apps or plugins for AppSuite will often include extending the existing user interface. AppSuite provides extension points offering you possibilties to add your own contents.&lt;br /&gt;
Beginning to develop using extension points? Read this guide first having [[AppSuite:Extending the UI (Hands-on introduction) | a hands-on introduction]] for extending the OX user interface. Get more information and a complete list of [[AppSuite:Extension points |extension points]] offered by OX products.&lt;br /&gt;
&lt;br /&gt;
=== How to get code ===&lt;br /&gt;
Using git as a version version control system getting the code from existing OX products is quite easy.&lt;br /&gt;
Simply clone the [[AppSuite:UI build system#Source | UI]] repository and start working with it. If you would like to develop server/backend (via OSGI Framework) plugins, you would check out the the [[AppSuite:Backend build system#Source | backend]]&lt;br /&gt;
&lt;br /&gt;
=== What can i build? ===&lt;br /&gt;
&lt;br /&gt;
If you want to have a simple introduction following easy steps from creating your workspace to actually performing your source code within AppSuite, read our [[AppSuite:GettingStarted | GettingStarted guide]].&lt;br /&gt;
&lt;br /&gt;
There are several other possibilities available to develop for AppSuite.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a portal plugin | A portal plugin]] is a widget, which can be used in the &#039;portal&#039;-section of AppSuite only. Please just check for the right [[AppSuite:Extension points |extension point]] to write a plugin which extends and interacts with other parts of AppSuite. Configuring portal plugins can be achieved by reading [[AppSuite:Configuring portal plugins | this guide]].&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing_a_contacts_plugin | A contacts plugin]] let&#039;s you modify parts of AppSuite&#039;s contact view.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Using the Upsell widget | Upsell Widget]], to enable the AppSuite user to purchase additional features. &lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a simple application | A real application/module]] for AppSuite, which should be displayed full screen.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a notification area plugin | A notification plugin]] for AppSuite&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Writing a wizard | A wizard]], which can be first time users to show them important informations or configure initial settings for 3rd party applications.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Creating a settings section in AppSuite settings | Settings plugin]] extending AppSuite settings and creating a new section.&lt;br /&gt;
&lt;br /&gt;
*[[AppSuite:Embedding your settings into AppSuite settings | Settings plugin]] embedding your own settings section via iframe into AppSuite.&lt;br /&gt;
&lt;br /&gt;
You got stuck somewhere? There are some hints, which might help you [[AppSuite:Debugging_the_UI | debugging the UI]].&lt;br /&gt;
&lt;br /&gt;
=== How to get your code running ===&lt;br /&gt;
Written your first app/plugin? Using the [[AppSuite:UI build system | UI build system]] will help you to get fast, easy-to-distribute and correct builds running on your AppSuite. The article will show you how to package your code and copy from OX source code / directories.&lt;br /&gt;
&lt;br /&gt;
Since the AppSuite product consists of a server and a UI, you also need a working backend (AppSuite application server) to communicate with. &lt;br /&gt;
Therefor you should run [[AppSuite:Appserver | Appserver]] using an existing OX AppSuite server and  (with local parts of the AppSuite) automaticly get the recent stable source packages from the AppSuite servers. For using your namespace as a source for hosting your app, simply add the build-path of your app as an parameter while running appserver.&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s next ===&lt;br /&gt;
No Idea what to do first? Read our [[AppSuite:GettingStarted | GettingStarted guide]] to have a step-by-step introduction about how to install the SDK, use the Build System, write your first app and get it running.&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15346</id>
		<title>Help:Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15346"/>
		<updated>2013-08-19T08:03:26Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: /* Writing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Writing for OXpedia&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039; This article explains how to write a great OXpedia article .&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
First and foremost: A wiki thrives on articles. If you only follow one rule, then it should be this:&lt;br /&gt;
 &amp;quot;Write the article you are thinking about the way you want to.&amp;quot; &lt;br /&gt;
Then let [[#Who we are|us]] know. If it needs fixing in anyway then we will fix it for you. On the other hand, if you prefer to write the best article possible, then this style guide is meant to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Style Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Writing ===&lt;br /&gt;
&lt;br /&gt;
There are tons of articles on writing technical documentation (see below for links). Here is a condensed version:&lt;br /&gt;
&lt;br /&gt;
* If you have got the choice between funny, eloquent and concise, go for the latter. (Actually, don&#039;t &amp;quot;go for the latter&amp;quot;, but &amp;quot;go for concise&amp;quot;, as the next guideline will explain).&lt;br /&gt;
&lt;br /&gt;
* Make sentences that stand on their own. This is especially important in a wiki where paragraphs or even lines might be moved around.&lt;br /&gt;
&lt;br /&gt;
=== Namespace ===&lt;br /&gt;
&lt;br /&gt;
AppSuite-specific articles go into the AppSuite:* namespace. That means you simply prefix the page title with AppSuite:, that&#039;s all. The tricky part is knowing whether the article is AppSuite-specific. This is obvious for UI articles. But for server articles, it is not that clear-cut, as the backend is usually backwards-compatible with OX6. When in doubt, put it in the main namespace. (Which is called?)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===  Layout ===&lt;br /&gt;
&lt;br /&gt;
Due to some php magic, our skin does not show the article title. The benefit is that you are not bound by the restrictions of article titles on MediaWiki. To put up a &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Title of the article&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt; element on top.&lt;br /&gt;
&lt;br /&gt;
Decide whether to use the &#039;&#039;table of contents&#039;&#039;, which links all article headings and subheadings. If you do so, use &amp;lt;nowiki&amp;gt;__TOC__&amp;lt;/nowiki&amp;gt;. Use it after the intro sentence and before the first heading that you wrote.&lt;br /&gt;
&lt;br /&gt;
Write an intro sentence that gives the user a rough overview of what the article covers.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
You are free to invent new categories. The following ones are just a fraction of all categories this wiki contains, but they are those we would like to see used more widely. We propagate these by linking them from the main page so they get a lot of visibility. If you want your hard work to be found, use them:&lt;br /&gt;
&lt;br /&gt;
* This wiki contains articles for OX5, OX6 and AppSuite. Please indicate which version you&#039;re referring to by adding either &amp;lt;nowiki&amp;gt;[[Category: OX5]]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[[Category: OX6]]&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;[[Category: AppSuite]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
** Server-related articles usually concern both OX6 and AppSuite, so simply use both categories.&lt;br /&gt;
&lt;br /&gt;
* Articles here aim at a certain target group. Ask yourself whether you are writing for :&lt;br /&gt;
&lt;br /&gt;
** Potential customers, &amp;lt;nowiki&amp;gt;[[Category: Customer]]&amp;lt;/nowiki&amp;gt;, people interested in buying the product&lt;br /&gt;
&lt;br /&gt;
** Users, &amp;lt;nowiki&amp;gt;[[Category: User]]&amp;lt;/nowiki&amp;gt;, people working with the product&lt;br /&gt;
&lt;br /&gt;
*** If you are writing for users, more power to you, but consider letting the people responsible for the user manual know. Users get translated manuals, so these articles leave the wiki after an incubation period.&lt;br /&gt;
&lt;br /&gt;
** Admins, &amp;lt;nowiki&amp;gt;[[Category: Admin]]&amp;lt;/nowiki&amp;gt;, people running the product on their servers&lt;br /&gt;
&lt;br /&gt;
** Developers &amp;lt;nowiki&amp;gt;[[Category: Developer]]&amp;lt;/nowiki&amp;gt;, people extending the product using our SPIs or APIs&lt;br /&gt;
&lt;br /&gt;
*** Go into detail, explaining whether you are writing about a server component &amp;lt;nowiki&amp;gt;[[Category: Server]]&amp;lt;/nowiki&amp;gt; or a user interface component &amp;lt;nowiki&amp;gt;[[Category: UI]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Numbering and versioning ===&lt;br /&gt;
&lt;br /&gt;
As opposed to normal wikis, it is not just the current version of an article that interests a user: Documentation for an older version of the product might be needed, too. The way we handle this might seem familiar to linux users:&lt;br /&gt;
&lt;br /&gt;
* When starting an article, use a good title. No numbers needed. For example &amp;quot;My useful article&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Once you realize that you are creating text that needs to be versioned, create a page for that version by adding a space and then the version number. For example: &amp;quot;My useful article 7.4.0&amp;quot;. Ignore the fact that we used both &amp;quot;v7.4.0&amp;quot; and &amp;quot;7_4_0&amp;quot; in the past. That&#039;s outdated.&lt;br /&gt;
&lt;br /&gt;
** This article is probably a verbatim copy of the one you worked on last. That should not be much trouble. If you&#039;re admin, you can even move the article. That takes care of the next step, too, which you have to do by hand otherwise.&lt;br /&gt;
&lt;br /&gt;
* Replace the content of the old article with a redirect to the most current version. For example: &amp;quot;My useful article&amp;quot; contains only &amp;lt;nowiki&amp;gt;#REDIRECT [[My useful article 7.4.0]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When you have articles for more than one version, please use the Template &amp;lt;nowiki&amp;gt;{{Version|7.x.x}}&amp;lt;/nowiki&amp;gt; and point to the next and previous version in line.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Templates make recurring tasks easier. The following templates are used regularly within the OXpedia:&lt;br /&gt;
&lt;br /&gt;
*  The [[API status|level of stability]] a described feature has: &amp;lt;nowiki&amp;gt;{{Stability-unstable}}, {{Stability-stable}}, {{Stability-frozen}} and {{Stability-deprecated}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* The version, used for pages with information for a specific version: &amp;lt;nowiki&amp;gt;{{Version|7.4.0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints for Mediawiki ==&lt;br /&gt;
This is a media wiki... even if our great design is trying to fool you into thinking otherwise. So all Mediawiki[http://meta.wikimedia.org] tricks apply here, too.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Help:Editing Editing basic for Wikipedia]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Image:Wiki-refcard.pdf Markup cheat sheet (PDF)]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Reference_card#Links_to_other_help_pages Mediawiki help pages]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Guide_to_layout Wikipedia&#039;s guide to layout]&lt;br /&gt;
&lt;br /&gt;
== Who we are ==&lt;br /&gt;
We are the OXpedia team. You can reach us via oxpedia@open-xchange.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Meta]]&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15345</id>
		<title>Help:Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15345"/>
		<updated>2013-08-19T08:00:43Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Writing for OXpedia&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039; This article explains how to write a great OXpedia article .&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
First and foremost: A wiki thrives on articles. If you only follow one rule, then it should be this:&lt;br /&gt;
 &amp;quot;Write the article you are thinking about the way you want to.&amp;quot; &lt;br /&gt;
Then let [[#Who we are|us]] know. If it needs fixing in anyway then we will fix it for you. On the other hand, if you prefer to write the best article possible, then this style guide is meant to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Style Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Writing ===&lt;br /&gt;
&lt;br /&gt;
There are tons of articles on writing technical documentation. Here is a condensed version:&lt;br /&gt;
&lt;br /&gt;
* If you have got the choice between funny, eloquent and concise, go for the latter. (Actually, don&#039;t &amp;quot;go for the latter&amp;quot;, but &amp;quot;go for concise&amp;quot;, as the next guideline will explain).&lt;br /&gt;
&lt;br /&gt;
* Make sentences that stand on their own. This is especially important in a wiki where paragraphs or even lines might be moved around.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Namespace ===&lt;br /&gt;
&lt;br /&gt;
AppSuite-specific articles go into the AppSuite:* namespace. That means you simply prefix the page title with AppSuite:, that&#039;s all. The tricky part is knowing whether the article is AppSuite-specific. This is obvious for UI articles. But for server articles, it is not that clear-cut, as the backend is usually backwards-compatible with OX6. When in doubt, put it in the main namespace. (Which is called?)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===  Layout ===&lt;br /&gt;
&lt;br /&gt;
Due to some php magic, our skin does not show the article title. The benefit is that you are not bound by the restrictions of article titles on MediaWiki. To put up a &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Title of the article&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt; element on top.&lt;br /&gt;
&lt;br /&gt;
Decide whether to use the &#039;&#039;table of contents&#039;&#039;, which links all article headings and subheadings. If you do so, use &amp;lt;nowiki&amp;gt;__TOC__&amp;lt;/nowiki&amp;gt;. Use it after the intro sentence and before the first heading that you wrote.&lt;br /&gt;
&lt;br /&gt;
Write an intro sentence that gives the user a rough overview of what the article covers.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
You are free to invent new categories. The following ones are just a fraction of all categories this wiki contains, but they are those we would like to see used more widely. We propagate these by linking them from the main page so they get a lot of visibility. If you want your hard work to be found, use them:&lt;br /&gt;
&lt;br /&gt;
* This wiki contains articles for OX5, OX6 and AppSuite. Please indicate which version you&#039;re referring to by adding either &amp;lt;nowiki&amp;gt;[[Category: OX5]]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[[Category: OX6]]&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;[[Category: AppSuite]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
** Server-related articles usually concern both OX6 and AppSuite, so simply use both categories.&lt;br /&gt;
&lt;br /&gt;
* Articles here aim at a certain target group. Ask yourself whether you are writing for :&lt;br /&gt;
&lt;br /&gt;
** Potential customers, &amp;lt;nowiki&amp;gt;[[Category: Customer]]&amp;lt;/nowiki&amp;gt;, people interested in buying the product&lt;br /&gt;
&lt;br /&gt;
** Users, &amp;lt;nowiki&amp;gt;[[Category: User]]&amp;lt;/nowiki&amp;gt;, people working with the product&lt;br /&gt;
&lt;br /&gt;
*** If you are writing for users, more power to you, but consider letting the people responsible for the user manual know. Users get translated manuals, so these articles leave the wiki after an incubation period.&lt;br /&gt;
&lt;br /&gt;
** Admins, &amp;lt;nowiki&amp;gt;[[Category: Admin]]&amp;lt;/nowiki&amp;gt;, people running the product on their servers&lt;br /&gt;
&lt;br /&gt;
** Developers &amp;lt;nowiki&amp;gt;[[Category: Developer]]&amp;lt;/nowiki&amp;gt;, people extending the product using our SPIs or APIs&lt;br /&gt;
&lt;br /&gt;
*** Go into detail, explaining whether you are writing about a server component &amp;lt;nowiki&amp;gt;[[Category: Server]]&amp;lt;/nowiki&amp;gt; or a user interface component &amp;lt;nowiki&amp;gt;[[Category: UI]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Numbering and versioning ===&lt;br /&gt;
&lt;br /&gt;
As opposed to normal wikis, it is not just the current version of an article that interests a user: Documentation for an older version of the product might be needed, too. The way we handle this might seem familiar to linux users:&lt;br /&gt;
&lt;br /&gt;
* When starting an article, use a good title. No numbers needed. For example &amp;quot;My useful article&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Once you realize that you are creating text that needs to be versioned, create a page for that version by adding a space and then the version number. For example: &amp;quot;My useful article 7.4.0&amp;quot;. Ignore the fact that we used both &amp;quot;v7.4.0&amp;quot; and &amp;quot;7_4_0&amp;quot; in the past. That&#039;s outdated.&lt;br /&gt;
&lt;br /&gt;
** This article is probably a verbatim copy of the one you worked on last. That should not be much trouble. If you&#039;re admin, you can even move the article. That takes care of the next step, too, which you have to do by hand otherwise.&lt;br /&gt;
&lt;br /&gt;
* Replace the content of the old article with a redirect to the most current version. For example: &amp;quot;My useful article&amp;quot; contains only &amp;lt;nowiki&amp;gt;#REDIRECT [[My useful article 7.4.0]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When you have articles for more than one version, please use the Template &amp;lt;nowiki&amp;gt;{{Version|7.x.x}}&amp;lt;/nowiki&amp;gt; and point to the next and previous version in line.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Templates make recurring tasks easier. The following templates are used regularly within the OXpedia:&lt;br /&gt;
&lt;br /&gt;
*  The [[API status|level of stability]] a described feature has: &amp;lt;nowiki&amp;gt;{{Stability-unstable}}, {{Stability-stable}}, {{Stability-frozen}} and {{Stability-deprecated}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* The version, used for pages with information for a specific version: &amp;lt;nowiki&amp;gt;{{Version|7.4.0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints for Mediawiki ==&lt;br /&gt;
This is a media wiki... even if our great design is trying to fool you into thinking otherwise. So all Mediawiki[http://meta.wikimedia.org] tricks apply here, too.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Help:Editing Editing basic for Wikipedia]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Image:Wiki-refcard.pdf Markup cheat sheet (PDF)]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Reference_card#Links_to_other_help_pages Mediawiki help pages]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Guide_to_layout Wikipedia&#039;s guide to layout]&lt;br /&gt;
&lt;br /&gt;
== Who we are ==&lt;br /&gt;
We are the OXpedia team. You can reach us via oxpedia@open-xchange.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Meta]]&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15344</id>
		<title>Help:Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15344"/>
		<updated>2013-08-19T07:59:09Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Writing for OXpedia&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039; This article explains how to write a great OXpedia article .&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
First and foremost: A wiki thrives on articles. If you only follow one rule, then it should be this:&lt;br /&gt;
 &#039;&#039;Write the article you are thinking about the way you want to.&amp;quot; &lt;br /&gt;
Then let [[#Who we are|us]] know. If it needs fixing in anyway then we will fix it for you. On the other hand, if you prefer to write the best article possible, then this style guide is meant to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Style Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Writing ===&lt;br /&gt;
&lt;br /&gt;
There are tons of articles on writing technical documentation. Here is a condensed version:&lt;br /&gt;
&lt;br /&gt;
* If you have got the choice between funny, eloquent and concise, go for the latter. (Actually, don&#039;t &amp;quot;go for the latter&amp;quot;, but &amp;quot;go for concise&amp;quot;, as the next guideline will explain).&lt;br /&gt;
&lt;br /&gt;
* Make sentences that stand on their own. This is especially important in a wiki where paragraphs or even lines might be moved around.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Namespace ===&lt;br /&gt;
&lt;br /&gt;
AppSuite-specific articles go into the AppSuite:* namespace. That means you simply prefix the page title with AppSuite:, that&#039;s all. The tricky part is knowing whether the article is AppSuite-specific. This is obvious for UI articles. But for server articles, it is not that clear-cut, as the backend is usually backwards-compatible with OX6. When in doubt, put it in the main namespace. (Which is called?)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===  Layout ===&lt;br /&gt;
&lt;br /&gt;
Due to some php magic, our skin does not show the article title. The benefit is that you are not bound by the restrictions of article titles on MediaWiki. To put up a &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Title of the article&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt; element on top.&lt;br /&gt;
&lt;br /&gt;
Decide whether to use the &#039;&#039;table of contents&#039;&#039;, which links all article headings and subheadings. If you do so, use &amp;lt;nowiki&amp;gt;__TOC__&amp;lt;/nowiki&amp;gt;. Use it after the intro sentence and before the first heading that you wrote.&lt;br /&gt;
&lt;br /&gt;
Write an intro sentence that gives the user a rough overview of what the article covers.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
You are free to invent new categories. The following ones are just a fraction of all categories this wiki contains, but they are those we would like to see used more widely. We propagate these by linking them from the main page so they get a lot of visibility. If you want your hard work to be found, use them:&lt;br /&gt;
&lt;br /&gt;
* This wiki contains articles for OX5, OX6 and AppSuite. Please indicate which version you&#039;re referring to by adding either &amp;lt;nowiki&amp;gt;[[Category: OX5]]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[[Category: OX6]]&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;[[Category: AppSuite]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
** Server-related articles usually concern both OX6 and AppSuite, so simply use both categories.&lt;br /&gt;
&lt;br /&gt;
* Articles here aim at a certain target group. Ask yourself whether you are writing for :&lt;br /&gt;
&lt;br /&gt;
** Potential customers, &amp;lt;nowiki&amp;gt;[[Category: Customer]]&amp;lt;/nowiki&amp;gt;, people interested in buying the product&lt;br /&gt;
&lt;br /&gt;
** Users, &amp;lt;nowiki&amp;gt;[[Category: User]]&amp;lt;/nowiki&amp;gt;, people working with the product&lt;br /&gt;
&lt;br /&gt;
*** If you are writing for users, more power to you, but consider letting the people responsible for the user manual know. Users get translated manuals, so these articles leave the wiki after an incubation period.&lt;br /&gt;
&lt;br /&gt;
** Admins, &amp;lt;nowiki&amp;gt;[[Category: Admin]]&amp;lt;/nowiki&amp;gt;, people running the product on their servers&lt;br /&gt;
&lt;br /&gt;
** Developers &amp;lt;nowiki&amp;gt;[[Category: Developer]]&amp;lt;/nowiki&amp;gt;, people extending the product using our SPIs or APIs&lt;br /&gt;
&lt;br /&gt;
*** Go into detail, explaining whether you are writing about a server component &amp;lt;nowiki&amp;gt;[[Category: Server]]&amp;lt;/nowiki&amp;gt; or a user interface component &amp;lt;nowiki&amp;gt;[[Category: UI]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Numbering and versioning ===&lt;br /&gt;
&lt;br /&gt;
As opposed to normal wikis, it is not just the current version of an article that interests a user: Documentation for an older version of the product might be needed, too. The way we handle this might seem familiar to linux users:&lt;br /&gt;
&lt;br /&gt;
* When starting an article, use a good title. No numbers needed. For example &amp;quot;My useful article&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Once you realize that you are creating text that needs to be versioned, create a page for that version by adding a space and then the version number. For example: &amp;quot;My useful article 7.4.0&amp;quot;. Ignore the fact that we used both &amp;quot;v7.4.0&amp;quot; and &amp;quot;7_4_0&amp;quot; in the past. That&#039;s outdated.&lt;br /&gt;
&lt;br /&gt;
** This article is probably a verbatim copy of the one you worked on last. That should not be much trouble. If you&#039;re admin, you can even move the article. That takes care of the next step, too, which you have to do by hand otherwise.&lt;br /&gt;
&lt;br /&gt;
* Replace the content of the old article with a redirect to the most current version. For example: &amp;quot;My useful article&amp;quot; contains only &amp;lt;nowiki&amp;gt;#REDIRECT [[My useful article 7.4.0]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When you have articles for more than one version, please use the Template &amp;lt;nowiki&amp;gt;{{Version|7.x.x}}&amp;lt;/nowiki&amp;gt; and point to the next and previous version in line.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Templates make recurring tasks easier. The following templates are used regularly within the OXpedia:&lt;br /&gt;
&lt;br /&gt;
*  The [[API status|level of stability]] a described feature has: &amp;lt;nowiki&amp;gt;{{Stability-unstable}}, {{Stability-stable}}, {{Stability-frozen}} and {{Stability-deprecated}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* The version, used for pages with information for a specific version: &amp;lt;nowiki&amp;gt;{{Version|7.4.0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints for Mediawiki ==&lt;br /&gt;
This is a media wiki... even if our great design is trying to fool you into thinking otherwise. So all Mediawiki[http://meta.wikimedia.org] tricks apply here, too.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Help:Editing Editing basic for Wikipedia]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Image:Wiki-refcard.pdf Markup cheat sheet (PDF)]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Reference_card#Links_to_other_help_pages Mediawiki help pages]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Guide_to_layout Wikipedia&#039;s guide to layout]&lt;br /&gt;
&lt;br /&gt;
== Who we are ==&lt;br /&gt;
We are the OXpedia team. You can reach us via oxpedia@open-xchange.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Meta]]&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15343</id>
		<title>Help:Howto</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Help:Howto&amp;diff=15343"/>
		<updated>2013-08-16T14:19:01Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Writing for OXpedia&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Summary:&#039;&#039;&#039; This article explains how to write a great OXpedia article .&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
First and foremost: A wiki thrives on articles. If you only follow one rule, then it should be this: &#039;&#039;Write the article you are thinking about the way you want to. Then let [[#Who we are|us]] know.&#039;&#039; If it needs it then we&#039;ll fix it. On the other hand, if you prefer to write the best article possible, this style guide is meant to help you.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Style Guide ==&lt;br /&gt;
&lt;br /&gt;
=== Writing ===&lt;br /&gt;
&lt;br /&gt;
There are tons of articles on writing technical documentation. Here is a condensed version:&lt;br /&gt;
&lt;br /&gt;
* If you have got the choice between funny, eloquent and concise, go for the latter. (Actually, don&#039;t &amp;quot;go for the latter&amp;quot;, but &amp;quot;go for concise&amp;quot;, as the next guideline will explain).&lt;br /&gt;
&lt;br /&gt;
* Make sentences that stand on their own. This is especially important in a wiki where paragraphs or even lines might be moved around.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Namespace ===&lt;br /&gt;
&lt;br /&gt;
AppSuite-specific articles go into the AppSuite:* namespace. That means you simply prefix the page title with AppSuite:, that&#039;s all. The tricky part is knowing whether the article is AppSuite-specific. This is obvious for UI articles. But for server articles, it is not that clear-cut, as the backend is usually backwards-compatible with OX6. When in doubt, put it in the main namespace. (Which is called?)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
===  Layout ===&lt;br /&gt;
&lt;br /&gt;
Due to some php magic, our skin does not show the article title. The benefit is that you are not bound by the restrictions of article titles on MediaWiki. To put up a &amp;lt;nowiki&amp;gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;Title of the article&amp;lt;/div&amp;gt;&amp;lt;/nowiki&amp;gt; element on top.&lt;br /&gt;
&lt;br /&gt;
Decide whether to use the &#039;&#039;table of contents&#039;&#039;, which links all article headings and subheadings. If you do so, use &amp;lt;nowiki&amp;gt;__TOC__&amp;lt;/nowiki&amp;gt;. Use it after the intro sentence and before the first heading that you wrote.&lt;br /&gt;
&lt;br /&gt;
Write an intro sentence that gives the user a rough overview of what the article covers.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
You are free to invent new categories. The following ones are just a fraction of all categories this wiki contains, but they are those we would like to see used more widely. We propagate these by linking them from the main page so they get a lot of visibility. If you want your hard work to be found, use them:&lt;br /&gt;
&lt;br /&gt;
* This wiki contains articles for OX5, OX6 and AppSuite. Please indicate which version you&#039;re referring to by adding either &amp;lt;nowiki&amp;gt;[[Category: OX5]]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[[Category: OX6]]&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;[[Category: AppSuite]]&amp;lt;/nowiki&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
** Server-related articles usually concern both OX6 and AppSuite, so simply use both categories.&lt;br /&gt;
&lt;br /&gt;
* Articles here aim at a certain target group. Ask yourself whether you are writing for :&lt;br /&gt;
&lt;br /&gt;
** Potential customers, &amp;lt;nowiki&amp;gt;[[Category: Customer]]&amp;lt;/nowiki&amp;gt;, people interested in buying the product&lt;br /&gt;
&lt;br /&gt;
** Users, &amp;lt;nowiki&amp;gt;[[Category: User]]&amp;lt;/nowiki&amp;gt;, people working with the product&lt;br /&gt;
&lt;br /&gt;
*** If you are writing for users, more power to you, but consider letting the people responsible for the user manual know. Users get translated manuals, so these articles leave the wiki after an incubation period.&lt;br /&gt;
&lt;br /&gt;
** Admins, &amp;lt;nowiki&amp;gt;[[Category: Admin]]&amp;lt;/nowiki&amp;gt;, people running the product on their servers&lt;br /&gt;
&lt;br /&gt;
** Developers &amp;lt;nowiki&amp;gt;[[Category: Developer]]&amp;lt;/nowiki&amp;gt;, people extending the product using our SPIs or APIs&lt;br /&gt;
&lt;br /&gt;
*** Go into detail, explaining whether you are writing about a server component &amp;lt;nowiki&amp;gt;[[Category: Server]]&amp;lt;/nowiki&amp;gt; or a user interface component &amp;lt;nowiki&amp;gt;[[Category: UI]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Numbering and versioning ===&lt;br /&gt;
&lt;br /&gt;
As opposed to normal wikis, it is not just the current version of an article that interests a user: Documentation for an older version of the product might be needed, too. The way we handle this might seem familiar to linux users:&lt;br /&gt;
&lt;br /&gt;
* When starting an article, use a good title. No numbers needed. For example &amp;quot;My useful article&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Once you realize that you are creating text that needs to be versioned, create a page for that version by adding a space and then the version number. For example: &amp;quot;My useful article 7.4.0&amp;quot;. Ignore the fact that we used both &amp;quot;v7.4.0&amp;quot; and &amp;quot;7_4_0&amp;quot; in the past. That&#039;s outdated.&lt;br /&gt;
&lt;br /&gt;
** This article is probably a verbatim copy of the one you worked on last. That should not be much trouble. If you&#039;re admin, you can even move the article. That takes care of the next step, too, which you have to do by hand otherwise.&lt;br /&gt;
&lt;br /&gt;
* Replace the content of the old article with a redirect to the most current version. For example: &amp;quot;My useful article&amp;quot; contains only &amp;lt;nowiki&amp;gt;#REDIRECT [[My useful article 7.4.0]]&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* When you have articles for more than one version, please use the Template &amp;lt;nowiki&amp;gt;{{Version|7.x.x}}&amp;lt;/nowiki&amp;gt; and point to the next and previous version in line.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
&lt;br /&gt;
Templates make recurring tasks easier. The following templates are used regularly within the OXpedia:&lt;br /&gt;
&lt;br /&gt;
*  The [[API status|level of stability]] a described feature has: &amp;lt;nowiki&amp;gt;{{Stability-unstable}}, {{Stability-stable}}, {{Stability-frozen}} and {{Stability-deprecated}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* The version, used for pages with information for a specific version: &amp;lt;nowiki&amp;gt;{{Version|7.4.0}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hints for Mediawiki ==&lt;br /&gt;
This is a media wiki... even if our great design is trying to fool you into thinking otherwise. So all Mediawiki[http://meta.wikimedia.org] tricks apply here, too.&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Help:Editing Editing basic for Wikipedia]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Image:Wiki-refcard.pdf Markup cheat sheet (PDF)]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Reference_card#Links_to_other_help_pages Mediawiki help pages]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Guide_to_layout Wikipedia&#039;s guide to layout]&lt;br /&gt;
&lt;br /&gt;
== Who we are ==&lt;br /&gt;
We are the OXpedia team. You can reach us via oxpedia@open-xchange.com&lt;br /&gt;
&lt;br /&gt;
[[Category: Meta]]&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=API_status&amp;diff=15214</id>
		<title>API status</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=API_status&amp;diff=15214"/>
		<updated>2013-08-07T13:51:29Z</updated>

		<summary type="html">&lt;p&gt;John.broomfield: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;title&amp;quot;&amp;gt;API Status&amp;lt;/div&amp;gt;&lt;br /&gt;
At Open-Xchange we are continuously improving our products. Most of the time the&lt;br /&gt;
changes we make will have no side effects on existing installations and 3rd&lt;br /&gt;
party software integration. However, sometimes fixing a bug or adding a new&lt;br /&gt;
feature requires changes to the existing API that are not always backwards&lt;br /&gt;
compatible.&lt;br /&gt;
&lt;br /&gt;
To help you understand the impact of these changes we have defined the following&lt;br /&gt;
API status list. This page describes each level and indicates how information&lt;br /&gt;
about changes to documented features is communicated.&lt;br /&gt;
&lt;br /&gt;
In creating these levels we were inspired by the [http://nodejs.org/api/documentation.html#documentation_stability_index node.js stability index].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
API features can be categorized as follows.&lt;br /&gt;
&lt;br /&gt;
== In development ==&lt;br /&gt;
&lt;br /&gt;
This feature is currently being developed by Open-Xchange. If this is a customer&lt;br /&gt;
request the customer requesting the change will provide feedback. On occasion&lt;br /&gt;
Open-Xchange may solicit input from a wider audience in order to optimize&lt;br /&gt;
feature development for the widest possible audience. Due to the low overhead of&lt;br /&gt;
making changes at this stage feedback is more likely to be integrated into the&lt;br /&gt;
feature than at other status levels.&lt;br /&gt;
&lt;br /&gt;
Changes will not be announced. Using the watch function to stay updated may&lt;br /&gt;
help. We will try to update the documentation concurrently with code changes,&lt;br /&gt;
but this cannot be guaranteed.&lt;br /&gt;
&lt;br /&gt;
== New ==&lt;br /&gt;
&lt;br /&gt;
This feature was recently released, is fully tested and considered stable but is&lt;br /&gt;
in the process of settling. Based on customer experience across a diverse range&lt;br /&gt;
of production environments it is possible that further changes may be necessary.&lt;br /&gt;
To indicate this we have defined a separate level from Stable.&lt;br /&gt;
&lt;br /&gt;
This feature is documented. Changes will not be announced. We recommend using&lt;br /&gt;
the watch function for the given page to stay updated.&lt;br /&gt;
&lt;br /&gt;
== Stable ==&lt;br /&gt;
&lt;br /&gt;
The feature is considered stable and is fully documented. However it is possible&lt;br /&gt;
that cleanup in the underlying code may cause minor changes.&lt;br /&gt;
Backwards-compatibility will be maintained if possible.&lt;br /&gt;
&lt;br /&gt;
Changes that are not backwards compatible will be announced in the release&lt;br /&gt;
notes.&lt;br /&gt;
&lt;br /&gt;
== Frozen ==&lt;br /&gt;
&lt;br /&gt;
This API has been tested extensively in production and is unlikely to be&lt;br /&gt;
changed. If changes do occur they will be announced in the release notes two&lt;br /&gt;
major releases in advance.&lt;br /&gt;
&lt;br /&gt;
== Deprecated ==&lt;br /&gt;
&lt;br /&gt;
This feature is known to be problematic, and changes or even removal are&lt;br /&gt;
planned. Do not rely on it. Use of the feature may cause warnings. Backwards&lt;br /&gt;
compatibility should not be expected.&lt;br /&gt;
&lt;br /&gt;
Changes will not be announced.&lt;br /&gt;
&lt;br /&gt;
[[Category:Meta]]&lt;br /&gt;
[[Category:AppSuite]]&lt;/div&gt;</summary>
		<author><name>John.broomfield</name></author>
	</entry>
</feed>