launchpad-dev team mailing list archive
-
launchpad-dev team
-
Mailing list archive
-
Message #04408
Implementation plan for derived distros UI
Hi,
While Matthew is doing the second round of user testing for the
derivative distribution mockups at:
https://dev.launchpad.net/LEP/DerivativeDistributions
we're starting to think about how this UI (or something similar) will
be best implemented. Specifically, the pages that display the package
differences between a derived distro series and its parent:
https://dev.launchpad.net/LEP/DerivativeDistributions?action=AttachFile&do=get&target=derived-series-diffs_5.png
This page (and its siblings - missing packages, unique packages) needs
to display a result set of all the packages that are different between
two distribution series (ie. the latest published version of a package
is different).
It'd be great to get some feedback from stub or other people with more
postgre-foo than me to confirm or deny the following assumptions:
1. This UI will require a new model/database table.
Even if a query is possible to generate the information displayed
there, it would be too slow for a view (?), and would not provide a
way to store extra information such as the comment, or whether the
item is ignored without hacking these onto existing models.
What would be a good model name for these records? DistroSeriesDiff?
DistroSeriesDifference (just to communicate that its not just a
textual diff like PackageDiff)?
2. A job will be required that generates and updates the
DistroSeriesDifference records for the view.
3. When "View diff" is clicked for a specific row, a PackageDiff
record will be created (using the existing infrastructure) to schedule
the diff generation job.
4. Schema: A DistroSeriesDifference record would require the following fields:
* derived_series (foreign key to the derived series which also tells
us the parent series, although see option (a) below).
* parent_source_package_publishing_history
* source_package_publishing_history (see option (b))
* comment (text)
* ignored (boolean)
Schema assumptions:
* we don't need a package_diff nullable foreign key as a query for
the packagediff table based on our related source package releases
will be fast enough (even when displaying 50 records). We could
replace the two source/target package references with a single
reference to a PackageDiff if and only if we wanted to generate a diff
always (which apparently we don't, as shown in the UI).
Schema options:
a) Instead of derived_series, we could generalise to:
* from_series (foreign key to the parent of the derived series)
* to_series (foreign key to the target series)
which would keep the DistroSeriesDifference implementation a bit more
general (and rename parent_spph/spph to
from_source_package_publishing_history/to_source....)
b) We could also just use source package releases here (like the
package diff table), but the source package publishing history enables
us to encode a bit more info (like archive). (@Julian: after thinking
more about this, I'm not sure why spph is helpful? How we'd use the
extra information, or how is it related to a difference between two
different versions which should be independent of which archive
they're published in?).
Thanks for reading (and hopefully thinking and writing :) ). I'll
integrate any feedback into an implementation plan.
-Michael
Follow ups