[commits] [Wiki] created: Doc/Dev/ReleaseCycle

Jan Schneider jan at horde.org
Tue Jun 28 13:07:03 UTC 2011


jan  Tue, 28 Jun 2011 13:07:02 +0000

Created page: http://wiki.horde.org/Doc/Dev/ReleaseCycle


----
+ Draft Horde Release Cycle

Draft of the Horde release cycle policy, put together from mailing  
list discussion in January/February 2011. This is not intended to  
summarize all viewpoints, but to synthesize the discussion into a  
proposal.

++ When to break backward compatibility?

Backwards compatibility can be broken in each major version. We aim to  
release a new major version every 12-18 months.

# The existing API (method signatures and return values) will not  
change as long as the major version number is the same
# If new methods or classes (significant functionality) are added then  
a minor number is incremented
# When we decide to break backward compatibility in a given library or  
application we will commit to supporting the latest release of the old  
major version with security updates for 18 months
# When we decide to break backward compatibility we document what has  
changed and make recommendations on how to update code to support the  
new version

++ How often should new application versions be released?

There will be new application feature releases every 6 months; every  
12-18 months the release will be a new major version, otherwise they  
will be minor version releases. In addition, security releases will be  
made as soon as possible when issues are identified, and bugfix  
releases may be made in between feature releases.

++ How often should framework packages see new releases?

The framework packages will be versioned under the same rules as  
applications (breaking BC takes a major version release for a stable  
package, for example), but will only see synchronized releases as part  
of the Horde Core. Individual packages will be released as interesting  
features or useful bugfixes are available.

++ How long will old versions be supported?

We will support the current and previous major versions.

++ Additional context

+++ Gonçalo Queirós

In my company we've been developing with Horde 4 for like one and half  
year. We have our own branch, where we change some Horde apps and  
Core, and some apps developed in-house, and we merge Horde code from  
time to time.

The gap between merges is usually one week (the train moves fast :-),  
but when we need to prepare a new release (yes we already have it in  
production), we stop merging with Horde since its development code,  
and we need some time to make tests etc...

Having 6 month releases would give us developers, the confidence that  
at least twice a year the code is in a stable state, and ready for  
production.

We didn't decide yet how we are going to work after H4 is released,  
but it also depends on how Horde plans releases, but i think we will  
have a stable branch that will only receive Horde bug-fixes and  
security updates plus in-house development, and a second branch, that  
would have all the previous branch code, plus weekly merges with Horde.
The second branch only exists so we can run some tests on it to find  
if anything is broken, and to allow us a fastest integration when new  
stable releases are done by Horde. But then again, this is in no way  
decided. We might also don't merge for the entire 6 months, and then  
take some days to make it.

As developers working with latest code, we also have some trouble  
finding information on what's going on and what's planned. Ok every  
app has it own roadmap, but that's it.
Im sure Horde developers have meetings somehow, where you decide what  
and how you will do things. It would be great to share with the  
community that thoughts , so we can understand a bit better where we  
are going to.

+++ Ralf Lang

As a mostly external developer, I want to add my thoughts on BC  
breaking. I strongly advocate BC breaks when needed (the type of thing  
I expect from H4.x
-> H5 after maybe a year or two) and complete redesigns like H3->H4  
only when you feel the old patterns really won't work any more.

The last 1-2 years asked difficult decisions for me, what's the way to go.

I had some non-public applications done and now I picked up eleusis in  
official horde repos.

For most of the time, H4 (git) was no viable option. Moving too fast,  
no guarantees, no release in sight, virtually no documentation or  
people to ask. On the other hand, the H3 way to do things asked a  
php4-ish approach and sometimes libraries/api's which the Horde Core  
developers themselves tried to replace already. I tricked myself  
around, using the latest H3 sometimes with components pulled from   
cvs-head and /incubator/.

I'm not complaining. The result of H4 development has been a big leap  
forward, both API wise and in applications. Also dropping PHP4 has  
helped a lot. On the other hand, I'd be glad to see more gradual  
changes even when breaking BC.

I don't think customers would want to pay a migration of any custom  
app from H3 to H4 while keeping H3 as a platform is definately a dead  
end.

Turning that to open source community development: I think most of the  
improvement patches geared to H3 versions which still await review  
would need more than just cosmetic changes to work in H4. Developing  
for the trash can doesn't attract casual committers. Yes, that's a bit  
harsh and shouldn't be taken too seriously. Just my thoughts.

I'm happy to see H4 coming and I'm waiting to package it for openSUSE 12. ;-)



More information about the commits mailing list