1 99:59:59,999 --> 99:59:59,999 Thank you very much. 2 99:59:59,999 --> 99:59:59,999 Thanks everybody for coming,… 3 99:59:59,999 --> 99:59:59,999 If you are packaging software and you want me to work on with you, 4 99:59:59,999 --> 99:59:59,999 this is how you can do that. 5 99:59:59,999 --> 99:59:59,999 It is a very self-??? talk: 6 99:59:59,999 --> 99:59:59,999 I just want to explain some of the things that I like, 7 99:59:59,999 --> 99:59:59,999 some practice that I prefer about Debian packaging, 8 99:59:59,999 --> 99:59:59,999 and I don't pretend this is any sort of official, 9 99:59:59,999 --> 99:59:59,999 permanent or final thing. 10 99:59:59,999 --> 99:59:59,999 I just wanted to share some ideas that I have about the way that I work with 11 99:59:59,999 --> 99:59:59,999 packages, in the hope that maybe, hmm, for two hopes: 12 99:59:59,999 --> 99:59:59,999 One is that I hope that I can show you something that you have not heard of, 13 99:59:59,999 --> 99:59:59,999 or maybe you were doing differently, 14 99:59:59,999 --> 99:59:59,999 or maybe you think it is the right think to do and it is just nice to see somebody 15 99:59:59,999 --> 99:59:59,999 somebody else doing it. 16 99:59:59,999 --> 99:59:59,999 My second hope is that you can tell me what I am doing wrong, 17 99:59:59,999 --> 99:59:59,999 and you can help me learn and improve on my own packaging techniques. 18 99:59:59,999 --> 99:59:59,999 If you see something that I am proposing up here, 19 99:59:59,999 --> 99:59:59,999 and you think there is a problem with it, I would like to hear about it too. 20 99:59:59,999 --> 99:59:59,999 I just want to see more of the culture within Debian, 21 99:59:59,999 --> 99:59:59,999 of people who are doing packaging, explaining what they are doing, 22 99:59:59,999 --> 99:59:59,999 and so I thought I would just step up and explain: 23 99:59:59,999 --> 99:59:59,999 "Here is some of the practice that I do", 24 99:59:59,999 --> 99:59:59,999 In the hope that other people will do the same and explain what they are doing, 25 99:59:59,999 --> 99:59:59,999 and maybe they can learn from me and I can learn from them. 26 99:59:59,999 --> 99:59:59,999 Without much further ????, I am just going to dive into it. 27 99:59:59,999 --> 99:59:59,999 If you have questions, I am perfectly happy to be interrupted, 28 99:59:59,999 --> 99:59:59,999 we have some folks with walking mics in the crowd: 29 99:59:59,999 --> 99:59:59,999 you can just raise your hand. 30 99:59:59,999 --> 99:59:59,999 I you have got a question or an interruption or whatever, 31 99:59:59,999 --> 99:59:59,999 that is fine. 32 99:59:59,999 --> 99:59:59,999 I ??? I got the whole 15 minutes, I think there are 20 minutes, 33 99:59:59,999 --> 99:59:59,999 I ??? the whole time, so there will be also time for questions at the end 34 99:59:59,999 --> 99:59:59,999 if you prefer. 35 99:59:59,999 --> 99:59:59,999 But I do not mind being interrupted. 36 99:59:59,999 --> 99:59:59,999 So, this is all on this web page here, 37 99:59:59,999 --> 99:59:59,999 you could probably skip this talk and go read the web page, 38 99:59:59,999 --> 99:59:59,999 but then you would not have the nice ??? actions, 39 99:59:59,999 --> 99:59:59,999 and it is easier to tell me that I am wrong in person, 40 99:59:59,999 --> 99:59:59,999 so I would like to have that happen. 41 99:59:59,999 --> 99:59:59,999 I put this up on the Debian wiki, 42 99:59:59,999 --> 99:59:59,999 because I want anyone to be able to find it. 43 99:59:59,999 --> 99:59:59,999 If you thing you have got some good ideas, you should put it on the Debian Wiki too: 44 99:59:59,999 --> 99:59:59,999 other people can take advantage of the ideas that you have got. 45 99:59:59,999 --> 99:59:59,999 First baseline is: I really like revision control. 46 99:59:59,999 --> 99:59:59,999 And I know that it makes me a certain flavor on nerd, 47 99:59:59,999 --> 99:59:59,999 but when we are working with things that are as complicated as software packages, 48 99:59:59,999 --> 99:59:59,999 hmmm, I think a lot of people don't get that in Debian we are not just working on 49 99:59:59,999 --> 99:59:59,999 one software package: 50 99:59:59,999 --> 99:59:59,999 you are actually probably, if you are doing a responsibly work, 51 99:59:59,999 --> 99:59:59,999 on at least two software packages, and maybe 5. 52 99:59:59,999 --> 99:59:59,999 So you have got the version that is unstable and you have got 53 99:59:59,999 --> 99:59:59,999 the version that you try to maintain for stable as well. 54 99:59:59,999 --> 99:59:59,999 And we are committing to doing maintenance work. 55 99:59:59,999 --> 99:59:59,999 A lot of our work in the project is ??? in nature: 56 99:59:59,999 --> 99:59:59,999 we want to clean up the mess and we want us to stay out of the way and 57 99:59:59,999 --> 99:59:59,999 to make sure things work, functionally, 58 99:59:59,999 --> 99:59:59,999 for people who are relying on the operating system to not get in their way. 59 99:59:59,999 --> 99:59:59,999 So revision control I think is really helpful because it means you can 60 99:59:59,999 --> 99:59:59,999 keep track of what changes you have done on different branches of the project 61 99:59:59,999 --> 99:59:59,999 while you are maintaining both of them. 62 99:59:59,999 --> 99:59:59,999 Basically, ??? require working with the revision system I am comfortable with, 63 99:59:59,999 --> 99:59:59,999 I prefer Git, I am not going to have a religious word about it. 64 99:59:59,999 --> 99:59:59,999 If upstream uses Git, I am even happier, and I try to make my packaging depend on 65 99:59:59,999 --> 99:59:59,999 upstream's revision control. 66 99:59:59,999 --> 99:59:59,999 I like to use 'git-buildpackage', and I like to use it with debhelper. 67 99:59:59,999 --> 99:59:59,999 If you have not tried out 'git-buildpackage', 68 99:59:59,999 --> 99:59:59,999 we are going to have a 'git-buildpackage' skill share session 69 99:59:59,999 --> 99:59:59,999 later on today actually, and I welcome you to come and share your tricks with it, 70 99:59:59,999 --> 99:59:59,999 or learn some tricks from other people. 71 99:59:59,999 --> 99:59:59,999 It is a particular way that you can keep your Debian packaging in a Git repository, 72 99:59:59,999 --> 99:59:59,999 and it helps you to keep track of all of the changes that ave happened within 73 99:59:59,999 --> 99:59:59,999 your packaging and within upstream to make sure you are not accidentally 74 99:59:59,999 --> 99:59:59,999 making other changes. 75 99:59:59,999 --> 99:59:59,999 So it is very easy to go back and review what you have done. 76 99:59:59,999 --> 99:59:59,999 I find that really useful. 77 99:59:59,999 --> 99:59:59,999 I definitely also like to keep upstream's source code in the same revision control 78 99:59:59,999 --> 99:59:59,999 system. 79 99:59:59,999 --> 99:59:59,999 I like to keep the tarballs in the revision control system because it means 80 99:59:59,999 --> 99:59:59,999 that if someone is interested, they can uses a tool called 'debcheckout'. 81 99:59:59,999 --> 99:59:59,999 You can use 'debcheckout' with a name of a package: 82 99:59:59,999 --> 99:59:59,999 you say just "I am really interested in package 'foo', 83 99:59:59,999 --> 99:59:59,999 let me see the source code for that": 84 99:59:59,999 --> 99:59:59,999 debcheckout foo 85 99:59:59,999 --> 99:59:59,999 You get the source code, and you get the source code from a revision control 86 99:59:59,999 --> 99:59:59,999 system that you can now track and you can just propose changes on. 87 99:59:59,999 --> 99:59:59,999 You can also extract the tarball from that revision control system. 88 99:59:59,999 --> 99:59:59,999 'debcheckout' actually works even if you do not have upstream stuff in there, 89 99:59:59,999 --> 99:59:59,999 but I like to keep it all in one revision control system, 90 99:59:59,999 --> 99:59:59,999 it is just easier to find everything when you want. 91 99:59:59,999 --> 99:59:59,999 Some of these things that I prefer have to do with what the upstream software 92 99:59:59,999 --> 99:59:59,999 developer has done, so I am less inclined to try the package an upstream software 93 99:59:59,999 --> 99:59:59,999 project if they just throw tarballs here over the wall to an FTP side 94 99:59:59,999 --> 99:59:59,999 every now and then. 95 99:59:59,999 --> 99:59:59,999 It makes it more difficult for me to know what they are doing, 96 99:59:59,999 --> 99:59:59,999 and why they are doing it. 97 99:59:59,999 --> 99:59:59,999 So i like it, I have already said, when upstream uses Git, 98 99:59:59,999 --> 99:59:59,999 I also like when upstream signs their releases, 99 99:59:59,999 --> 99:59:59,999 and say "hey, this is specific release", 100 99:59:59,999 --> 99:59:59,999 Because that is a signal that I can use, or somebody else that understands the 101 99:59:59,999 --> 99:59:59,999 project: as said "we think that this something that other people can use", 102 99:59:59,999 --> 99:59:59,999 or "this is a particular version we would like other people to test". 103 99:59:59,999 --> 99:59:59,999 There are a lot of other situations where maybe it is not so important. 104 99:59:59,999 --> 99:59:59,999 And having that be cryptographically signed is really useful.