← Back to team overview

openerp-community team mailing list archive

Re: [Merge] lp:~openerp-community/openerp/skitzotek_trunk_symlinks into lp:openerp

 

Hi, just a couple of things about versions and dependencies.

The ONLY way to manage versions and dependencies is to create real python packages (eggs) and publish them on pypi (http://pypi.python.org/pypi/).

This allows to pin versions and dependencies per-package and/or per-project and to manage project w/ buildout (http://www.buildout.org/) that in turn allows to replicate project environments easely and without the pain of manual picking of packages from here and there every time you deploy an istance. 

For example, in the Plone world when a new version is released a buildout file w/ all the versions to be used is published (ie: http://dist.plone.org/release/4.2b2/versions.cfg) and when you want to deploy that particular version of plone you simply make your buildout extend that file (see http://plone.org/documentation/manual/developer-manual/managing-projects-with-buildout/referencemanual-all-pages). 

Doing this you'll be sure that every instance you'll deploy will have the right versions. And, if you need to use a development version, or your own version, you can use buildout extensions like http://pypi.python.org/pypi/mr.developer to declare it, as Plone's core developers do into https://github.com/plone/buildout.coredev/ (see https://github.com/plone/buildout.coredev/blob/4.2/sources.cfg for example).

There are already some builouts for bootstrapping OE:

https://github.com/kalymero/OpenERP-Buildout
https://github.com/kdeldycke/openerp.buildout

but they can't use the entire power of buildout since the are no eggs for OE modules.

Moreover, by publishing eggs we'll have a track of the history and the progress of a package, and who did it, who's maintaining it. Not to mention that if you miss a package you can just "pip install" it, that's it.

I'm not working "constantly" on OpenERP anymore, but every time I come back to it for some spot work I always found myself lost in this crazy pattern of "re-implementing my own thing". I feel PITA when I have to deal w/ the big mis-use that OpenERP sa does of the python eco-system (and other systems, technologies as well). Every time they need a feature they implement their own solution (or copy&paste the entire code of a package in the core, as they formerly did with vatnumber check), no matter if there are already tools well-documented and supported by other developers and communities, and I'm scared about they'll do so for version pinning too (as Raphael already pointed out).

My $0.02


-- 
https://code.launchpad.net/~openerp-community/openerp/skitzotek_trunk_symlinks/+merge/93115
Your team OpenERP Community is subscribed to branch lp:~openerp-community/openerp/skitzotek_trunk_symlinks.


Follow ups

References