← Back to team overview

launchpad-dev team mailing list archive

Re: First cut at recipe db-schema patch

 

On Mon, Nov 30, 2009 at 5:12 PM, Julian Edwards
<julian.edwards@xxxxxxxxxxxxx> wrote:
> On Monday 30 November 2009 11:22:13 Jonathan Lange wrote:
>>  * Putting owner in the URL and conflating ownership with write
>> permissions leads to broken URLs, which is bad.
>>  * Not having the owner in the URL disallows recipes for the same
>> package with the same name.
>>
>> What other considerations are there?
>
> I would ask about what real-world and likely-to-happen scenarios where either
> of these would be a problem.
>

Good question! I'll relist the points below and follow each with
probable real-word examples. There have been some useful suggestions
in other posts in this thread.

1. Putting owner in the URL and conflating ownership with write
permissions leads to broken URLs, which is bad.

John gets fed up with having to wait for the Launchpad team to release
new versions of launchpadlib etc, so he sets up a daily build at:
  https://lp.net/~john-the-coder/ubuntu/python-launchpadlib/+recipe/nightly.

That works great for a while, but eventually someone makes a change to
launchpadlib that means that the packaging branch in the recipe is no
longer appropriate, which means the PPA is out of date.

John is no longer interested in this launchpadlib crap. He looks
around for someone who wants to maintain it, and finds US government
agent Jack Bauer, who is going to fix it NOW. John passes edit
permissions (and thus ownership) to Jack, changing the URL to:
  https://lp.net/~jack-bauer-24/ubuntu/python-launchpadlib/+recipe/nightly

Meanwhile, Kara is really getting into launchpadlib hacking and has
come to rely on John's daily build. She notices that John's PPA is out
of date, makes a note of the recipe URL so she can fix it later, and
then gets on with other things. Then, some time after US special agent
Jack Bauer has taken control of the situation, she goes to the URL she
wrote down and gets a 404! Noooo.


2a. Not having the owner in the URL disallows recipes for the same
package with the same name.
2b. Not having the owner in the URL puts the onus on the user to
choose a good package-wide name

John wants daily builds of launchpadlib -- these Launchpad guys never
release! He sets up the recipe at:
    https://lp.net/ubuntu/python-launchpadlib/+recipe/nightly.

It's great for a while, but then John starts really getting into
desktopcouch and hacking on Quickly and doesn't really do launchpadlib
stuff any more. The Launchpad team ends up doing something that breaks
the packaging branch in John's recipe, and the recipe is broken.

Kara, meanwhile, has been using launchpadlib more and more as part of
her daily activities with Ubuntu development. She sees that John's PPA
is out of date, and decides to fix it. She sees that John's packaging
branch is broken, makes a new one that works and then goes to make her
own python-launchpadlib recipe.

She'd like to call it "nightly", but that's taken. Hmm. She could call
it "daily", but that would mean explaining to everyone on IRC that
they should use "daily" and not "nightly". She could call it
"kara-nightly", although that makes it sound like a special variant,
rather than the one you should use (it also sounds too much like the
name of a decidedly mediocre actress). "nightly-working" is terrible,
and forebodes future "nightly-really-working" nightmares.

In the end, Kara picks "nightly-working", and files a bug on Launchpad
about how recipes should let you have your own namespace, rather than
sharing a big one.

3. Branches have the owner in the URL, not doing that here would seem
to be inconsistent.

John hear's about the distributed development stuff that Ubuntu has
been doing. He looks at an example recipe that's hosted on Launchpad
and looks at the URL.

Even though the recipe clearly has no official relationship to the
package, it looks like it's underneath the package. John, who knows an
awful lot about branches, wonders why the URL scheme isn't like
branches. He shrugs, and mentally files it in his "more arbitrary
stuff that Launchpad does" folder.


Phew! Hope this helps.
jml



Follow ups

References