On 10/02/12 05:00, Jonathan Lange wrote: > On Thu, Feb 9, 2012 at 12:57 AM, Robert Collins > <robe...@robertcollins.net> wrote: >> On Thu, Feb 9, 2012 at 12:49 PM, Guilherme Salgado >> <salg...@canonical.com> wrote: >>> >>> I think that's going to be challenging. My gut reaction would be to look for >>> >>> 1. Code that's no longer used and can be removed >>> 2. Duplicated code which could be moved to a common base >>> 3. Code that could be written in a simpler way >>> >>> Now, just searching for this kind of stuff takes some time, and there >>> probably aren't many occurrences of 1 left, so I'd probably focus on 2 >>> and 3, which certainly abound, although there's no guarantee that I'll >>> have a net negative until after the refactor/rewrite is done. That means >>> I may end up spending a day on something just to realize it'll have a >>> net negative of a dozen lines or so. That is certainly an improvement to >>> Launchpad, but to me (Linaro, in fact) it's mostly wasted effort as it >>> didn't take us significantly closer to our goal. >> >> There is a 4: extract or delete code that shouldn't be part of LP >> core. We have a -raft- of 'helpers' (e.g. the thing for running >> subprocesses) which are either: >> a) uninterestingly different to other helpers on pypi >> b) interestingly different but embedded in the LP code base so that >> no-one else can use them >> c) interestingly different but not pulling their weight >> >> These things can be pulled out to separate reusable projects, or just >> removed entirely and migrated away from. >> >> and 5: remove code that is used but is a net negative. (e.g. polls) >> >> In the last week I've seen 2 commits doing (1), one doing (2), and >> there is one for (3) about to land. I estimate about 15% of LP is >> covered by (4), and another 10%-15% by 5. >> >> Here are some ideas that should (possibly each on their own) easily >> offset your project: >> - remove the massive duplication between modules in the blueprints >> subsystem; last I checked about 30% of the code in there was verbatim >> copies between different contexts. >> - move most of utilities/* to the lpdevtools project - thats 6K LOC on its >> own >> - extract poppy to a separate project (it no longer needs to talk to >> the DB, so has no need to be part of LP) > > Ditto parts of codehosting. > > Perhaps the librarian? > >> - remove polls (not a trivial thing politically, but I'm sure mrevell >> is able to clear the way) >> - move the ec2 land/test logic to lpdevtools > > Actually, splitting much of it into its own project would probably be > a good idea. We ended up re-implementing a chunk of it, sort of, for > pkgme development. > >> - delete the representation cache from lazr.restful (there is a bug >> open for this) >> - delete all uses of memcache except for the one for the blog on the front >> page > > And since it's Salgado, we could perhaps add "clean up > distribution_mirrorprober & tests". :P
I'd be happy to do that, but this is one of the things that's very likely to give me a diff with a net positive, just like the cleanup I did yesterday (bug 888010, which was listed below as something that would reduce LOC). > >> - do the duplicate code part of bug 531720 >> - do bug 125637 >> - bug 614275 >> - bug 706129 >> - bug 708736 (should pay for itself via test cleanups) >> - bug 888010 >> - bug 4449 >> >> (those bugs come from the first page of tech-debt bugs for launchpad >> itself; there may be more if we consider launchpad-project...) > > I missed this discussion because I'm not particularly interested in > migrating blueprint work items from whiteboards (although I think it's > a super idea and am glad someone else is doing it). > > Should there be a wiki page with these ideas, or is the tech-debt tag > sufficient? > > jml -- Guilherme Salgado <https://launchpad.net/~salgado> _______________________________________________ Mailing list: https://launchpad.net/~launchpad-dev Post to : launchpad-dev@lists.launchpad.net Unsubscribe : https://launchpad.net/~launchpad-dev More help : https://help.launchpad.net/ListHelp