= Host Ensemble Formula Development in Launchpad =
'''Contact:''' Jonathan Lange <
>
'''On Launchpad:''' none yet
== Rationale ==
We would like as many formula as possible for Ensemble as quickly as possible. We can help do this by very quickly providing a top-notch developer collaboration experience for Ensemble using Launchpad. This will help the soon-to-be big Ensemble formula developer community.
== Stakeholders ==
* Gustavo Niemeyer, Ensemble technical lead, last spoken 2011-03-04
* Robert Collins, Launchpad technical architect, last spoken 2011-03-07
* Clint Byrum, Ubuntu Server & formula developer, last spoken 2011-03-07
* James Troup, Canonical IS, last spoken 2011-03-04
== Constraints and Requirements ==
=== Must ===
* Be able to develop this very quickly, for very low cost
* Get something up quickly that will promote Ensemble formula development
* Store & share version-controlled source
* Different versions of formula for different releases of the known-good set
* Bug tracker that allows release management across a known-good set
* Track and view bugs in a specific formula
* Track bugs that affect multiple formulas
* As a formula developer I want to associate formulas with an Ubuntu release, so that they can be properly indexed (known-good-set for release N) and also made dependent on the right base image
* As a formula developer I want to push formulas to a personal (non-private) location so that other people can use the formula, and also fork a personal version of the formula for evolving it.
* Manage a release of a known-good set of formulas (sometimes called a "distribution")
* Search for formulas from the ensemble command-line client so that a user can find alternatives to the Ensemble KGS formulas that better fit their needs
* As an ensemble user I want to search for formulas from the known-good-set for release N by default so that I can rapidly and confidently deploy services
* As an ensemble user I want to search for formulas from all the universe of formulas including personal ones on request so that I am not constrained by Canonical's known-good-set
* Need to serve formulas without their version controlled history for fast downloads from the ensemble client
* Clients need to be able to pull & search for formula across multiple repositories so that people who work with private repositories available only with their LAN
* Enable people to deploy formulas from the known-good-set for release N by default, and from a specific personal location on request.
* Handle a known-good set of roughly 2,000 formulas
* Handle a total set of around 100,000 formulas
* multiple versions of the known-good set
* unofficial versions of formulas
* versions that are unpackaged
* this number is basically made up
* Enable Ensemble to solve dependencies using information from published formulas.
== Thoughts? ==
=== Implementation approaches ===
==== Create a distribution for Ensemble KGS, treat formulas as source packages ====
* At the moment, Launchpad doesn't allow bugs to be filed on a source package in a distribution unless that source package has been uploaded & built for that distribution
* This prevents people filing bugs in Ubuntu for packages that are only in PPAs
* Need to be careful when changing this constraint
* We would have to fix [[https://bugs.launchpad.net/launchpad/+bug/386596|bug 386596]]
==== Create a project for Ensemble KGS, make formula branches series branches ====
==== Stick with Principia ====
==== Create a project group for Ensemble KGS, have a formula per project ====
=== Discussions ===
2011-03-07, #launchpad-dev, Freenode:
{{{
lifeless: ping.. trying to wrap my head around adding a new distro to launchpad that is not for built packages...
SpamapS: hi
lifeless: I understand you had a chat w/ jml about a distro for ensemble formulae
SpamapS: creating a distro is a privileged task; please wait for the ensemble list discussion and LEP before doing it
lifeless: right, I'm not going to do it.. I am trying to understand the challenges.
SpamapS: ah, do you mean challenges in using or creating? :)
lifeless: well I don't understand the suggestion that there's no bug tracking if you don't have a built package. How do non-built distros work given that restriction?
SpamapS: they don't
SpamapS: try and file a bug on openssh in baltix.
Oh.
I dare you
what's the use of distros then? ;)
* SpamapS is tempted now
SpamapS: distros are all about building and shipping packages
Yeah, be that the case in reality.. in my head, they're about tracking collections of software. :-P
SpamapS: so we don't permit bugs filed on package names we know about unless the package is in the distro
SpamapS: this stops folk filing bugs on e.g. cassandra before its actually in Ubuntu
that makes perfect sense. :)
and this matters because all our metadata driving policy - like packagesets etc - depends on source package / binary packages existing.
So the real issue is there's no way, other than building, to create a package.
*I* don't know how deep the rabbit hole goes
The way I saw it working was a mapping of a set of directories into source package names...
SpamapS: you can map source packages into source package names
But I'm starting to wonder if, for the beginning of the project, we shouldn't just use a flat bzr and let people use tags to distinguish the formula name.
SpamapS: that would be a -lot- simpler.
SpamapS: jml and I had trouble inferring /requirements/ vs /things that using a distro would let you do/
Yeah I think people got excited about reusing the distro code (myself included)
In some ways it makes a lot of sense
in other ways we really have two quite different things wedged into one in lp's distro bug support
If the project takes off... we hope to have similar numbers of formulae as we have packages in Ubuntu so it would be very hard to track bugs on such a large body of work.
one things is 'lightweight components in a bug tracker' and the other is 'policy driven by uploads of stuff'
SpamapS: really? 20K forumulas?
a formula for anything that opens a network port
SpamapS: thats more like 1K
so, maybe 2000
we can start with one structure and migrate
like, it would be great to have lightweight components for e.g. bzr
something more than tags and less than separate projects
Yeah.. I think thats probably going to be the thing I recommend in the list discussion.
Tight coupling, once again, proves to make things less usable...
indeed
I'm a big fan of proving a core facility and letting folk do something cool with it
now, on the vcs side
jml said we need branch per (formula, release) tuple
which the (packagename, series) namespace in distro branches supplies
SpamapS: oh, on bugs, you /can/ use product series as a component like thing. same place in the UI
but the concept of nominations vs tasks would make it a little ugly
lifeless: the series will be the series of formulae tho.. I'd like to keep that nice and clean.
indeed
so back to vcs
do you need that tuple now, or really just (formula, 'sid') - e.g. you only need trunks for the formulas?
lifeless: I think having one bzr branch for all 2000 formulas would be a little painful. But you just mentioned in a recent discussion that bzr can branch the sub-dirs just fine, right?
SpamapS: you can work on just a subdir yes.
all the history comes, but honestly, 2K small projects is tiny bzr scale wise
so if its /principia/sid/formulas/databases/mysql .. I can bzr branch lp:principia/sid/formulas/databases/mysql and interact with it, yes?
Oh but I still get the whole history for /principia/sid .. :(
A minor concession.. but one that our target market will hate.. because they're all git/ruby fanbois. ;)
SpamapS: yes, but I think you're overthinking the size here.
when you do this in git you get all the history too
Right it's just faster. ;)
which I *hate* as an argument for any vcs..
but some people think it matters. ;)
SpamapS: mmm, not as such per various benchmarks we've done.
SpamapS: bzr network fetch is pretty good these days
lifeless: Yeah, I'm going to again say that its a very small issue.. the main thing is to start getting those merge proposals cranking.. not achieve intergalactic domination overnight. :)
SpamapS: anyhow, i have not particular preference for what we do
I'm not trying to guide towards or away from distros
but - they are what they are.
}}}