5.3.0-git
2014-11-28
Last Modified 2009-03-30 by Jan Schneider

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:

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. 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

  • Note that if your filesystem is NOT case sensitive (i.e. HFS+ on the Mac) then you will need to have two separate include directories - one for the CVS framework libraries and one for the Git framework libraries. You will need to make sure to put the Git include directory first in your include_path.


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

  • For the actual Horde applications that have been moved to Git, there are a few options. You could either copy the application directory back and forth from your /horde directory, you could try to use a joint CVS/Git source tree, or you can symlink the application into your horde/ directory. Both methods have drawbacks. Issues with the first are obvious - you need to pull, copy, code, copy, push etc... The issue with second method is that you will either get lots of warnings about files that aren't tracked, or you could try to manage an ignore list for both CVS and Git. If you use a symlink, you will need to create a file base.local.php in the application's lib/ directory - and define your HORDE_BASE in that file.

Q: How do I start from scratch with a git/cvs head install

A:

  1. checkout the horde cvs head, the horde git head and the horde-hatchery head
    1. Make a directory that holds your horde pear related files - make sure to add this to your php path
    2. Make sure you have met all of the prerequisites for a normal horde install
    3. Create symlinks from your three repository clones to the horde pear related file location
    4. Copy the config/*.php.dist files and edit them as appropriate
    5. Fix the javascript folder
    6. Run your database install script

One possible setup:


/var/www/horde <- horde cvs head

/var/www/git/horde <- horde git head

/var/www/git/horde-hatchery <- horde-hatchery head

/var/www/pear <- horde pear related files

Create the symlinks using one of the two methods above (horde-fw-symlinks.php), using /var/www/pear as your destination and the appropriate source from just above.

Fix the Javascript folder by: (there's probably a better way to do this)


cd horde/js

cp src/*.js .

Run the database install script


cd horde/scripts/sql/

mysql -u root -p < create.mysql.sql 

Roadmaps

Horde

http://www.horde.org/horde/roadmap/

IMP

http://www.horde.org/imp/roadmap/

Turba

http://www.horde.org/turba/roadmap/

Ingo

http://www.horde.org/ingo/roadmap/

Kronolith

http://www.horde.org/kronolith/roadmap/

Expanded thoughts on using resources

Nag

http://www.horde.org/nag/roadmap/

Sork

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

Chora

http://www.horde.org/chora/roadmap/

Older Releases