Dashboard > OFBiz Project Administration Workspace > Release Plan
  OFBiz Project Administration Workspace Log In | Sign Up   View a printable version of the current page.  
  Release Plan
Added by David E. Jones, last edited by David E. Jones on Apr 26, 2007  (view change)
Labels: 
(None)

Apache OFBiz Release Plan

NOTE DEJ20060909: This document is still being created and is not a final draft, but should contain most of the operations needed to create a release. We may want to add more sections on preparing for a release such as more on testing, and stuff on the NOTICE, LICENSE, KEYS, etc files.

General Goals, Policies and Process

The What, Why and How of Apache OFBiz

The basic structure and driving force behind OFBiz has a lot to do with the goals and actualization of the release process.

OFBiz is and always has been a community-driven open source project. There is no central commercial organization that drives the development of OFBiz or derives a project from the intellectual property of the software or other project assets. This is formalized now that OFBiz is a project in the Apache Software Foundation.

Because of this OFBiz always has been and always will be just what users who contribute to the project want it to be. There are many different individuals and groups involved with many different needs and our goal is to define and follow development and release policies that serve the needs of these parties.

So, let's start with that...

How Do I Decide What to Use?

From a project user perspective there is one main question that can help determine which way they will want to get OFBiz: Do I want to contribute to the open source project?

For this question there are 3 main answers:

  1. Yes, definitely: I want to contribute to design, coding, and testing efforts and thereby collaborate with others to more effectively and efficiently satisfy the long-term requirements from me, my clients, or my employer
  2. Kind of: I want to stay on the cutting edge and participate with testing and feedback, but I'm not in a position to participate in development and/or in the near future I will need something more reliable and supported and that won't change very much
  3. Not really: I'm happy to offer feedback, but I really need something that will work well now and well into the future so we can get things going in our organization

For each answer there is a recommended way to get OFBiz:

  1. Get the code straight from the code repository (SVN) trunk and update frequently through development, and periodically even after production deployment
  2. Get the code from the code repository (SVN) release branch and keep updated or patched regularly as fixes are committed and the branch stabilizes over time; when getting started choose the most recent branch, even if it is very new; when new release branches are created update to them soon after the branch is done
  3. Get a built release package or the code from a release branch tag, and update as new pre-built release packages and tags are created; these will only represent fixes and unless a major issue arises they will be backward compatible and generally safe to update or patch to; when getting started choose a release branch that has been around for at least 2-3 months and that has no major outstanding issues in the issue tracker to assure that it has stabilized; when new release branches are created wait until you are ready to do a major upgrade and possibly need to modify your code and configuration, and wait at least until the prospective branch has stabilized before moving to it

General Release Policies

  • Release branches will be created approximately once per year; these will represent a new minor version number, and in cases of major and/or non-backward compatible changes a major version number
  • The trunk will never go into a feature-freeze state but rather development will continue and contributions will be accepted both immediately before and after the cutoff revision for a release branch
  • An initial pre-built package will be created and made available to help get people started with the branch
  • Once a release branch stabilizes an initial "stable" release tag and pre-built package will be issued
  • Patches on the release branch can be created and applied whenever users desire
  • Follow on release tags and pre-built packages will be issued when major problems are discovered and fixed, and periodically to represent a significant number of fixes and updates
  • Each new release tag and pre-built package with be represented by a third position version number change

How to do OFBiz Release-Related Tasks

Steps for testing a revision or branch before a release:

  1. For revision: svn export -r ${revision-number} https://svn.apache.org/repos/asf/ofbiz/trunk ofbiz
  2. For branch: svn export https://svn.apache.org/repos/asf/ofbiz/branches/$\{branch-name} ofbiz
  3. $ cd ofbiz
  4. $ ant run-tests
  5. Check results... (search for [JUNIT])
  6. $ cd ..
  7. $ rm -Rf ofbiz/

Steps for a test snapshot type "release":

  1. Example file-base-name: apache-ofbiz-4.0.0.TS1
  2. $ svn export https://svn.apache.org/repos/asf/ofbiz/trunk ${file-base-name}
  3. $ cd ${file-base-name}
  4. $ echo ${revision-number} > REVISION
  5. $ ant run-install
  6. $ cd ..
  7. $ zip -r ${file-base-name}.zip ${file-base-name}/
  8. $ tar -czvf ${file-base-name}.tgz ${file-base-name}/*
  9. $ gpg --output ${file-base-name}.zip.asc --detach-sig --armor ${file-base-name}.zip
  10. $ gpg --output ${file-base-name}.tgz.asc --detach-sig --armor ${file-base-name}.tgz
  11. $ openssl md5 ${file-base-name}.zip > ${file-base-name}.zip.md5
  12. $ openssl md5 ${file-base-name}.tgz > ${file-base-name}.tgz.md5

Steps for creating a branch in preparation for a real release:

NOTE: these steps all start with an svn co command though it is not intended that this would be done each time such an operation is done, rather it is to show context with an expectation that those doing these operations would already have a checkout somewhere to start from.

  1. Exaple branch-name: release4.0 (for a series of releases using 4.0.0, 4.0.1, 4.0.2, etc)
  2. $ svn co https://svn.apache.org/repos/asf/ofbiz ofbizroot
  3. $ cd ofbizroot
  4. $ svn copy trunk branches/${branch-name}
  5. $ svn commit -m "Created new branch: ${branch-name}"

Steps for applying a fix from the trunk to a branch as part of maintenance:

  1. $ svn co https://svn.apache.org/repos/asf/ofbiz/branches/$\{branch-name} ofbiz
  2. $ cd ofbiz
  3. $ svn merge -r ${revision-1}:${revison} https://svn.apache.org/repos/asf/ofbiz/trunk
  4. $ svn commit -m "Applied fix from trunk for revision: ${revision}"

Steps for creating a release from a branch:

  1. Example file-base-name: apache-ofbiz-4.0.0, or for framework only: apache-ofbiz-framework-4.0.0
  2. Example branch-name: release4.0
  3. $ svn co https://svn.apache.org/repos/asf/ofbiz ofbizroot
  4. $ cd ofbizroot
  5. $ svn copy branches/${branch-name} tags/${file-base-name}
  6. $ cd ..
  7. $ svn export https://svn.apache.org/repos/asf/ofbiz/tags/$\{file-base-name}
  8. $ cd ${file-base-name}
  9. For framework only release: rm -Rf applications/
  10. $ ant run-install
  11. $ cd ..
  12. $ zip -r ${file-base-name}.zip ${file-base-name}/
  13. $ tar -czvf ${file-base-name}.tgz ${file-base-name}/*
  14. $ gpg --output ${file-base-name}.zip.asc --detach-sig --armor ${file-base-name}.zip
  15. $ gpg --output ${file-base-name}.tgz.asc --detach-sig --armor ${file-base-name}.tgz
  16. $ openssl md5 ${file-base-name}.zip > ${file-base-name}.zip.md5
  17. $ openssl md5 ${file-base-name}.tgz > ${file-base-name}.tgz.md5

David,

based on the feedback from the Incubator's guys, I'd suggest to consider to prepare (and document here) also a source release: the steps would be exactly the same listed in "Steps for a test snapshot type release", except for the step #5 that should be skipped. I'de suggest to add the "-bin" (or something similar) to the name of the 'binary' release.

Posted by Jacopo Cappellato at Oct 25, 2006 02:39 | Permalink

David,

Sorry I was not aware of your last question since Confluencewas not sending changes this last weeks. In http://www.nabble.com/Properly-edited-OFBiz-manuals-tf2885792.html#a8071969&nbsp I suggested something about release number and how Ubuntu is dealing with Long Term Support.

In abstract :

  1. Release numbering : Ubuntu uses the month and year (eg 1.07),  BTW they use also a code name wich is easier to recall (eg. Dapper Drake, etc.). This contains more information than a sole release classic release number which is not what we are doing here because it's more "marketing oriented".
  2. Each release is supported during 18 months. Every 2 or 3 years one release is qualified as LTS (Long Term Support) and supported longuer (5 years for Ubuntu). I'm not sure this is accurate for us as we don't have the same policy : the 1st and 2d versions of Ubuntu were only milestones to the 3d which is an LTS...
Posted by Jacques Le Roux at Jan 13, 2007 05:08 | Permalink

Ooops, my release number above is wrong, of course it should be 7.01 (for january 2007)

Posted by Jacques Le Roux at Jan 13, 2007 05:10 | Permalink
Site powered by a free Open Source Project / Non-profit License (more) of Confluence - the Enterprise wiki.
Learn more or evaluate Confluence for your organisation.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.2.10 Build:#528 Nov 29, 2006) - Bug/feature request - Contact Administrators