ReducingDuplication

Differences between revisions 1 and 15 (spanning 14 versions)
Revision 1 as of 2005-10-25 13:53:55
Size: 1267
Editor: visp
Comment:
Revision 15 as of 2005-11-09 18:10:18
Size: 2944
Editor: 209
Comment: Split out non-spec work to DapperDuplicatedPackages, rework implementation sect
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
 * '''Launchpad Entry''': https://launchpad.net/distros/ubuntu/+spec/foo  * '''Launchpad Entry''': https://launchpad.net/distros/ubuntu/+spec/reducing-duplication
Line 5: Line 5:
 * '''Contributors''': AdamConrad
 * '''Packages affected''': 
 * '''Contributors''': AdamConrad, JamesTroup, ColinWatson
 * '''Packages affected''':
Line 10: Line 10:
We need to reduce library (and app) duplication in main as much as possible to make dapper's "supported for 5 years on the server" goal easier on all of us. We need to reduce library (and application) duplication in main as much as possible to make dapper's "supported for 5 years on the server" goal easier on all of us.
Line 14: Line 15:
Supporting multiple versions of similar codebases can be incredibly difficult and time-consuming. We should, rather, be concentrating on keeping ONE of everything (one libdb, one libmysqlclient, one libssl, one libpng, one set of mozilla libs, etc) in main, and punting the rest to universe (or oblivion) Supporting multiple versions of similar codebases can be incredibly difficult and time-consuming. We should, rather, be concentrating on keeping ONE of everything (one libdb, one libmysqlclient, one libssl, one libpng, one set of mozilla libs, etc) in main, and punting the rest to universe (or oblivion).
Line 18: Line 20:
== Scope ==  * A security problem in libpcre requires an urgent update. Pitti is rather upset that he has to update several packages which have a static copy of libpcre in hoary breezy, but is then pleasantly surprised that due to this reduction effort, he only has to update one package (the actual library) in dapper.
Line 20: Line 22:
== Design ==  * A support company wants to commit to providing technical support for Dapper, but only wants to support packages that have security support. Jeff, the support person, no longer cries himself to sleep at night because Dapper's set of supported packages is much lower than Breezy's was.
Line 24: Line 26:
* Identify duplicate libs, make sure everything in main links to the "best" version, and kick the rest out.
* Audit packages for local copies of libs (static libz, libdb, libpng, imlib, libpcre, and libneon have all been common in the past), and get us linking dynamically to packaged libraries everywhere possible.
 * Identify duplicate libs, make sure everything in main links to the "best" version, and kick the rest out. The "best" version is almost always the newest library or app version, except for special cases where we may be concerned about stability or reduced feature sets. Those should be documented and discussed in DapperDuplicatedPackages (an example here is libmysqlclient). [ONGOING]
Line 27: Line 28:
=== Code ===  * Audit packages for local copies of libraries (static libz, libdb, libpng, imlib, libpcre, and libneon have all been common in the past), and get us linking dynamically to packaged libraries everywhere possible.
Line 29: Line 30:
=== Data preservation and migration ===  * Audit the seeds as they've built up a lot of cruft. We will add a rationale for every library package in the seeds since as a rule there should be no libraries listed in the seeds (they should all be pulled in as Depends or Build-Depends of seeded packages).

 * Germinate will be improved so that if a package is in extra and matches:

{{{
    ^*-dev$,
    ^*-doc$,
    ^*-dbg$
}}}

   It will be automatically seeded.

 * Germinate will be improved to support the seeding of whole source packages (rather than having to explicitly list all the binary children). This could be done by prefixing the package name with '%', à la quinn-diff. [DONE]
Line 33: Line 46:
== BoF agenda and discussion == Packages which ship their own version of a library, as opposed to statically linking with the Ubuntu version, might have local patches which need to be audited while we're doing this.

Summary

We need to reduce library (and application) duplication in main as much as possible to make dapper's "supported for 5 years on the server" goal easier on all of us.

Rationale

Supporting multiple versions of similar codebases can be incredibly difficult and time-consuming. We should, rather, be concentrating on keeping ONE of everything (one libdb, one libmysqlclient, one libssl, one libpng, one set of mozilla libs, etc) in main, and punting the rest to universe (or oblivion).

Use cases

  • A security problem in libpcre requires an urgent update. Pitti is rather upset that he has to update several packages which have a static copy of libpcre in hoary breezy, but is then pleasantly surprised that due to this reduction effort, he only has to update one package (the actual library) in dapper.
  • A support company wants to commit to providing technical support for Dapper, but only wants to support packages that have security support. Jeff, the support person, no longer cries himself to sleep at night because Dapper's set of supported packages is much lower than Breezy's was.

Implementation

  • Identify duplicate libs, make sure everything in main links to the "best" version, and kick the rest out. The "best" version is almost always the newest library or app version, except for special cases where we may be concerned about stability or reduced feature sets. Those should be documented and discussed in DapperDuplicatedPackages (an example here is libmysqlclient). [ONGOING]

  • Audit packages for local copies of libraries (static libz, libdb, libpng, imlib, libpcre, and libneon have all been common in the past), and get us linking dynamically to packaged libraries everywhere possible.
  • Audit the seeds as they've built up a lot of cruft. We will add a rationale for every library package in the seeds since as a rule there should be no libraries listed in the seeds (they should all be pulled in as Depends or Build-Depends of seeded packages).
  • Germinate will be improved so that if a package is in extra and matches:

    ^*-dev$,
    ^*-doc$,
    ^*-dbg$
  • It will be automatically seeded.
  • Germinate will be improved to support the seeding of whole source packages (rather than having to explicitly list all the binary children). This could be done by prefixing the package name with '%', à la quinn-diff. [DONE]

Outstanding issues

Packages which ship their own version of a library, as opposed to statically linking with the Ubuntu version, might have local patches which need to be audited while we're doing this.

ReducingDuplication (last edited 2008-08-06 16:41:21 by localhost)