[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-hackers] Distributed egg repo proposal

From: Imran Rafique
Subject: Re: [Chicken-hackers] Distributed egg repo proposal
Date: Fri, 18 Mar 2011 09:00:20 +0000

>> Imran said:
>> * we can have "recipe-my-wonderful-egg-latest", where chicken-install
>> grabs the sources from the upstream repos HEAD.
>> * we can have "recipe-my-wonderful-egg-felix-2.0", pointing to Felix's
>> forked version of my egg (different info for "upstream")
> Felix said:
> Forking eggs brings up the consistency problem again. I don't want
> to fork, there should be no forks, I'd say.

I disagree. We may be talking about different things here.

Lets assume a new egg, dynamite, is added to the tree. Becuase of the
new freedoms this system allows, dynamite's author keeps his repo and
workflow on github, and just submits a recipe which specifies the repo
details, and tag for each version of dynamite he wants to release.

Dynamite is popular, and gets repeatedly forked on github. Many of
these forks result in patches flowing back to dynamites author. But
there are 2 other forks (by Peter and Felix) where a fundamental
architectural difference exists in how some backend stuff is done.

To any user of dynamite, any of the 3 are perfect drop-in replacements
for each other. The exact same API, etc. The only difference is that
they have different performance characteristics in certain situations.
Both Peter and Felix endeavour to remain API compatible with the main

How do you handle this in the official egg tree?

We could have 3 seperate eggs, dynamite, dynamite-peter and
dynamite-felix. If there were any API differences at all, that would
be the cleanest way to handle it.

But in this instance, one could consider that its really 3 different
flavours of the same egg. So, perhaps this might be a better way to do


If dynamite is getting auto-installed as part of a dependency, by ci,
then it installs dynamite-1.0. But if *I* am explcitly deciding which
dynamite I want, I can choose:

    chicken-install dynamite
    chicken-install dynamite-1.0-felix
    chicken-install dynamite-1.0-peter

All 3 recipes provide the same symbol to the dependency tree (dynamite).

This may never come up, or we may prefer to have 3 eggs all doing
exactly the same thing. But the point is, its possible (as opposed to
impossible, with the current setup) and easily manageable.

       Imran Rafique

reply via email to

[Prev in Thread] Current Thread [Next in Thread]