9:59:59.000,9:59:59.000 Hi, everybody, I'm Eric Doland. 9:59:59.000,9:59:59.000 9:59:59.000,9:59:59.000 I'm the automake maintainer,[br]among other things. 9:59:59.000,9:59:59.000 Today I'm going to talk about removing obsolete packages. 9:59:59.000,9:59:59.000 This is meant to be a BOF. 9:59:59.000,9:59:59.000 I only have sixteen slides, 9:59:59.000,9:59:59.000 so I'm going to talk about my experiences 9:59:59.000,9:59:59.000 in removing old versions of automake. 9:59:59.000,9:59:59.000 Please feel free to interrupt with questions 9:59:59.000,9:59:59.000 or criticisms or comments as we go. 9:59:59.000,9:59:59.000 Hopefully with a bit of discussion about how to do this better in the future, 9:59:59.000,9:59:59.000 or maybe not better, we'll see. 9:59:59.000,9:59:59.000 So just to set the context a little bit, 9:59:59.000,9:59:59.000 automake in Debian, 9:59:59.000,9:59:59.000 I started maintaining it a really long time ago. 9:59:59.000,9:59:59.000 It's making me feel old. 2002. 9:59:59.000,9:59:59.000 This was around the time that automake 1.6 came out, I think. 9:59:59.000,9:59:59.000 One of the problems automake has is 9:59:59.000,9:59:59.000 that new releases of it usually have incompatibilities 9:59:59.000,9:59:59.000 with backwards-compatible completely. 9:59:59.000,9:59:59.000 There's various reasons why this is, 9:59:59.000,9:59:59.000 it provides a very weird interface, 9:59:59.000,9:59:59.000 because you're basically embedding things inside make files, 9:59:59.000,9:59:59.000 and it's hard to control the API of a make file. 9:59:59.000,9:59:59.000 Back in the day, there was, for a very long time, 9:59:59.000,9:59:59.000 automake 1.4, and that just sort of worked, 9:59:59.000,9:59:59.000 and then, automake 1.5 was introduced, 9:59:59.000,9:59:59.000 Debian upgraded to automake 1.5, and lots of packages broke. 9:59:59.000,9:59:59.000 So what ended up happening is that automake 1.5 got moved into its own package, 9:59:59.000,9:59:59.000 and automake 1.4 was automake package. 9:59:59.000,9:59:59.000 Nowadays, the older versions get moved into their own packages, 9:59:59.000,9:59:59.000 and generally, the currently released version--the most up-to-date version-- 9:59:59.000,9:59:59.000 is the automake package. 9:59:59.000,9:59:59.000 This has some downsides, because it's not necessarily fully backwards-compatible, 9:59:59.000,9:59:59.000 but this is usually what people want. 9:59:59.000,9:59:59.000 They want the latest version of automake, and they don't want to have to install 9:59:59.000,9:59:59.000 a new package any time a new version of automake comes out. 9:59:59.000,9:59:59.000 All the automake packages provide an alternative 9:59:59.000,9:59:59.000 so that you can have your /usr/bin/automake 9:59:59.000,9:59:59.000 be exactly which automake you want it to be. 9:59:59.000,9:59:59.000 The priority of that alternative usually means that the latest version of automake 9:59:59.000,9:59:59.000 is the one automatically selected, but of course, you can override that. 9:59:59.000,9:59:59.000 There's a note here that, depending on automake directly, is a little risky, 9:59:59.000,9:59:59.000 because fancy automake files, new versions of automake, might break you, potentially. 9:59:59.000,9:59:59.000 Anyway, this is not the automake BOF, this is just a little context 9:59:59.000,9:59:59.000 about why automake is what it is in Debian. 9:59:59.000,9:59:59.000 So there's problems with this, because these backwards-compatible issues, as I said, 9:59:59.000,9:59:59.000 were packaging all the versions of automake. 9:59:59.000,9:59:59.000 Each new version was getting a new package, basically, 9:59:59.000,9:59:59.000 and we've gone through a lot of automake packages over the years. 9:59:59.000,9:59:59.000 I didn't count them up, but it looks like almost close to ten, I guess, 9:59:59.000,9:59:59.000 which is a lot of packages you have to deal with. 9:59:59.000,9:59:59.000 People will depend on these individual packages, for whatever reason, 9:59:59.000,9:59:59.000 and then getting them out of the system, when they become old, is troublesome. 9:59:59.000,9:59:59.000 As of the wheezy release, we had four different automakes in the wheezy release. 9:59:59.000,9:59:59.000 So we had what the old, old--as you can see, 1.4, 1.9, 1.10, and 1.11-- 9:59:59.000,9:59:59.000 and they say that at one point we're going to have five different versions of automake, 9:59:59.000,9:59:59.000 which is a lot of versions of automake. 9:59:59.000,9:59:59.000 You can also see that the 1.4 version was released in 2002, 9:59:59.000,9:59:59.000 when I started maintaining this stuff, so it's really old. 9:59:59.000,9:59:59.000 No one should be using it, and no one should have been using it for the last ten years, 9:59:59.000,9:59:59.000 but we sort of kept it around because people were like 9:59:59.000,9:59:59.000 "oh, maybe there's old software that, you know, still depends on automake 1.4." 9:59:59.000,9:59:59.000 Um, yeah. 9:59:59.000,9:59:59.000 This is crazy. [br]There are too many versions of automake. 9:59:59.000,9:59:59.000 No one really wants them. So, I started out on this mission 9:59:59.000,9:59:59.000 to bring us down to, hopefully, one or two versions of automake for the next release. 9:59:59.000,9:59:59.000 I've been doing this over the last year, and I was makign these slides 9:59:59.000,9:59:59.000 and I was thinking about, it sort of had these weird parallels 9:59:59.000,9:59:59.000 with some things I'd read about, so now I present to you 9:59:59.000,9:59:59.000 the five stages of removing an obsolete package from Debian. 9:59:59.000,9:59:59.000 The first stage is denial. 9:59:59.000,9:59:59.000 [laughter] 9:59:59.000,9:59:59.000 "If I send mail to debian-devel asking everyone to very nicely 9:59:59.000,9:59:59.000 move off of these old versions of automake, they'll just do it, right? 9:59:59.000,9:59:59.000 I mean, doesn't everyone agree that that's what will happen? 9:59:59.000,9:59:59.000 Yeah, so that's what I started out by doing. 9:59:59.000,9:59:59.000 I'm going to talk a little bit about the tools and stuff that I used in this process, 9:59:59.000,9:59:59.000 so this is sort of technical, and sort of procedural. 9:59:59.000,9:59:59.000 If you've got questions about either side, just shoot up your hand. 9:59:59.000,9:59:59.000 The first thing you do, or the first thing I did, is that I used grep-dctrl to figure out 9:59:59.000,9:59:59.000 which packages were build dependent on automake. 9:59:59.000,9:59:59.000 Automake basically has no actual binary dependencies, it's all build dependencies. 9:59:59.000,9:59:59.000 There were one hundred and sixty-nine packages--source packages. 9:59:59.000,9:59:59.000 That's a lot, but in Debian scale, it's not that much. It should be fine, right? 9:59:59.000,9:59:59.000 Then, I used the dlist tool to turn that list of packages into a list of maintainers, 9:59:59.000,9:59:59.000 with their packages. It's a very nice tool for just ?? 9:59:59.000,9:59:59.000 Then, I sent out an email debian-devel saying, 9:59:59.000,9:59:59.000 "Here's my plan: I want to get rid of these old versions of automake. 9:59:59.000,9:59:59.000 Here are the packages that are build-dependent on them. 9:59:59.000,9:59:59.000 Please, do your part and fix this. 9:59:59.000,9:59:59.000 I sent that mail out on May 27, 2013, so before last DebConf, which I was not at. 9:59:59.000,9:59:59.000 Stage Two: Anger. 9:59:59.000,9:59:59.000 People aren't fixing these things! 9:59:59.000,9:59:59.000 I'm going to have to actually do something other than send an email. All right, fine. 9:59:59.000,9:59:59.000 The next thing I did, to try to encourage people again to make this move, 9:59:59.000,9:59:59.000 Lintian has this really nice facility. One of tests is actually--there's a list of obsolete packages. 9:59:59.000,9:59:59.000 If you put your package in that list, 9:59:59.000,9:59:59.000 lintian will complain any time anyone depends on that package, 9:59:59.000,9:59:59.000 to try to force maintainers that are paying attention, 9:59:59.000,9:59:59.000 that they should't actually be depending on these packages. 9:59:59.000,9:59:59.000 That's good. It's cheap to do. Just sent the patch to lintian. 9:59:59.000,9:59:59.000 I don't see any reason they wouldn't take it if it made sense. 9:59:59.000,9:59:59.000 Now, I have to file bugs. People don't read debian-devel. 9:59:59.000,9:59:59.000 It's sort of, it's fair I guess. So I basically just went through the list of packages I had, 9:59:59.000,9:59:59.000 with a simple substitution script, so now it mailed a mail that was like 9:59:59.000,9:59:59.000 "Please stop depending on automake blank." with a very boiler-plate thing saying 9:59:59.000,9:59:59.000 "this is why we're getting rid of these old versions of automake" 9:59:59.000,9:59:59.000 and I sent that off to BTS. Which is really easy, right? Because BTS is just email. 9:59:59.000,9:59:59.000 So you can just do that. You can file a bunch of bugs that way. 9:59:59.000,9:59:59.000 I should note that my initial email was a proposal for this mass bug filing, as well, 9:59:59.000,9:59:59.000 which you're supposed to do as part of the procedure of sending out mass bug filings. 9:59:59.000,9:59:59.000 When I did this, I had to file one hundred and seventeen bugs. 9:59:59.000,9:59:59.000 There's fifty two packages that got fixed between me sending my initial email 9:59:59.000,9:59:59.000 and the bugs. So that's good, I shouldn't be that angry, maybe. 9:59:59.000,9:59:59.000 I did wait four months between these two events, though, so there's plenty of time. 9:59:59.000,9:59:59.000 The other thing I used was using BTS user tags, to track all of these bugs very easily easily 9:59:59.000,9:59:59.000 using this automake clean-up 2013 tag. I added the date because 9:59:59.000,9:59:59.000 I knew this would not be the last automake clean-up that I would have to do, 9:59:59.000,9:59:59.000 so I keep these separate. 9:59:59.000,9:59:59.000 Always good to date your work if you think you might have to repeat it. 9:59:59.000,9:59:59.000 Yeah, no, I did not finish in 2013. I started in 2013. 9:59:59.000,9:59:59.000 It should've been automake clean-up 2015 or something, if I wanted the finish date. 9:59:59.000,9:59:59.000 All right, so stage three. Bargaining. 9:59:59.000,9:59:59.000 Okay, so, I'm past the anger stage, and now I'm like "okay, I've filed all these bugs, 9:59:59.000,9:59:59.000 but not much is happening, so let me just fix this for you. 9:59:59.000,9:59:59.000 I'll give you the exact fix on how to much to the newer version of automake. 9:59:59.000,9:59:59.000 Here's the patch. Just apply it and upload your package. 9:59:59.000,9:59:59.000 I've done all the work; I've done all the hard stuff." 9:59:59.000,9:59:59.000 So, before I even did this, thirty four packages were fixed 9:59:59.000,9:59:59.000 without supplying a patch. I began the patching in late October of 2013 9:59:59.000,9:59:59.000 and--this is the hard part, this is the part that's tough to automate--in many cases, 9:59:59.000,9:59:59.000 just switching to the new version of automake worked, and then it was easy, 9:59:59.000,9:59:59.000 but that was maybe 50% of the cases. 9:59:59.000,9:59:59.000 I didn't keep good statistics about how tough this was exactly, 9:59:59.000,9:59:59.000 but in a lot of cases, I had to fiddle with the build system, 9:59:59.000,9:59:59.000 or a lot of build rules would run automake itself, 9:59:59.000,9:59:59.000 instead of using dh-autoreconf. 9:59:59.000,9:59:59.000 There was a lot of actual fiddling with packages, trying to get them to build, 9:59:59.000,9:59:59.000 and then just waiting to build these things, which can take a very long time, 9:59:59.000,9:59:59.000 to test that this worked. So this is a lot of actual, tough work. 9:59:59.000,9:59:59.000 What else? I used pbuilder to do the builds and then if I successfully built something, 9:59:59.000,9:59:59.000 with the new version of automake,[br]I would just mail off a patch 9:59:59.000,9:59:59.000 to the existing bug, in BTS, and flip the patch tag, saying "here's the patch." 9:59:59.000,9:59:59.000 So I thought, okay, at this point, you know, there's patches out there 9:59:59.000,9:59:59.000 for almost all of these problems. 9:59:59.000,9:59:59.000 There should be a wave of uploads and everything should be great. 9:59:59.000,9:59:59.000 Stage Four: Depression. 9:59:59.000,9:59:59.000 That's not what happened. I was pretty much on my own. 9:59:59.000,9:59:59.000 The responsible maintainers have already fixed this problem. 9:59:59.000,9:59:59.000 So we're into this, sort of, long tale of people who don't care, 9:59:59.000,9:59:59.000 or people who are too busy to deal with their packages or do anything here. 9:59:59.000,9:59:59.000 Now I have to upload NMUs. I started this in late January, I think 9:59:59.000,9:59:59.000