Diff for ReleaseManagement between 54 and 55


+ Horde Release Management

This section describes the release process of the stable Horde releases.

++ Horde 3.3 Release

+++ Applications that were released along with Horde 3.3

* Ansel 1.0

* Chora 2.1

* DIMP 1.1

* Forwards 3.1

* Gollem 1.1

* Hermes 1.0

* IMP 4.3

* Klutz 1.0

* Kronolith 2.3

* Nag 2.3

* Passwd 3.1

* Turba 2.3

* Vacation 3.1

* Whups 1.0

+++ Applications to be released following Horde 3.3

Bugs left:

* Trean 1.0 (http://bugs.horde.org/ticket/4969, http://bugs.horde.org/ticket/7812)

* Wicked 1.0 (http://bugs.horde.org/queue/wicked)

++ Horde 4.0

The decisions made for Horde 4 so far are:

* Move to git for future (Horde 4+) version control. Code will be pushed to a clean git repository as it is modified for Horde 4 and PHP 5. Git pushes will generate email to a new list, commits@lists.horde.org. Everything currently in CVS will remain available, and Horde 3.x will continue to be developed in and released from the existing CVS structure.
* Aim for shorter release cycles of major versions. When backwards compatibility is broken we will increment the major version number (Horde 3 to Horde 4) as we do now; we'll just do that more often. Feedback indicates that being able to do feature upgrades of an application but not Horde, or vice versa, is not a big advantage for most people.
* Use individual package versions much more extensively with Horde 4. We want it to be possible to release an application upgrade that relies on new framework functionality without requiring a new major version; instead, many changes will be possible by just requiring a specific package version.
* Finally, and most importantly, we will be focusing on getting the last Horde 3.3 releases out (see above), and then shifting our major focus to Horde 4. Our goal is to have an initial release of Horde 4.0 within 6 months of starting serious development on it; and to aim for major version releases approximately every year thereafter.

Full minutes of the board meeting where this was discussed: http://lists.horde.org/archives/board/2008-October/000085.html

+++ Git layout

We have three git repositories:

* horde
* horde-hatchery
* horde-support

The horde respository has stable code in it.

The horde-hatchery respository is a playground for new code and refactoring old code. Once a module a stabilized here, it's being moved to the horde repository.

The horde-support repository has maintainer and relase tools, and the git and svn hooks in it. Once we have update mechanisms in place, we'll add hordeweb there.

hordedoc is an open question.

Also, just a reminder that git push messages are going to commits@lists.horde.org, not cvs@lists.horde.org.

+++ 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. All HEAD commits are pushed 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 start from scratch with a git/cvs headGit install

**A:** Note that if this is the first time you've dealt with our framework libraries, you will need to discover our PEAR server before proceeding with the steps below:
pear channel-discover pear.horde.org

**A:** You will need to download the two Git repositories:
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
cd horde-git/horde
mkdir libs
echo "<?php ini_set('include_path', dirname(__FILE__) . '/../libs' . PATH_SEPARATOR . ini_get('include_path'));" > lib/core.local.php
horde-fw-symlinks.php --src ../framework
horde-fw-symlinks.php --src ../../horde-hatchery/framework

Then continue with the installation steps in docs/INSTALL. Set the paths to the various Horde applications via the 'fileroot' and 'webroot' parameters in config/registry.php. If these directories do not live directly under git, you must create a config/horde.local.php file in this application and define HORDE_BASE in that file like this:

define('HORDE_BASE', '[Full filesystem path to horde]');

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 (in the above setup, horde-git/horde):

git pull --rebase
git --git-dir=../../horde-hatchery/.git --work-tree=../../horde-hatchery/ pull --rebase

Now we have to refresh the Framework library symlinks:</code>

rm -rf libs/*
php ../framework/devtools/horde-fw-symlinks.php
php ../framework/devtools/horde-fw-symlinks.php --src ../../horde-hatchery/framework
</code>Creating a web-accessible installation can be done simply by running the install_dev PHP script (located at horde-git/framework/bin in the repository checked out above).  To run this script, copy horde-git/framework/bin/install_dev.conf.dist to horde-git/framework/bin/install_dev.conf and edit that file to match the setup of your server.  Running that script will symlink the entire horde package into the web-accessible directory you specify, symlink all other horde applications within that directory, and will properly set up the necessary include/horde path definitions. Note that all edits should take place within the repository, as the horde directory will be deleted every time the install_dev script is run. Additionally, full directory paths will be needed in the horde/config/registry.php file due to the symlinks.

**Q:** Why does the sidebar not collapse/Why can't I switch tabs on the config screen/Why do certain links not work?

**A:** Make sure your 'jsfs' and 'jsuri' entries in horde/config/registry.php are correct. They are actually no needed anymore at all, unless you really know what you are doing. Applications no longer come shipped with javascript source files in js/src - they all live directly under js/ now.

+++ Conversion from Horde 3

Please see ((Doc/Horde4Conversion|Horde 4 Conversion)) for more details on porting Horde 3 libraries to Horde 4.

++ Roadmaps

+++ Horde


+++ IMP


+++ Turba


+++ Ingo


+++ Kronolith

[KronolithResources Expanded thoughts on using resources]

+++ Nag


+++ Sork

* Merge passwd into framework/Auth library
* Merge vacation and forwards drivers with Ingo and Sam (see Ingo roadmap)

+++ Chora


++ Older Releases

* [ShowStoppersThreeTwo Show Stoppers for Horde 3.2 release]
* [ShowStoppersThreeOne Show Stoppers for Horde 3.1 release]
* Horde 3.0
 * [ShowStoppersThreeOh Show Stoppers for Horde 3.0 release]
 * [MissingFeaturesThreeOh Missing Features for Horde 3.0 release]