IntroductionUbuntuDev

Dev Week -- Introduction to Ubuntu development -- dholbach -- Tue, Jan 31st, 2012

   1 [15:00] <dholbach> WELCOME EVERYBODY TO UBUNTU DEVELOPER WEEK!
   2 [15:01] <dholbach> First of all a few introductory and organisational bits before we get started with out first session.
   3 [15:01] <Sherlock_> 212
   4 [15:01] <dholbach> Here's how this whole event is going to work:
   5 [15:01] <dholbach> in #ubuntu-classroom the presenter will hold the session, explain and demo everything
   6 [15:01] <dholbach> in #ubuntu-classroom-chat we all can chat and ask questions
   7 [15:02] <dholbach> so if you haven't joined #ubuntu-classroom-chat yet, please do so
   8 [15:02] <dholbach> also if you ask questions, please make sure you prefix them with QUESTION:
   9 [15:03] <dholbach> QUESTION: What music do you like?
  10 [15:03] <dholbach> etc. :)
  11 [15:04] <dholbach> also if you have any problems following the session, you can ask in #ubuntu-classroom-chat where we have lots of experience and helpful people who will sort you out :)
  12 [15:04] <dholbach> Alright, here we go with Session 1!
  13 [15:05] <dholbach> My name is Daniel Holbach, I have been involved in Ubuntu since the second release and always loved the community, with a particular focus on development things.
  14 [15:05] <dholbach> In the next hour I'll give you a first introduction to Ubuntu development
  15 [15:05] <dholbach> and in the following session, also an hour, I'll help you set up a development environment on your machine
  16 [15:05] <dholbach> if you have any questions, please ask in #ubuntu-classroom-chat
  17 [15:06] <dholbach> also tell me if something was unclear or if I'm going too fast :)
  18 [15:06] <dholbach> something I forgot earlier which is asked very often: yes, we will post the logs on https://wiki.ubuntu.com/UbuntuDeveloperWeek once the sessions are over, so if you can't make it to a session, you can still read it later on :)
  19 [15:07] <dholbach> <bjhaid> dholbach: would training here be relevant for linux-mint?? since its built on ubuntu?
  20 [15:07] <dholbach> bjhaid, yes, the vast majority of the content of the sessions will be applicable to all Debian and Ubuntu derivatives
  21 [15:07] <dholbach> some of the infrastructure bits will likely be different
  22 [15:08] <dholbach> Let's get cracking. :-)
  23 [15:08] <dholbach> Ubuntu is made up of thousands of different components, written in many different programming languages.
  24 [15:08] <dholbach> very component - be it a software library, a tool or a graphical application - is available as a source package.
  25 [15:08] <dholbach> Source packages in most cases consist of two parts: the actual source code and metadata. Metadata includes the dependencies of the package, copyright and licensing information, and instructions on how to build the package.
  26 [15:08] <dholbach> Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.
  27 [15:09] <dholbach> This means we never deal with binary or compiled code, this is "open source" software after all. :)
  28 [15:09] <dholbach> Every time a new version of an application is released, or when someone makes a change to the source code that goes into Ubuntu, the source package must be uploaded to Launchpad’s build machines to be compiled.
  29 [15:10] <dholbach> The resulting binary packages then are distributed to the archive and its mirrors in different countries. The URLs in /etc/apt/sources.list point to an archive or mirror.
  30 [15:10] <dholbach> Every day CD images are built for a selection of different Ubuntu flavours. Ubuntu Desktop, Ubuntu Server, Kubuntu and others specify a list of required packages that get on the CD. These CD images are then used for installation tests and provide the feedback for further release planning.
  31 [15:10] <dholbach> <jrzabott> QUESTION: how important/useful is Python for Ubuntu development? It is a language that I decided to dedicate all my skills and learning.
  32 [15:11] <dholbach> jrzabott, It is important and is used a lot. Still there are many other languages used, C, C++, Perl and others for example.
  33 [15:11] <dholbach> Any more questions up until here?
  34 [15:12] <dholbach> Alright, let's move on then - I'll talk a bit about release cycle now.
  35 [15:12] <dholbach> Ubuntu’s development is very much dependent on the current stage of the release cycle.
  36 [15:12] <dholbach> We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.
  37 [15:12] <dholbach> With every freeze date that is reached developers are expected to make fewer, less intrusive changes.
  38 [15:12] <dholbach> If you have a look at https://wiki.ubuntu.com/PrecisePangolin/ReleaseSchedule you can see the release schedule for the 12.04 (precise) cycle.
  39 [15:13] <dholbach> Feature Freeze is the first big freeze date after the first half of the cycle has passed.
  40 [15:13] <dholbach> We are still roughly 2 weeks away from it.
  41 [15:13] <dholbach> At this stage features must be largely implemented. The rest of the cycle is supposed to be focused on fixing bugs.
  42 [15:13] <dholbach> After that the user interface, then the documentation, the kernel, etc. are frozen, then the beta release is put out which receives a lot of testing.
  43 [15:13] <dholbach> From the beta release onwards, only critical bugs get fixed and a release candidate release is made and if it does not contain any serious problems, it becomes the final release.
  44 [15:14] <ClassBot> i_can_bot_maybe_ asked: when I install an application from the software center are the sources downloaded and then built or are they built and then downloaded?
  45 [15:14] <dholbach> i_can_bot_maybe_, no, if you install a package in software-center, it's only the .deb (binary) packages installed
  46 [15:14] <dholbach> the source still is available from Launchpad and mirrors as well
  47 [15:15] <dholbach> I'll cover in the second session how to get the source for packages
  48 [15:15] <ClassBot> jrzabott asked: can we abandon C, with the Cpython use?
  49 [15:15] <dholbach> jrzabott, I doubt it - I doubt the kernel developers (among others) would be happy to switch. ;-)
  50 [15:15] <ClassBot> kbmonkey asked: For Debian-based distros, who don't rely on Launchpad, the source goes into the deb mirrors instead?
  51 [15:16] <dholbach> kbmonkey, exactly - Debian for example uses ftp.<countrycode>.debian.org mirrors
  52 [15:16] <ClassBot> kyoushuu asked: ​ Are translations affected by the Feature Freeze?
  53 [15:16] <dholbach> kyoushuu, no - strings for translations are subject of release freezes a bit later
  54 [15:17] <dholbach> luckily we'll have a session about internationalisation (i18n) later this week! :-)
  55 [15:17] <dholbach> ... with more juicy details
  56 [15:17] <ClassBot> se4n_ asked: Why store binaries in .debs for all platforms when the source could be put in a .deb and compiled on the end users machine?
  57 [15:18] <dholbach> se4n_, the problem is that you would have to 1) install all the source headers and development tools on all the machines in the world and 2) with some packaging taking several hours to build it's just not practicable
  58 [15:18] <ClassBot> vikram360 asked: I was reading online that since ubuntu is supported largely by a corporation, developers are pressured into meeting deadlines i.e the dates are adhered to extremely strongly, and this sometimes leads to a somewhat shaky codebase, could someone please comment on this
  59 [15:19] <dholbach> vikram360, that's not quite accurate :-)
  60 [15:19] <dholbach> vikram360, as I mentioned before, we have freeze dates and they are agreed on a long time in advance already
  61 [15:19] <dholbach> so if you have a look at the Ubuntu wiki you will find preliminary freeze/release dates for the next few releases already
  62 [15:20] <dholbach> also it doesn't make a difference if you work for Canonical or not, these freeze dates are what counts
  63 [15:20] <dholbach> if you have good enough reasons to have to get an exception the release team might give you one
  64 [15:20] <dholbach> also there's a release team meeting every single week
  65 [15:20] <dholbach> so these things should not come "out of the blue" to you
  66 [15:21] <ClassBot> ashickur-noor asked: i18n, is this is a new method? I know 10n
  67 [15:21] <dholbach> ashickur-noor, i18n is just short for internationalisation
  68 [15:21] <ClassBot> yak12 asked: ​ Why does ubuntu have such a short release schedule?
  69 [15:21] <dholbach> yak12, personally I feel Ubuntu has proven in the last few years (with just one slipped release date), that 6 months work out quite well
  70 [15:22] <dholbach> it's a good compromise between allowing time for new features, but also making sure that there's focus on getting a product out there
  71 [15:22] <dholbach> alright, let's crack on :)
  72 [15:22] <dholbach> Thousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality.
  73 [15:22] <dholbach> At the beginning of each release cycle we have the Ubuntu Developer Summit where developers and contributors come together to plan the features of the next releases.
  74 [15:22] <dholbach> Every feature is discussed by its stakeholders and a specification is written that contains detailed information about its assumptions, implementation, the necessary changes in other places, how to test it and so on.
  75 [15:23] <dholbach> This is all done in an open and transparent fashion, so even if you can not attend the event in person, you can participate remotely and listen to a streamcast, chat with attendants and subscribe to changes of specifications, so you are always up to date.
  76 [15:23] <dholbach> Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects.
  77 [15:23] <dholbach> That is why contributors to Ubuntu constantly stay in touch.
  78 [15:23] <dholbach> Most teams or projects use dedicated mailing lists to avoid too much unrelated noise.
  79 [15:23] <dholbach> For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.
  80 [15:24] <ClassBot> UbuntuFlo asked: ​ is there any chance to see ubuntu becoming a rolling-release-distribution – or at least a dedicated derivat
  81 [15:25] <dholbach> UbuntuFlo, I have no idea how that's supposed to work - the 1 million dollar question is: how do you both do great feature development and give it good testing - also: you'll have to shove out terrabytes of updates to millions of users
  82 [15:25] <dholbach> it sounds like an interesting theoretical experiment, but maybe I haven't read a practical proposal yet :)
  83 [15:25] <ClassBot> kyoushuu asked: ​ How can we participate remotely to the Ubuntu Dev Summit?
  84 [15:26] <dholbach> kyoushuu, http://uds.ubuntu.com/participate/remote/ (there's IRC rooms, voice feeds, mail updates, and the like)
  85 [15:26] <dholbach> Another important tool regarding communication is bug reports. Whenever a defect is found in a package or piece of infrastructure, a bug report is filed in Launchpad.
  86 [15:27] <dholbach> All information is collected in that report and its importance, status and assignee updated when necessary. This makes it an effective tool to stay on top of bugs in a package or project and organise the workload.
  87 [15:27] <dholbach> And we will have lots of sessions this week about how to deal with bug reports and how to fix them. It's going to be awesome!
  88 [15:27] <dholbach> Most of the software available through Ubuntu is not written by Ubuntu developers themselves. Most of it is written by developers of other Open Source projects and then integrated into Ubuntu.
  89 [15:28] <dholbach> These projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.
  90 [15:28] <dholbach> The relationship to Upstreams is critically important to Ubuntu. It is not just code that Ubuntu gets from Upstreams, but it is also that Upstreams get users, bug reports and patches from Ubuntu (and other distributions).
  91 [15:28] <dholbach> The most important Upstream for Ubuntu is Debian. Debian is the distribution that Ubuntu is based on and many of the design decisions regarding the packaging infrastructure are made there.
  92 [15:28] <dholbach> Traditionally, Debian has always had dedicated maintainers for every single package or dedicated maintenance teams. In Ubuntu there are teams that have an interest in a subset of packages too, and naturally every developer has a special area of expertise, but participation (and upload rights) generally is open to everyone who demonstrates ability and willingness.
  93 [15:29] <dholbach> The great thing is: we will also have sessions about how to work with and work in Debian this week. So you'll be covered there as well! :)
  94 [15:30] <ClassBot> ashickur-noor asked: Is there any chance that Ubuntu become Commercial like RHL?
  95 [15:30] <dholbach> ashickur-noor, There is commercial support for Ubuntu, yes. But if ask if Ubuntu will one day cost money so you can use it, no.
  96 [15:30] <ClassBot> pawel_st asked: ​ Since you have to support ~3 past releases (and not only the current one), how do you keep track of what needs to be updated & where (and who is doing this?). This seems like a HUGE task. I suppose you have to track CVEs, debian bug database etc..
  97 [15:31] <dholbach> without taking too much content away from other sessions: the great thing about launchpad is: it can track bugs in multiple places
  98 [15:31] <dholbach> so let's say we just find out that an application has been broken in a seldom used use cases since the last 3 releases and that it's also broken in Debian and upstream
  99 [15:32] <dholbach> Launchpad can track cases like this easily and also will give us updates about bug reports in Debian (or other distros) and upstream :)
 100 [15:32] <dholbach> but I agree with you: it's quite a bit of work to maintain stable releases
 101 [15:32] <ClassBot> _rahmat_ asked: i'm new in ubuntu development where should I start?
 102 [15:32] <dholbach> _rahmat_, I hope that by the end of Ubuntu Developer Week you should have a good idea of what you can do, how it works and how you can help out
 103 [15:32] <dholbach> I'll also share some more links by the end of my session :)
 104 [15:33] <ClassBot> tejaswidp asked: how different is debian sid from ubuntu?
 105 [15:33] <dholbach> a great question :)
 106 [15:34] <dholbach> if you go back to the release cycle overview I gave earlier
 107 [15:34] <dholbach> up until Debian Import Freeze we automatically sync code from unstable (given that we are working on an LTS release now, we sync from testing instead)
 108 [15:34] <dholbach> this is done as a measure to let the code solidify
 109 [15:34] <dholbach> also in other parts you will notice that Ubuntu is "ahead of Debian" in terms of newer versions
 110 [15:35] <dholbach> it always depends on the development focuses of the two, when they plan to release, what the release goals are, etc
 111 [15:35] <dholbach> so I can't give you concrete numbers, but I feel we're doing a much much better job at staying in sync
 112 [15:35] <ClassBot> Aj2012 asked: For upstream project, how bug reports are reported to original authors. Who fixes them?
 113 [15:36] <dholbach> Aj2012, bug reports are forwarded to upstream projects manually, after we collected all the necessary information
 114 [15:36] <dholbach> sometimes you will find that Ubuntu contributors forward patches to upstream, sometimes you will see that they are fixed upstream first
 115 [15:36] <ClassBot> ashickur-noor asked: I want to be a developer, from where I can start?
 116 [15:36] <dholbach> ashickur-noor, you're exactly right here - more links later
 117 [15:36] <ClassBot> raywang asked: could we have a pdf document like to track all of these, so that we can review and learn from it.
 118 [15:36] <dholbach> raywang, yes, I'll give out some links later on
 119 [15:37] <ClassBot> jincreator asked: If Debian is one upstream of Ubuntu, can some packages in Ubuntu be upstream of Debian?
 120 [15:38] <dholbach> jincreator, yes, this has happened a couple of times already - something originated in Ubuntu, then was forwarded to Debian and got maintained there or Ubuntu stayed upstream
 121 [15:38] <ClassBot> vikram360 asked: why did ubuntu choose to go with launchpad and bazaar rather than something like bugzilla and git/mercurial?
 122 [15:38] <dholbach> vikram360, Launchpad gives us many many benefits (like the automatic bug tracking in other bugzillas), a close integration with our build services, etc
 123 [15:38] <dholbach> I hope by the end of my 2 sessions it will be a bit clearer what our infrastructure can do for you
 124 [15:39] <ClassBot> burli_ asked: ​ what is the preferred language/toolkit, especially if I want to develop lenses or apps for Ubuntu TV/Tablet/Phone? I guess, Python is not the best choice for ARM devices?
 125 [15:39] <dholbach> burli_, I would suggest you wait until the session about Unity Lenses later on to get a specific answer for the question :)
 126 [15:39] <dholbach> but yes, python is absolutely acceptable, even on ARM devices
 127 [15:40] <ClassBot> jincreator asked: Is it possible to get new one from upstream to even "released" Ubuntu? I only see new version of Firefox is landing... If then, what kind of process is needed?
 128 [15:40] <dholbach> jincreator, yes, it's possible - there's either the "stable release update" process or the "backport" process
 129 [15:40] <dholbach> you should find explanation for both on the Ubuntu wiki
 130 [15:40] <ClassBot> Valentin asked: ​ Will something like this be realistic someday? http://nrutledge.blogspot.com/p/ubuntu-laptop-concept.html
 131 [15:41] <dholbach> I'm sorry - I don't have the time to read the blog post now - I still have a bunch of things to go through
 132 [15:41] <dholbach> maybe I can suggest #ubuntu-design to discuss the question in the meantime
 133 [15:41] <ClassBot> Aj2012 asked: I have small app. I want to learn packaging to make it available via launchpad. Could you please share beginners guide to learn packaging
 134 [15:41] <dholbach> Aj2012, yes, I'll share some links about this topic after the session :)
 135 [15:41] <ClassBot> Niagr asked: Why can't ubuntu receive feature updates?
 136 [15:42] <dholbach> Niagr, I think I alluded to this earlier already: you have to strike a balance between stability and testing vs. new features - supporting stable releases is hard work when it comes to testing, code review and other things -- it's very expensive to hack on multiple releases at the same time
 137 [15:42] <dholbach> alright
 138 [15:43] <dholbach> let's talk a bit about how we would go about getting changes into Ubuntu
 139 [15:43] <dholbach> Getting a change into Ubuntu as a new contributor is not as daunting as it seems and can be a very rewarding experience. It is not only about learning something new and exciting, but also about sharing the solution and solving a problem for millions of users out there.
 140 [15:43] <dholbach> Open Source Development happens in a distributed world with different goals and different areas of focus. For example there might be the case that a particular Upstream might be interested in working on a new big feature while Ubuntu, because of the tight release schedule, might be interested in shipping a solid version with just an additional bug fix.
 141 [15:43] <dholbach> That is why we make use of “Distributed Development”, where code is being worked on in various branches that are merged with each other after code reviews and sufficient discussion.
 142 [15:44] <dholbach> That's why for example Ubuntu might decide to ship version 1.0 of a particular package, while upstream is working on 2.0 - and just to fix a couple of bugs ship additional patches from the 2.0 works.
 143 [15:44] <dholbach> you can see how this quickly gets complicated with thousands of packages, thousands of people interacting and each project maintaining multiple releases
 144 [15:45] <dholbach> The goal always is: finding a solution which everybody benefits from, but that can be hard.
 145 [15:45] <dholbach> Let's say you wanted to get a fix into Ubuntu - what would you do?
 146 [15:45] <dholbach> To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it.
 147 [15:46] <dholbach> After you have tested it, you can easily propose the change to be included in the current Ubuntu development release. A developer with upload rights will review it for you and then get it integrated into Ubuntu.
 148 [15:46] <dholbach> When trying to find a solution it is usually a good idea to check with Upstream and see if the problem (or a possible solution) is known already and, if not, do your best to make the solution a concerted effort.
 149 [15:46] <dholbach> Additional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.
 150 [15:46] <dholbach> Any questions about this in particular? :)
 151 [15:47] <ClassBot> kbmonkey asked: so if I patch a UI bug in say vlc, it would reach Ubuntu in a timely fashion. How can I propose this patch be pushed downstream before that time?
 152 [15:47] <dholbach> kbmonkey, the short answer is: get the code of the package in Ubuntu, apply the patch, push it to Launchpad, propose it for merge into Ubuntu
 153 [15:48] <dholbach> we'll have several sessions this week just about this topic, so you can easily find out the specific commands
 154 [15:48] <dholbach> but yes, in general it's totally possible to get the fix into Ubuntu before an upstream release is made
 155 [15:48] <dholbach> we have a patch pilots for every day who go and review code contributions
 156 [15:48] <ClassBot> jrzabott asked: May we have some idea of numbers about the development... For example in the release of 11.04 with unity, i've tried since alpha, and had a lot of bugs... and how many people officially act writing and correct this kind of 'modules' from ubuntu? I'm not sure if i made myself clear.
 157 [15:49] <dholbach> jrzabott, there's hundreds of people directly uploading and proposing changes for Ubuntu
 158 [15:49] <dholbach> but there's even more people who work on modules (other open source projects and their software authors)
 159 [15:50] <dholbach> so it's not quite easy to give a good number which explains everything :)
 160 [15:50] <ClassBot> s9iper1 asked: bilal is here..can you tell me the merging process when the bug got fixed and than we have to merge the branches is there any guide in ubuntu  fro that or anything?
 161 [15:50] <ClassBot> There are 10 minutes remaining in the current session.
 162 [15:51] <dholbach> s9iper1, hey Bilal - yes, I'll share the links later on - basically you want to: bzr branch <branch>; <edit and fix>; bzr commit -m <message>; bzr push <location>; bzr lp-open; <click on "propose for merging">
 163 [15:51] <dholbach> but as I said: we'll have more sessions about this
 164 [15:51] <dholbach> AND I'll share links later on :)
 165 [15:51] <ClassBot> jacopoL asked: How can I decide when it is better to propose a patch upstream and when to propose it to Ubuntu?
 166 [15:51] <dholbach> jacopoL, great question!
 167 [15:52] <dholbach> for example if you have a typo fix somewhere - as it's not something critical, you can just forward the fix to the upstream authors and trust that Ubuntu will get the fix with the next release "for free"
 168 [15:52] <dholbach> if we have a crash in an important application just a few weeks before release: get it into Ubuntu (and then forward the fix upstream)
 169 [15:53] <dholbach> severity of the problem and time in the release process are guiding factors I would say
 170 [15:53] <ClassBot> fecub_ asked: where can i do all this things, in the launchpad? a developer with upload rights where i can find them?
 171 [15:53] <dholbach> fecub_, if you use the method I described earlier (push change to Launchpad, propose for merging), developers with upload rights will be notified and the fix will end up in a review queue
 172 [15:54] <dholbach> but as I said: more links later and we'll have separate sessions about Ubuntu Distributed Development (UDD) and bug fixing, bug fixing, bug fixing :)
 173 [15:54] <ClassBot> _rahmat_ asked: is this session logged? where is the log located? thanks
 174 [15:54] <dholbach> _rahmat_, yes - the logs will be put up later on at https://wiki.ubuntu.com/UbuntuDeveloperWeek
 175 [15:54] <dholbach> but also you can find them on irclogs.ubuntu.com
 176 [15:55] <dholbach> alright, to conclude this first session, here's what it takes to get involved with Ubuntu development
 177 [15:55] <dholbach> The most important requirements for success in Ubuntu development are: having a knack for “making things work again,” not being afraid to read documentation and ask questions, being a team player and enjoying some detective work.
 178 [15:55] <ClassBot> There are 5 minutes remaining in the current session.
 179 [15:55] <dholbach> You don't need to be a C/Perl/Java/C++/Python hero. If you have some of the qualities above, you're right here. :-)
 180 [15:55] <dholbach> Good places to ask your questions are ubuntu-motu@lists.ubuntu.com and #ubuntu-motu on irc.freenode.net. You will easily find a lot of new friends and people with the same passion that you have: making the world a better place by making better Open Source software.
 181 [15:56] <ClassBot> tejaswidp asked: Why was such a drastic change made to the ui by bringing in unity? (I don't know if)
 182 [15:56] <dholbach> tejaswidp, Unity suits a lot of use-cases on a variety of devices.
 183 [15:56] <dholbach> and I don't feel this session is the best place to debate about it
 184 [15:57] <dholbach> instead I would propose we take 3 minutes break and get back fresh for session 2 :)
 185 [15:57] <dholbach> thanks everyone - see you in 3 minutes with fresh tea, water or whatever else you might prefer. :)

MeetingLogs/devweek1201/IntroductionUbuntuDev (last edited 2012-02-01 10:15:55 by dholbach)