Recipes vs. Looms
Barry Warsaw
barry at canonical.com
Mon Dec 14 23:50:00 GMT 2009
On Dec 14, 2009, at 05:59 PM, James Westby wrote:
>During UDS conversations with various people started to condense some
>thoughts that had been floating in my head for a while around recipes
>and looms: the difference, similarities, overlap and clashes that they
>have. This is another long mail. I apologise for that now, but this is
>a deep topic, and I think it warrants the length, as it is fundamental
>to the things that we plan to do.
This does dovetail nicely with my "First impressions" thread. I wasn't aware
of the recipes model, have never used it, and don't have a visceral sense of
the pros and cons.
I really like the looms approach though and am getting a better understanding
of how package development would work using it. What I really like is that I
can basically use the same tools I use to develop the upstream source code, to
develop the Ubuntu packages based on that upstream. I have to learn some
things, but they are the things that are most relevant to Ubuntu packaging.
>There are discussions about whether the "stack" model presented
>by loom is the best, as it entagles threads that don't necessarily
>have a dependency. There are alternative models proposed, including
>a full DAG as implemented by TopGit. My fear is that they are
>too complicated for people to easily grasp, and that they are
>not the best way to solve the problems they aim to.
I can see this. Even with "normal" software development, the stacked nature
of looms (and pipes TBH) is both a pro and a con. Usually it works great, but
sometimes it's not a perfect fit and then it can get painful to unwind
things. But I'm not sure the extra complexity of a DAG is worth it.
>Recipes also require a proliferation of branches. To add
>a patch you would have to create a new branch, push it to
>LP, add it to the recipe, and then pull it in. While we
>can script this, it is also fragile, and perhaps not very
>elegant.
This to me is the biggest concern with the recipes approach. I want to be
able to work completely off the grid for as long as possible. I want to be
able to do everything locally up until the time I need to share code with
other people (for review, sponsorship, merging).
>Looms on the other hand currently have no parent pointers
>per-thread. This makes it impossible to do a full update
>without extra information. At the least we need to be able
>to pull in the upstream changes to the bottom thread for
>daily builds, but recipes allow you to pull in changes to
>all the other threads at the same time.
I don't fully understand, but when I've done Launchpad branches using threads,
the bottom thread always points to my local copy of trunk. Thus, if I update
my (outside-the-loom) trunk branch, then down-thread to the bottom, bzr pull,
then bzr up-thread (I think --auto is the default), I'll have merged in the
new trunk to all my threads.
>Given that recipes don't appear to work very well at all for
>normal Ubuntu development (add a patch type work), and looms
>could be modified to support the daily builds type work
>(update all the threads from their parents and build the
>result), it seems to me as though we should perhaps be looking
>to modify looms, rather than develop a whole new system.
+1, modulo my total ignorance of recipes. ;)
-Barry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/ubuntu-distributed-devel/attachments/20091214/fb2d66ed/attachment.pgp
More information about the ubuntu-distributed-devel
mailing list