AdoptUpstream
Dev Week -- Adopt-an-Upstream -- jcastro and dholbach -- Thu, Jan 28
UTC
1 [16:01] <dholbach> I'm here with the amazing Jorge O. Castro, jcastro!
2 [16:01] <jcastro> woo hoo!
3 [16:01] <jcastro> we have been preparing real hard for this session, hope you like it!
4 === godzilla is now known as Guest53616
5 [16:02] <dholbach> And together we'll talk about Adopting an Upstream! Why it's fun, necessary and makes the world a better place.
6 [16:02] <dholbach> jcastro: What's an Upstream?
7 [16:02] <jcastro> that's a good question
8 [16:02] <jcastro> first, when you get an ubuntu CD it comes with a bunch of great software
9 [16:02] <jcastro> things like Firefox, Openoffice, GNOME, KDE, etc.
10 [16:03] <jcastro> what Ubuntu does as a distribution is take all those things, assemble them into one operating system, and then ship
11 [16:03] <jcastro> so, these projects, we call them upstream, like in a river
12 [16:03] <jcastro> and distributions like us are downstram
13 [16:03] <jcastro> and derived distributions like Mint would be downstream from us
14 [16:03] <dholbach> so that's like all the software authors of those projects?
15 [16:03] <jcastro> working with upstreams and downstreams is a critical part of ubuntu
16 [16:03] <jcastro> right!
17 [16:03] <dholbach> (I hope I encourage YOU ALL to ask questions too, I asked the first ones myself... :-))
18 [16:04] <jcastro> so, for example, it's critical for us to be able to work with upstreams like Firefox to ensure that we're shipping something users will love
19 [16:04] <jcastro> so for example this week in #ubuntu-mozillateam you'll see our Ubuntu teams working with people from Mozilla
20 [16:04] <dholbach> So there's millions of Ubuntu users and there's thousands of Upstream projects... looks like being there for both huge groups is quite an undertaking
21 [16:04] <jcastro> so there's a bunch of cross boundary work going on there that some people don't see
22 [16:05] <jcastro> right, especially when you're trying to fix a problem! But we'll show you how to do that when we get there
23 [16:05] <jcastro> you'll see that sometimes putting a bug in the right place that we can be a service to upstreams when it comes to testing.
24 [16:06] <jcastro> and when we fix problems it's of course our duty to make sure that those fixes get back upstream so that they can improve the overall quality of their project
25 [16:06] <jcastro> and of course, the other half is ensuring that when upstream fixes bugs that we get those out to users, because at the end of the day that's what it's all about
26 [16:06] <jcastro> so
27 [16:06] <jcastro> I have been working on some wiki pages to help people get started
28 [16:07] <jcastro> https://wiki.ubuntu.com/Upstream
29 [16:07] <jcastro> It's unreasonable to expect every upstream author to know in detail how ubuntu works
30 [16:07] <jcastro> some are content just making their software
31 [16:07] <dholbach> and the other way around :)
32 [16:08] <jcastro> so I've put together a little cheat sheet here for them (you can help improve this too if you find mistakes)
33 [16:08] <jcastro> so that they can have one place to find important things, like when we freeze, what our security policy is, etc.
34 [16:08] <jcastro> and also give them information on how things are going on the ubuntu platform
35 [16:08] <jcastro> so if you wanted to find out about notify osd or messaging indicators, I've listed those there
36 [16:09] <jcastro> now
37 [16:09] <jcastro> one thing we've all been working on is a little program to give upstreams an "in" in the distro
38 [16:09] <jcastro> this would be a person that does know how Ubuntu works
39 [16:09] <jcastro> and is passionate about that specific piece of software
40 [16:10] <jcastro> and wants to work on it in Ubuntu but also be there for the upstreams to answer their questions, be an information source, and be there when things go wrong
41 [16:10] <jcastro> we call this Adopt a Package
42 [16:10] <jcastro> dholbach: want to go into that for a little bit?
43 [16:10] <dholbach> sure
44 [16:11] <jcastro> https://wiki.ubuntu.com/BugSquad/AdoptPackage
45 [16:11] <dholbach> and https://wiki.ubuntu.com/Upstream/Adopt
46 [16:11] <dholbach> so to Adopt an Upstream can mean a couple of things
47 [16:11] <dholbach> the most important one being that you act as a tie betwen Ubuntu and that upstream project
48 [16:12] <dholbach> you can answer questions for people on that project, you know what's going on there, you know what's going on in Ubuntu
49 [16:12] <dholbach> an easy example for "knowing what's going on" is: Upstream wants to ship a new feature release 2 weeks before the new Ubuntu release comes out
50 [16:13] <dholbach> in that case you can talk to them and make it clear that it's hard to get that new feature release into Ubuntu because Ubuntu is already almost frozen
51 [16:13] <dholbach> you can help with that kind of misinformation and help with the coordination early and explain what to do
52 [16:13] <dholbach> jcastro and I will talk about the release cycle in more detail later on
53 [16:14] <dholbach> another thing you can work on is bug reports
54 [16:14] <dholbach> as we said before Ubuntu exposes great software to millions of users
55 [16:14] <dholbach> of course these users occasionally run into problems
56 [16:14] <jcastro> and they might not know what an upstream is!
57 [16:14] <dholbach> exactly
58 [16:14] <dholbach> so it's our job to triage those bugs, debug them, get as much information as possible and forward them to the upstream maintainers
59 [16:15] <dholbach> because they are in the best position to work on the bug effectively
60 [16:15] <dholbach> if we can fix it that's great, then we'll forward the patch to upstream
61 [16:15] <jcastro> oh, so we can be good filters you mean?
62 [16:15] <dholbach> exactly
63 [16:15] <jcastro> we can weed out all the junk bugs so upstreams can concentrate on the ones with the best debugging info, descriptions, etc.
64 [16:15] <dholbach> I've heard we have great tools for finding duplicates and dealing with crashes?
65 [16:16] <dholbach> jcastro: maybe we should explain first what "to triage" means
66 [16:16] <jcastro> yes.
67 [16:16] <dholbach> you wanna do it? :)
68 [16:16] <jcastro> https://wiki.ubuntu.com/Bugs/HowToTriage/
69 [16:16] <jcastro> sure!
70 [16:16] <jcastro> so when users report bugs
71 [16:17] <jcastro> they go into this big pile
72 [16:17] <jcastro> to triage a bug means to subdivide that pile from one huge unmanageable mess to smaller piles
73 [16:17] <jcastro> and as the bug continues on in it's lifecycle it will end up in the right pile
74 [16:17] <jcastro> so, we might start with a big pile
75 [16:17] <jcastro> but then we have smaller piles, kernel, desktop, printing, etc.
76 [16:18] <jcastro> and then those get smaller
77 === tobias is now known as Guest96094
78 [16:18] <jcastro> until you have a package, like say, nautilus.
79 [16:18] <jcastro> bug triagers are people who sort the bugs in the right pile
80 [16:18] <dholbach> then we might be able to get the bug confirmed, make sure we know in which release the bug occurs
81 [16:18] <jcastro> the great thing about this is that you can do this without being too technical
82 [16:18] <dholbach> then find the right steps to reproduce it
83 [16:18] <jcastro> these days we have tools that do a good job of guessing what pile something should go in
84 [16:19] <jcastro> but we also need to try to reproduce the bug so we can confirm it
85 [16:19] <jcastro> this involves following what the reporter did
86 [16:19] <jcastro> so if the report is "clicking on this button breaks printing"
87 [16:19] <dholbach> https://help.ubuntu.com/community/ReportingBugs has a bit more detail about how this "guessing" works
88 [16:19] <jcastro> then usually you try it, and see if you see the problem too
89 [16:19] <jcastro> also, remember that we have millions of users
90 [16:20] <dholbach> the better we isolate the issue, the less work the upstreams have, they can concentrate on fixing the bug :-)
91 [16:20] <jcastro> I find that most times bugs sitting in the big pile have already been reported, so you can do a bunch of good just marking things as duplicates (if they are indeed duplicates)
92 [16:20] <dholbach> right
93 [16:20] <dholbach> also there's bugs with crash reportsf
94 === tobias is now known as Guest76403
95 [16:21] <dholbach> Ubuntu has a fantastic machinery that gets as much debug information about those crashes as possible
96 [16:21] <dholbach> automatically
97 [16:21] <jcastro> https://wiki.ubuntu.com/Apport <--- here are pictures of what it looks like
98 [16:21] <dholbach> so what was a painstaking job before (https://wiki.ubuntu.com/Backtrace) is a lot easier now
99 [16:22] <dholbach> the end result is that we can say in function do_something() in line 45 of file bla/something.c the whole thing crashed
100 [16:22] <dholbach> plus other things that developers might want to know :)
101 [16:22] <dholbach> go and see Emmet Hikory's session on Friday about "Interpreting stacktraces" if you want to know more :)
102 [16:22] <jcastro> are these important to send to upstreams?
103 [16:23] <jcastro> they look important!
104 [16:23] <dholbach> holy cow yes!
105 [16:23] <dholbach> with all this information it should be a bit easier for upstream developers to find the cause for the crash and fix it
106 [16:23] <dholbach> a crash in most cases means: the program is gone, it stopped working, unsaved work, etc you know what it's like
107 [16:24] <dholbach> sometimes these crashes happen in special circumstances that didn't happen for the upstream developers when they tested it
108 [16:24] <dholbach> in almost every discussion I was part of upstreams were happy about that kind of conversations and grateful for detailed bug reports
109 [16:24] <dholbach> if you have questions about how to get started with bugs and everything check out https://wiki.ubuntu.com/Upstream/Adopt and talk to the fine people in #ubuntu-bugs
110 [16:25] <jcastro> ok, so apport finds this and reports this to launchpad, what's the next step?
111 [16:25] <dholbach> the Launchpad machinery will do its magic and add more debug information to the bug report
112 [16:25] <dholbach> the next step would be trying to confirm the issue
113 [16:26] <dholbach> if you can confirm it and maybe add some more details to what happened, you can have a look and see if it was already reports in the upstream bug tracker
114 [16:26] <dholbach> if it was, see if you can add more information to the bug
115 [16:26] <dholbach> if it wasn't report it
116 [16:26] <dholbach> sometimes it's useful to have a look and see if upstreams have some kind of "debugging information" documented somewhere
117 [16:27] <dholbach> for some of them it will be something like "start the program with --debug option" or something
118 [16:27] <dholbach> a lot of that kind of information is listed at https://wiki.ubuntu.com/DebuggingProcedures and you should add info for your upstream project if you have any :)
119 [16:28] <dholbach> also Launchpad has a great feature: you can link the upstream bug to the Ubuntu bug, right?
120 [16:28] <jcastro> yeah
121 [16:28] <jcastro> let me show you about that
122 === godzilla is now known as Guest30844
123 [16:29] <jcastro> actually, give me a minute to find a bug
124 [16:29] <jcastro> dholbach: do a dance!
125 [16:29] * dholbach puts on some music and does the funky Upstream-Bug-Linking dance
126 [16:29] <jcastro> https://wiki.ubuntu.com/Bugs/Upstream
127 [16:30] <jcastro> ok so here is some documentation, depending on the bug
128 [16:30] <jcastro> however, in general, you can just click "Also affects project" in launchpad, and paste in the bug url from the other bug tracker
129 [16:30] <jcastro> https://wiki.ubuntu.com/Bugs/Watches
130 [16:30] <jcastro> they looks like this
131 [16:30] <jcastro> so you see there, on the top example, there's the bug in ubuntu, and the bug in the upstream project's bug tracker
132 [16:30] <jcastro> in this case linux kernel bug 10911
133 [16:31] <jcastro> these are useful because with certain bug trackers
134 [16:31] <jcastro> like mozilla's bugzilla, we can do neat things like syncing comments between the 2 bug trackers
135 [16:32] <jcastro> https://bugs.edge.launchpad.net/ubuntu/+source/notify-osd/+bug/501393
136 [16:32] <jcastro> here is a good example of both ubuntu and mozilla developers working on a bug for example
137 [16:32] <jcastro> however, just linking the bug can help
138 [16:32] <jcastro> because it gives everyone a place to gather discussion around a bug
139 [16:33] <jcastro> and especially for new users that might not know how things work
140 [16:33] <jcastro> what other information can we help upstreams with dholbach?
141 [16:33] <jcastro> tell me about this schedule
142 [16:33] <dholbach> another fine thing you can do is: plan a Bug Day with your Upstream: invite them to https://wiki.ubuntu.com/UbuntuBugDay - triage bugs together, give people some coaching with that particular software - once you're good friends with your upstream, sky's the limit
143 [16:34] <dholbach> alright... release schedule!
144 [16:34] <jcastro> upstreams ask me all the time about the schedule
145 [16:34] <jcastro> but sometimes I don't know what means what!
146 [16:34] <dholbach> have a look at https://wiki.ubuntu.com/ReleaseSchedule
147 [16:34] <dholbach> it shows our current release cycle
148 [16:35] <dholbach> you can see how it goes from green in the beginning of the 6 months cycle to red at the end
149 [16:35] <dholbach> green doesn't mean "it's all good, everything works" :-)
150 [16:35] <dholbach> it rather means "everything's allowed from a developer point of view"
151 [16:36] <dholbach> so we start with setting up the build tools in the beginning, plan features at UDS and merge with Debian (more on merges, syncs and Debian in a bit :-))
152 [16:37] <dholbach> at some stage we hit feature freeze, that's where we plan to have most of the feature in the distro
153 [16:37] <jcastro> Xazax | why is the release cycle for upstream projects important?
154 [16:37] <dholbach> doesn't mean they have to be all perfect
155 [16:37] <dholbach> Xazax: will get to that in a sec
156 [16:37] <dholbach> but it means that they have to be there and be test-able :)
157 [16:38] <dholbach> so we move from feature development to fixing
158 [16:38] <dholbach> and stabilisation
159 [16:38] <dholbach> the later it gets in the release cycle the more conservative we get
160 [16:38] <dholbach> to upload a small patch that fixes a crash 3 weeks before release is probably fine
161 [16:38] <dholbach> but to upload a GIANT new release with n+1 new features will probably get you in trouble with the release managers
162 [16:39] <dholbach> Jorge and I worked on a cheatsheet that makes it easier to understand what is allowed at which stage of the release cycle to ease the planning and coordination somewhat: http://people.canonical.com/~dholbach/cheatsheet.pdf
163 [16:39] <dholbach> that's linked from https://wiki.ubuntu.com/Upstream/Adopt too
164 [16:39] <dholbach> I hope that answers Xazax's question somewhat.
165 [16:40] <jcastro> i would like to chime in on his question
166 [16:40] <dholbach> sure
167 [16:40] <jcastro> with things like a Long Term Support release it's critical for us as a downstream distro to communicate our release schedule
168 [16:40] <jcastro> we sync our schedule with GNOME
169 [16:40] <jcastro> so, we're kind of lined up
170 [16:41] <jcastro> some upstreams want to know when they should release to have their software in ubuntu
171 [16:41] <jcastro> so they can make a release, or decided to skip an ubuntu release, etc.
172 [16:41] <jcastro> so, when we're at UDS
173 [16:41] <jcastro> and we're talking to upstreams we make decisions on things dependent on release cycles
174 [16:42] <jcastro> so it might be "well, that feature won't be ready in time, so we'll go with version 1.x instead" or something
175 [16:42] <dholbach> that sounds very reasonable
176 [16:42] <dholbach> whatever we can't fix during the release time, we have to fix after the release... jcastro: do you know how that works?
177 [16:42] <jcastro> yes
178 [16:43] <jcastro> it's a big source of confusion
179 [16:43] <jcastro> so let's talk about Stable Release Updates
180 [16:43] <dholbach> I think it all started with something like this: http://blog.somekool.net/images/img_4232.jpg
181 [16:43] <jcastro> https://wiki.ubuntu.com/StableReleaseUpdates
182 [16:43] <jcastro> doh!
183 [16:43] <dholbach> shall I tell the story quickly before you move on?
184 [16:43] <jcastro> yes!
185 [16:43] <dholbach> ok
186 [16:44] <dholbach> so in the very early days of Ubuntu we uploaded a couple of fixes (they all were upstream already) to the xserver to a stable release
187 [16:44] <dholbach> that means that users who had installed the release (and not the development version) got those fixes
188 [16:44] <dholbach> the developer had tested them all, they were upstream fixes and everything seemed good
189 [16:45] <dholbach> the problem was that a certain percentage of our users (x% of some millions) suddenly had a broken Xserver
190 [16:45] <dholbach> which resulted in people like my dad having to wrestle with: http://blog.somekool.net/images/img_4232.jpg
191 [16:45] <dholbach> so we realised that we need to be more conservative with fixes like that
192 [16:46] <dholbach> that's where SRUs originate from
193 [16:46] <dholbach> jcastro: so how does this all work now?
194 [16:46] <jcastro> https://wiki.ubuntu.com/StableReleaseUpdates
195 [16:46] <jcastro> we have these
196 [16:47] <jcastro> don't worry, it only looks scary!
197 [16:47] <jcastro> the key point to remember here when talking to upstreams
198 [16:47] <jcastro> is that really bad bugs should be communicated to distros
199 [16:47] <jcastro> you see this all the time on like planet gnome
200 [16:48] <jcastro> "wow, we found a bad bug in gstreamer, distros should ship this fix: $url" or something
201 [16:48] <jcastro> as you hang out and talk with upstreams
202 [16:48] <jcastro> at some point they will have a critical bug that will need to be fixed
203 [16:48] <jcastro> so usually you can take ownership of that, talk to the ubuntu maintainer, and communicate the needs that way
204 [16:48] <jcastro> sometimes upstreams fix small bugs
205 [16:48] <kfogel> dhasenan: thanks
206 [16:49] <jcastro> and of course those are good
207 [16:49] <kfogel> whhooops
208 [16:49] <kfogel> dholbach: thanks
209 [16:49] * kfogel watches out for nick completion
210 [16:49] <jcastro> but it can be frustrating to an upstream when the fix doesn't get into an SRU
211 [16:49] <jcastro> it's just one of those things where the fix needs to be weighed with the risk
212 [16:50] <dholbach> https://wiki.ubuntu.com/StableReleaseUpdates is pretty good at explaining what kind of fixes we want and which make sense
213 [16:50] <jcastro> In general I think we do a good job here, but if an upstream still wants new crack in the distro, we have things like PPAs and backports
214 [16:50] <jcastro> that's also an area where you can contribute
215 [16:50] <jcastro> many ubuntu contributors set up and run PPAs as a service to upstreams for apps people love
216 [16:50] <dholbach> http://people.canonical.com/~dholbach/cheatsheet.pdf should give you an overview over what to do in which case
217 [16:51] <jcastro> that is highly encouraged, and a good way to learn packaging if you want to start the road to becoming an ubuntu developer
218 [16:51] <jcastro> we only have 5 minutes left, so let's talk about debian for a bit
219 [16:52] <dholbach> one of our most important upstreams is Debian
220 [16:52] <dholbach> and we inherit a lot of packages and lots of great work from Debian developers
221 [16:52] <dholbach> usually it works like this: if a package is unmodified in Ubuntu and we're before DebianImportFreeze (Check the release schedule again), it gets "synced" automatically
222 [16:53] <dholbach> which means that the package in Ubuntu will get overwritten with the source that is in Debian right now (and rebuilt)
223 === zen is now known as Guest90818
224 [16:53] <dholbach> if it's modified in Ubuntu, we need to figure out if we can drop out changes (then we'll ask for a sync)
225 [16:53] <dholbach> and if we can't drop our changes, we need to merge the changes semi-manually
226 [16:54] <dholbach> https://wiki.ubuntu.com/UbuntuDevelopment/Merging explains how the merging works and which tools we use
227 [16:54] <dholbach> common scenarios for differences between Ubuntu and Debian are:
228 [16:54] <dholbach> - we're in different parts of our release cycle and we decide to ship a newer version
229 [16:55] <dholbach> - new improvements we want to try out in Ubuntu (launchpad integration of gnome apps, new indicators, new notifications, etc.)
230 [16:55] <dholbach> and lots of other small things because of different things we support and not support
231 [16:55] <dholbach> but generally the idea is: the more we can have in sync with Debian, the better
232 [16:55] <dholbach> it means less merging, less maintenance hassle and a common code base to look at
233 [16:56] <dholbach> so whatever is suitable in terms of patches to forward to Debian, we do forward
234 [16:56] <dholbach> https://wiki.ubuntu.com/Debian/Bugs has more details on that
235 [16:56] <jcastro> whew
236 [16:56] <jcastro> that was alot of info!
237 [16:56] <jcastro> and only one question, so either we were really great or really bad!
238 [16:57] <jcastro> \o/
239 [16:57] <dholbach> that's the great thing about working on a certain piece of software is you get to know: lots of users (and make them happy with fixes), the upstream maintainers, lots of great Ubuntu developers that work with you and maintainers of others distros too
240 [16:57] <dholbach> you not only make the world a better place by working on making software better for everybody, but you also get to know a lot of great people AND learn something new :)
241 [16:58] <dholbach> one page you should definitely bookmark is: https://wiki.ubuntu.com/Upstream/Adopt :)
242 [16:58] <dholbach> any final questions?
243 [16:58] <dholbach> jcastro: any final words? :)
244 [16:58] <jcastro> nope, thanks for coming everyone!
245 [16:59] <dholbach> thanks everybody - you ROCK!
MeetingLogs/devweek1001/AdoptUpstream (last edited 2010-01-29 10:10:02 by i59F765F3)