Quickly project templates and the "Application Layer Cake"

Registered by Rick Spencer

Discuss code development, deployment, and application management by end users for application developers, and how all of these fit together. Relates to Automagic python build system.

The heart of this system is highly opinionated choices about how developers should build new apps for Ubuntu, as well as templates and other systems for helping them right their code in a guided manner. This also includes packaging and deplloying code.

The system should be EASY and FUN.

Blueprint information

Martin Pitt
Rick Spencer
Needs approval
Rick Spencer
Series goal:
Accepted for karmic
Milestone target:
milestone icon ubuntu-9.10-beta
Started by
Martin Pitt
Completed by
Martin Pitt

Related branches



v0.2 will be universe right after desktopcouch is in main. Just waiting to test.

automagic python build system is under development as a separate project by pitti.

A prototype of quickly is available here: https://code.edge.launchpad.net/~quickly/quickly/trunk

pitti, 2009-06-08:
 - I made some typo fixes in the wiki spec
 - How do commands look like in the quickly/templates/ hierarchy? (Calling convention, name, path)
 - What is a ".quickly" file? If that's meant verbatim, you shouldn't use hidden files.
 - implementation does not talk at all about Launchpad setup, integration, and PPA uploading; how is that achieved, which information does/should the user supply, and what is done automatically? (project registration or +junk? project description? what about namespace cluttering if 10 people write a "test" application? we don't have "PPA branches" in LP yet)
 - "ubuntu-project commands proposition" is below "UDS discussion", which is not effectively part of the spec; in fact, all the discussion bits should be worked into the actual spec, and then deleted for clarity
 - this whiteboard still has discussion notes, can they be dropped now or do they still have something important? If they do, please merge into spec.

pitti, 2009-06-16:
 - "bzr whoami" needs to be configured by default. Likewise, "bzr launchpad-login" needs to be done first. How? (but see below)
 - What does "(+junk if it's not a fix)" mean?
 - I'm not convinced that we should semi-automatically create LP projects for all those; namespace collisions will be unavoidable, and we don't have per-user projects. Please consider not using LP project PPA branches for now.
 - Consider "set-ubuntu-version" -> "set-ubuntu-release"; but I wouldn't encourage this in the first place, since then you didn't test what you offer to other people
 - "quickly fix": Please try to rephrase; it's not really clear what this command should do; maintaining several stable branches sounds way outside the intended target audience, too. This leaves the area of "fun and easy", IMHO

didrocks, 2009-06-17:
* bzr whoami update path is:
  - binding to LP with user,
  - get bzr whoami, status it to default if it's "<some string> <current_user>@<current_hostname>". If not default, exit
  - then, set identifier to <launchpad_display_name> + <preferred_email_adress> (if public, if not, exit)
  - call bzr launchpad-login to set it to <launchpad_name>
* not +junk, trunk, updated
* discuted about that, I think you're right. So, "quickly release" should only ask for a project name, seek for them and choose an already existing one. Then, it goes to tagging, pushing, releasing a deb in the ppa…
The wiki has to be updated on that.
* set-ubuntu-version is a way better. I'm ok that the user wouldn't have tested his deb if he set another level. But I'm convinced that's something that people would ask when "quickly release" (this can be a parameter of quickly release, btw)
* this brings the subject that we must provide a command to be locally a deb?
* quickly fix: reading what you've writtent, you understood it. Ok, that's a more advanced concept, but if user don't use them, what the usage of tagging a branch when releasing a version?
* we must also define what "quickly save" does: offline "recording" (bzr commit), pushing the branch if launchpad binding have been set with a project (quickly release)?
* we have also to define a command to change the binded launchpad project (not having to change it manually in .quickly file).

didrocks, 2009-06-22: updated spec with previous remarks.

pitti, 2009-07-06: approved

Work Items:
Implement the ubuntu-project template: DONE
Design Review and modifications of ubuntu-project: DONE
Implement new window command: POSTPONE
Implement new dialog command: DONE
Implement new widget command: POSTPONE
Implement bash command completion: DONE
quickly command directing script: DONE
wrap automagic python build script: DONE
wrap project handling script: DONE
deal with setup.py : DONE
wrap release script : DONE
push to ppa in release script : DONE
create tutorial: TODO


Work Items

Dependency tree

* Blueprints in grey have been implemented.