[[toc]]
++ Overviews
((Doc/Dev/Filesystem|Filesystem structure))
((Doc/Dev/Configuration|Configuration files))
((Doc/Dev/Framework|Framework modules))
((Doc/Dev/SpecialFiles|Special files))
((Doc/Dev/Globals|Global constants and objects))
((Doc/Dev/Registry|The Registry))
((Doc/Dev/DesignPatterns|Design patterns))
++ Development
[CreatingYourFirstModule Creating your own module]
((Doc/Dev/Themes|Creating new themes))
((Doc/Dev/Layout|Understanding and changing the layout))
((Doc/Dev/LegacyApps|How to use Horde from custom, non-Horde PHP applications or websites))
((Doc/Dev/SOAP|Using Horde as a SOAP server, including complex types))
((Doc/Dev/Emacs|Emacs configurations for Horde))
++ Libraries
((Doc/Dev/FilePDFPackage|File_PDF::))
((Doc/Dev/FeedPackage|Horde_Feed::))
((Doc/Dev/FormPackage|Horde_Form::))
((Doc/Dev/FrameworkPackage|Horde::, Registry::))
((Doc/Dev/MIMEPackage|MIME:: Using the MIME API to create or parse MIME messages))
((Doc/Dev/MobilePackage|Horde_Mobile::))
((Doc/Dev/PermsPackage|Perms:: Using the extensible permissions API))
((Doc/Dev/TemplatePackage|Horde_Template:: - Horde 3.2+))
((Doc/Dev/TemplatePackageOld|Horde_Template:: - pre-Horde 3.2))
((Doc/Dev/UtilPackage|Util::))
[http://dev.horde.org/ API Documentation]
++ Dev Stuff
((Doc/Dev/DAV|WebDAV/GroupDAV/CalDAV Documentation))
((Doc/Dev/Benchmarks))
[http://cvs.horde.org/dimp/docs/dev/?sa=1 DIMP Development Documentation]
((Doc/Dev/CopyrightLicense|Copyright and license stuff))
((Doc/Dev/VimRC|Vim configuration useful for Horde Development))
++ Mini-FAQ for Horde 4 development
Q: Are we going to keep the existing development model where we have a "master" server (i.e. cvs.horde.org) where we will build the releases? For our workflow, that seems to make the most sense - since we don't have a "master" user that checks all commits before integrating.
A: Yes. We'll figure this out as we work on Horde 4, to some extent, but my expectation is that we will all push commits to dev.horde.org:/horde/git/horde (or horde-hatchery, etc.), and we'll use branches to do local dev or to coordinate non-mainline work.
Q: How do I combine the CVS and Git trees so I can test/develop current Horde 4 code?
A: Some of this is still being worked out, and these instruction might change as development moves forward, but the current suggestion is:
Update/pull most recent changes into the various repositories
Use the horde-fw-symlinks.php script to link the various framework libraries to your include directory.
horde-fw-symlinks.php --src /var/www/html/horde/framework --dest /var/www/pear
horde-fw-symlinks.php --src /usr/local/githorde/framework --dest /var/www/pear
horde-fw-symlinks.php --src /usr/local/horde-hatchery/framework --dest /var/www/pear
horde-fw-symlinks.php --src /var/www/html/horde/framework --dest /var/www/pear
horde-fw-symlinks.php --src /usr/local/githorde/framework --dest /var/www/gitpear
horde-fw-symlinks.php --src /usr/local/horde-hatchery/framework --dest /var/www/gitpear
Q: How do I start from scratch with a git/cvs head install
A:
These steps only work on case sensitive file systems, see above:
cvs -d:pserver:cvs.horde.org:/repository checkout horde framework
git clone --depth 1 git://dev.horde.org/horde/git/horde horde-git
git clone --depth 1 git://dev.horde.org/horde/git/horde-hatchery
pear install framework/devtools/package.xml
cd horde
mkdir libs
horde-fw-symlinks.php
horde-fw-symlinks.php --src ../horde-git/framework
horde-fw-symlinks.php --src ../horde-hatchery/framework
echo "<?php ini_set('include_path', dirname(FILE) . '/../libs' . PATH_SEPARATOR . ini_get('include_path'));" > lib/core.local.php
After some time has passed you will want to update your working copy from the Horde servers. These commands will do that. The commands are to be executed from the base of the Horde installation (the directory created by the CVS checkout):
cvs update -dP
cd horde-git && git pull --rebase && cd ..
cd horde-hatchery && git pull --rebase && cd ..
Now we have to refresh the Framework library symlinks:
horde-fw-symlinks.php
horde-fw-symlinks.php --src ../horde-git/framework
horde-fw-symlinks.php --src ../horde-hatchery/framework
Then continue with the installation steps in docs/INSTALL.
Q: Why does the sidebar not collapse/Why can't I switch tabs on the config screen/Why do certain links not work?
A: To minimize commits and SCM growth we are no longer providing minimized !JavaScript files in the js/ directory. Instead you will need to use the source !JavaScript files directly. To do this you will need to add a line for each installed application that provides a !JavaScript file. Start with the following lines and expand as necessary, added to the bottom of config/registry.php:
$this->applications['horde']['jsuri'] = $this->applications['horde']['webroot'] . '/js/src';
$this->applications['imp']['jsuri'] = $this->applications['horde']['webroot'] . '/js/src';
$this->applications['kronolith']['jsuri'] = $this->applications['horde']['webroot'] . '/js/src';
$this->applications['chora']['jsuri'] = $this->applications['horde']['webroot'] . '/js/src';