= 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. }}}