+ Horde Developer's FAQ
++ Creating New Applications
+++ Why would I want to create a new Horde application?
If you are reading this you have probably already decided that you need to create a web application. You may have come here thinking "What benefits would I get from integrating with Horde?" One of the great strengths of Horde's architecture is its modular design. This design allows plugging in any number of applications into a single graphically cohesive, centrally authenticated and permissioned, high performance platform. For example, by taking advantage of the Framework libraries such as Horde_Cache it is simple to create an application that can use any of the supported cache backends using a single, well-documented and consistent API. Perhaps today you use simple SQL-based object caching, but down the road you want to expand scalability by deploying memcached. Instead of refactoring all of your cache management code all that is necessary is a simple reconfiguration of Horde.
In addition to the numerous Framework libraries there is a wealth of functionality exposed by existing Horde applications. Perhaps you want to create a social networking engine. Social networking relies heavily on functions such as contact lists, photo galleries, calendar events and blogging or journaling. Instead of reinventing those wheels it is possible to use Horde's built-in application API to pull in the necessary functionality. In the previous hypothetical example, the application you need to create becomes less about each of the functions listed and more about creating a unique user interface taking advantage of the existing functionality within the Turba, Ansel, Kronolith and Jonah Horde applications.
+++ How do I get started?
If you are starting from scratch the best thing to do is to check out the "skeleton" module from Horde's CVS repository. Instructions on how to do this can be found on the [http://www.horde.org/source/using.php Horde website]. This module was created to illustrate how a Horde module is laid out. At the top level of each Horde module reside some or all of the pages that generate user interface content. Within the lib/ directory reside the core of the application's logic, including communication with data storage backends and form generation/validation. Under templates/ you will find the included HTML snippets that define the users' experience.