[Zope3-dev] [URGENT] Organising the satellite projects, eggs and version numbers before beta today

Jim Fulton jim at zope.com
Thu May 3 09:27:43 EDT 2007


On May 3, 2007, at 4:56 AM, Christian Theune wrote:

> Hey,
>
> I'm in front of the same wall that Fred was going up. ;)
>
> I talked to Zagy about the problems we're facing with the current egg
> releases of projects that live in Zope3/src/zope/ and
> Zope3/src/zope/app/ and wrote this up a bit:
>
> Problems
> ========
>
> When working with eggs, we need to carefully use version numbers  
> for the
> releases and be able to do continuous releases.

By continuous releases, do you mean releases with version numbers  
that look like: 1.1dev-r1234?  If so, I'm not convinced we'll need  
this at steady state for most projects.  For most packages, regular  
releases, possibly augmented by the occasional alpha or beta release  
should be enough, IMO.

> This is currently a bit
> icky:
>
> - Coding in the tree doesn't force you to get the individual
> dependencies right, especially when dependencies evolve over time and
> require constraints based on the version number.
>
> - Releasing and tagging doesn't go together very well in this schema,
> although continuous releases shouldn't require tags anyway. The normal
> continuous releases from setuptools get somewhat awkward because we  
> have
> the indirection of the external.

The current schema of making projects with externals pointing into  
the Zope tree was always meant to be a temporary measure.


> I was trying to think about the constraints of handling the large tree
> when moving the code of all projects into satellite projects. IIRC the
> requirement is that all projects that we move out now will get a  
> common
> version number.

I don't think that is a requirement.  It is a likely consequence of  
the fact that they will likely already have been released with a  
common version number.  Because version numbers should be increasing,  
they will tend to stay in sync for a while.



>
> Proposal
> ========
>
> Here is what we found would be workable and would like to do later  
> today
> before doing the beta release. I call this approach "synchronized
> satellites" picking up on the terminology Fred came up with. ;)
>
> - Move the code of the remaining projects into the satellite
>   projects.
>
> - Replace the satellite's external with the actual code on its
>   trunk and point the Zope 3 trunk back to the package in the
>   satellite project's trunk.
>
> - Create a directory "version" in the Zope 3 tree that holds a
>   "version.txt" file.  This will be the common version number
>   that Zope 3 and the satellite projects share.
>
> - Create an external in the satellite projects trunk
>   that points to the version directory in Zope 3's trunk.
>
> - Set the version.txt file to read "3.4.0b1". This will always
>   read the next version that is going to be released.
>
> - Change the setup.py for the satellite projects to read their
>   version number from version/version.txt
>
> In this setting we can develop the satellite projects on their own and
> make releases that match the code.

As soon as code for a project moves from the Zope tree to the project  
tree, then the project can use whatever version numbers it wants as  
long as they are increasing.

So I think you should omit the last 4 steps above.

You also need to add externals in the Zope 3 tree that point to the  
new locations.  This assumes that the 3.4 releases will be made from  
the Zope 3 tree or that you want to support development with the Zope  
3 tree at least a while longer.

>
> Future releases
> ----------------
>
> When releasing Zope 3 "the large project" as beta 1 in this case,
> following steps would be involved to keep the projects in sync:
>
> - Create a release tag on the satellites (tags/3.4.0b1)
>
> - Create a release tag on the Zope 3 trunk (tags/3.4.0b1)
>
> - Update the `version` external on the tagged satellites
>   to the tag of the Zope 3 trunk
>
> - Update the Zope 3 tag to refer to the release tags on the
>   satellites.
>
> - Increase the version number on the Zope 3 trunk to `3.4.0b2`
>
> Note: When deciding that we don't target b2 anymore but c1, we can  
> just
> update the trunk at any point in time. I don't expect any hassles from
> that change. Most important thing is that the version.txt on the trunk
> is monotonically increasing.

No. Each project should have it's own release number.

> Support scripts
> ---------------
>
> As we are dealing with more than 90 eggs here, we'll also need script
> support to keep the handling of the synchronized satellites bearable.
>
> I'll expect to need following scripts:
>
> - Transform the current source tree into the "synchronized
>   satellites" approach (one time thing)
>
> - Do a release tag of the Zope 3 tree that includes the mechanics
>   of updating the externals as described in the section 'Future
>   releases' (needed in the future)

YAGNI

>
> For those scripts I'll need to maintain a list of those synchronized
> satellite projects that needs to live somewhere. Not all zope.* and
> zope.app.* projects are satellites, just because they are  
> referenced as
> externals from the Zope 3 tree (e.g. zope.testing is not) so I'm  
> afraid
> I'll need to put an explicit list somewhere.

No synchronized versions please.

Jim

--
Jim Fulton			mailto:jim at zope.com		Python Powered!
CTO 				(540) 361-1714			http://www.python.org
Zope Corporation	http://www.zope.com		http://www.zope.org





More information about the Zope3-dev mailing list