Diff for "APPocalypse"

Not logged in - Log In / Register

Differences between revisions 2 and 3
Revision 2 as of 2010-06-25 17:08:26
Size: 1250
Editor: salgado
Comment:
Revision 3 as of 2010-06-28 18:19:52
Size: 2201
Editor: salgado
Comment:
Deletions are marked like this. Additions are marked like this.
Line 37: Line 37:
lp:~salgado/launchpad/project-to-bugs-adapter has an adapter for IProduct to IBugTarget (diff can be seen at http://paste.ubuntu.com/456511/), which is part of what we'll do to make the registry not have hard dependencies on any other apps. Here are some issues I encountered so far:

 * Should we have a single adapter per facet or multiple?
 * IBugTarget now inherits from ICanBeBugTarget, and IProduct inherits from the latter. I've done that so that we don't have to duplicate the browser:page declarations.
 * Some app-specific things are edited through the project's main +edit page (e.g. bug_reporting_guidelines, official_* and translation_focus, just to name a few). Although editing these doesn't seem to depend on any app-specific bits, it might do for others.

This is still a work in progress (lots of tests will probably fail), but it should help us identify possible pain points and see whether or not the whole idea is sane.

The APPocalypse

The apocalypse split the LP codebase in to app packages. We wish to continue this effort and clean up some remaining parts where the split isn't quite as clean as it should be.

We would then like to build on this in order to actually split the codebase in to separate branches, with the following gains:

  • A subset of tests will cover each app, reducing the test cycle.
  • Cleaner code with less mixing of concerns.
  • Ability to deploy Soyuz without the other apps.

What we are not doing:

  • Splitting every app in to a standalone project that can run independent of everything else.
  • Splitting the database.

The plan

We will aim to have several clearly defined layers:

  • Foundations (possibly more like a set of libraries)
  • Registry
  • Soyuz
  • Everything else

and attempt to only have each item in that list import from the one above.

Where one part can communicate with lower layers we will use soft dependencies, possibly built around a messaging system to allow them to co-operate.

Design

Implementation

lp:~salgado/launchpad/project-to-bugs-adapter has an adapter for IProduct to IBugTarget (diff can be seen at http://paste.ubuntu.com/456511/), which is part of what we'll do to make the registry not have hard dependencies on any other apps. Here are some issues I encountered so far:

  • Should we have a single adapter per facet or multiple?
  • IBugTarget now inherits from ICanBeBugTarget, and IProduct inherits from the latter. I've done that so that we don't have to duplicate the browser:page declarations.
  • Some app-specific things are edited through the project's main +edit page (e.g. bug_reporting_guidelines, official_* and translation_focus, just to name a few). Although editing these doesn't seem to depend on any app-specific bits, it might do for others.

This is still a work in progress (lots of tests will probably fail), but it should help us identify possible pain points and see whether or not the whole idea is sane.

Unresolved issues

  • Should we try to break the list of external dependencies (sourcedeps.conf and versions.cfg on a per-branch basis)?

APPocalypse (last edited 2010-07-14 07:30:29 by salgado)