Gillfishcan anyone tell me if I can set this up to log the classes tomorrow?04:32
JoseeAntonioRGillfish: you're all set for tomorrow :)04:34
JoseeAntonioRGillfish: logs will be available after the sessions04:35
Gillfishthanks.  I have to attend this for A college class04:35
JoseeAntonioRno worries04:35
=== Solumus is now known as SolLog
=== SolLog is now known as SolLogger
=== SolLogger is now known as Solbot
=== Solbot is now known as dustubot
=== Emil is now known as Guest11244
=== Guest11244 is now known as emil-
Anand_is it started?09:51
=== maverick is now known as Guest89749
=== me is now known as Guest75390
CoboldHi all..?12:46
genupulasdjones_, this is Official Channel , If you want help please do at #ubuntu13:01
djones_no dont need help just saying hello waiting for the discussions to start13:02
genupulasplease join at #ubuntu-classroom-chat13:03
xkernelDoes this channel will host the Ubuntu Developer week today's session?13:50
mohamedalaa98About an half hour remaining :)14:23
Geeknuxstill waiting!14:26
DoctorRonHey there friends...14:26
GladenJust to be clear, join #ubuntu-classroom-chat for the regular smalltalk :P14:26
Gillfishj/ #ubuntu-classroom-chat14:36
=== rose is now known as Guest94908
JoseeAntonioRHey! Remember all discussion/questions will take place in #ubuntu-classroom-chat, you should join by typing "/j #ubuntu-classroom-chat" without quotes if you're not already in there :)14:50
* dholbach hugs JoseeAntonioR14:51
* JoseeAntonioR hugs dholbach back14:51
quequotionwhat's coming up on the schedule?14:52
dholbachquequotion, https://wiki.ubuntu.com/UbuntuDeveloperWeek/ :)14:52
phoenix_firebrddholbach: hi14:52
* quequotion runs date -u14:53
tuxfan_6min and counting :)14:54
quequotionoh.... Unity's not for another 4 hours... too bad I have work early tomorrow morning....14:55
* mohamedalaa98 is waiting14:55
JoseeAntonioRquequotion: we'll have logs of everything14:55
tuxfan_QUESTION: Will there be logs of the session cause i toohave to work :)14:55
quequotionlogs aren't as good as partcicipation :(14:56
dholbachquequotion, the good thing is, after reading the logs you'll know more and you know who to ask all the questions you might have - today is not the only day all these people are on IRC :-)14:57
quequotiondholbach, true, but I hope i'll find as effective an opportunity to give my opinions as well.14:58
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Ubuntu Development - Instructors: dholbach
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.15:01
dholbachWe have three days of great sessions lined up to get you started with Ubuntu Development, to help you get to know some other developers and find new friends - and of course have a lot of fun.15:01
dholbachFirst a few organisational bits and pieces:15:01
dholbach - There will be logs after the sessions. We will link them from the timetable on https://wiki.ubuntu.com/UbuntuDeveloperWeek/15:01
dholbach - If you have questions, please do ask! But please ask in #ubuntu-classroom-chat - if you're not there, please join now.15:02
dholbach - When you ask questions, please prefix them with QUESTION: - ie: QUESTION: What is jcastro's favourite electronic music artist?15:02
dholbach    This way the questions will stand out and the bot can pick them up easily.15:02
dholbachAll right - with that... let's get started. :-)15:03
dholbachMy name is Daniel Holbach, I live in Berlin, Germany and have been part of the Ubuntu project since about 8 years now and always loved Ubuntu development and our community. So that's what I mostly work on.15:04
dholbachWe'll have two hours to get you introduced to Ubuntu Development and get your development environment set up.15:04
dholbachAfter that you should be able to build packages, you should know where to find things, and at least have heard the most important bits and pieces once. :-)15:05
dholbachIf I'm going too fast, too slow, don't make sense or you have questions, please ask - #ubuntu-classroom-chat is all yours. :-)15:05
ClassBotjierro asked: What is jcastro's favourite electronic music artist?15:05
dholbachIt's deadmau5 or however the mau5 is spelled and he mentions him at least once a day to me. :-)15:06
dholbachLet's see if we get more Ubuntu development related questions though next. ;-)15:06
dholbachUbuntu is made up of thousands of different components, written in many different programming languages. Every component - be it a software library, a tool or a graphical application - is available as a source package. Source packages in most cases consist of two parts: the actual source code and metadata.15:07
dholbachMetadata includes the dependencies of the package, copyright and licensing information, and instructions on how to build the package. Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.15:07
ClassBotquequotion asked: are we really going to learn how to build packages, or more specifically debian-package things? I've spent a lot of time not getting that right.15:07
dholbachquequotion, we'll see how much time we have during these two sessions, but maybe I can provide a little overview - there'll be more content about this during the week though.15:08
ClassBottuxfan_ asked: will this session have to do with quickly and python specifically?15:08
dholbachtuxfan_, no, but at 19:00 UTC there'll be a session about Ubuntu App Developer Tools led by mhall119 where this will be covered.15:09
dholbachAlso will an  Ubuntu *App* Developer Week  be scheduled soon, which will have lots of app-related content, while at Ubuntu Developer Week we'll mostly concentrate on developing Ubuntu itself15:09
ClassBotjincreator asked: Due to some problems, currently my environment is precise. Is it can be problem to follow sessions?15:09
dholbachjincreator, yes, should be fine - we'll get back to the question in about an hour :)15:10
dholbachEvery 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. The resulting binary packages then are distributed to the archive and its mirrors in different countries.15:10
dholbachThe URLs in /etc/apt/sources.list point to an archive or mirror. 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.15:10
dholbachAny more questions so far?15:11
dholbachOk, cool - let's talk a bit more about how we put together releases then.15:11
dholbachUbuntu’s development is very much dependent on the current stage of the release cycle. We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.15:12
dholbachWith every freeze date that is reached developers are expected to make fewer, less intrusive changes. Feature Freeze is the first big freeze date after the first half of the cycle has passed.15:12
dholbachAt this stage features must be largely implemented. The rest of the cycle is supposed to be focused on fixing bugs. 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.15:12
dholbachFrom 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.15:13
ClassBottuxfan_ asked: What do you mean by freeze date?15:13
dholbachIf you have a look at https://wiki.ubuntu.com/RaringRingtail/ReleaseSchedule you can see the schedule for the current 13.04 release.15:13
dholbachIf you scroll down a little bit you can see that in March we have established a few dates, which are basically deadlines for all the Ubuntu developers.15:14
dholbachSo in order to get a good release out, we agree on these dates beforehand and make sure that towards the end of a release cycle we just stabilise and fix and stop introducing crazy big changes. :-)15:15
ClassBotmaxi_ asked: freature freeze is is always the first freeze?15:15
dholbachWe have some deadlines before, like "Feature Definition Freeze" where the plans for the release need to be ironed out.15:15
dholbach(More on the planning aspect in a bit.)15:16
dholbachAnd "Debian Import Freeze" which means that we stop automatically importing changes from Debian. (More on that in a sec too.)15:16
dholbachBut yes, Feature Freeze, is the first big, notable, one.15:16
ClassBottuxfan_ asked: So freeze date is like deadlines for big changes in the OS and then from these dates and on only critical bug fixxing?15:16
dholbachtuxfan_, yes.15:16
dholbachThis also determines what kind of things Ubuntu developers, volunteers and enthusiasts work on.15:17
dholbachIf you want to get big crazy changes introduced in Ubuntu 2 days before the release, you will have a hard time arguing with the release team. :-)15:17
ClassBotmohamedalaa98 asked: what is the most important programming languages that should be learned to start development in ubuntu?15:17
dholbachAlmost all programming languages are used in Ubuntu. On the Ubuntu installation CD you will have C, C++, Perl, Python, C# (I think), Vala, Go (I think) and many others.15:18
dholbachFor low-level things like interaction with hardware, C is used a lot. Python is a favourite within the Ubuntu world, but we're not limited to it.15:19
dholbachAll right, since it came up earlier, let's talk a bit about feature planning.15:19
dholbachThousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality. 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.15:20
dholbachEvery 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.15:20
dholbachThis is all done in an open and transparent fashion, so even if you cannot 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.15:20
ClassBotxkernel asked: If I want to develop a feature or solve a bug say in Unity, how do I test it?15:21
dholbachxkernel, I'll get back to the question in more detail in a bit, but basically when you have your development environment set up, you can very easily hack on a package, do some changes, test-build it, test-install it and see if it works and then propose your change for inclusion.15:22
ClassBotjohnhamelink asked: You mentioned that if there are no major bugs in ubuntu then an RC becomes the final release, how do you make sure bugs don't regress?15:22
dholbachjohnhamelink, great question! :-)15:22
dholbachWe'll have some sessions on Automated Testing this week.15:22
dholbachTomorrow 18:00 UTC - Testing with autopilot -- balloons15:22
dholbachThursday 15:00 UTC - Automated Testing in Ubuntu -- pitti15:23
dholbachWe have lots of automated testing infrastructure in place, so that whenever changes are introduced test suites are run again and changes can only go in if the test suites pass. That's the reason why writing test cases is an excellent way to help Ubuntu in terms of Ubuntu development.15:23
=== Jim_Lahey is now known as bobweaver
dholbachComing back to Ubuntu Developer Summit and feature planning: Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects. That is why contributors to Ubuntu constantly stay in touch.15:24
dholbachMost teams or projects use dedicated mailing lists to avoid too much unrelated noise. For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.15:25
dholbachhttps://wiki.ubuntu.com/Teams might be a first step to finding out which team to contact how. I'll share some more info later on though.15:25
dholbachAnother 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.15:25
dholbachAll 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.15:26
dholbachMost 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.15:26
dholbachThese projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.15:26
dholbachThe 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).15:27
dholbach<CodeRed> QUESTION :  I'm a C/C++ developer new to ubuntu where shall I start with ?15:27
dholbachCodeRed, You're absolutely right just where you are now. In this session I'll give a quick introduction and overview over Ubuntu Development and in the second session we'll talk about "getting set up" - afterwards I'll also share a few links on where to go next. Thanks a lot for your interest! :-)15:28
ClassBotLionthinker asked: are derivatives the only downstreams for Ubuntu?15:28
dholbachLionthinker, Ubuntu is used in many many places. There are derivatives/flavours/remixes, there are device manufacturers using it with small modifications, there are operators of clouds using it. There are LOTS and LOTS. :)15:29
ClassBottuxfan_ asked: So you are saying that through Upstream 3rd party apps bugs are fixed by ubuntu team?15:29
dholbachtuxfan_, In most of the cases the software authors are in the best possible position to fix bugs, as they know the code well, but yes, it happens that bugs are fixed in Ubuntu and patches sent upstream. Depending on the project it happens a lot.15:30
ClassBoteverestt asked: What is a downstream?15:30
dholbacheverestt, Imagine software being written somewhere, then distributed by somebody else, then this is used by somebody else.15:31
dholbachAs an Ubuntu user, you could see some app as the Upstream, if it's in Debian, then Debian's upstream too, and Mint could be seen as s Downstream. :)15:32
ClassBotdutchguy asked: Are you not afraid of beginner developers introducing bugs into a project?15:33
dholbachdutchguy, We have a very good review process for new contributors, which I'll talk about in a bit.15:33
dholbachThe 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.15:33
dholbachTraditionally, 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.15:34
dholbachGetting 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.15:35
dholbachOpen 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 is interested in working on a new big feature while Ubuntu, because of the tight release schedule, is interested in shipping a solid version with just an additional bug fix.15:35
dholbachThat 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.15:36
dholbachSo let's say we have  superedit 1.0  in Ubuntu and Upstream is working on a rewrite of their font rendering for the 1.1 release.15:37
dholbachIf Ubuntu just has a couple of weeks until release left, we'll stick with 1.0 obviously. If there's a bug fix we need, we can add that on top of our 1.0 version and forward it to Upstream if they don't have it included yet.15:38
dholbachOnce the Ubuntu is released and the new release cycle started, we can take 1.1 from Upstream and we're totally in sync with Upstream again.15:38
dholbachMaybe with this example you can imagine how multiple teams can work in similar but different directions because of different timelines.15:39
dholbachThe bigger the differences between the teams become, the harder it will be to maintain the delta in code, etc. That's why collaboration and planning is so important.15:39
ClassBotjierro asked: Is development on ubuntu for tablets and phones already benefiting on ubuntu for desktop in any way? Like memory leaks, optimisations and stuff15:40
dholbachjierro, Yes, absolutely. Wherever the code base is the same you will fix the bug (be it in functionality, memory usage or anything else) in one place and everybody will benefit. That's the beauty. :-)15:40
ClassBottuxfan_ asked: But will ver1.1 be updated in the allready released ubuntu version?15:40
dholbachtuxfan_, that depends - if it's only serious bug fixes, it can go into the stable release ("stable release update" - "sru"), but if not, it can probably be backported15:41
dholbacha rewrite of the font rendering (as in the example above) won't constitute a serious bug fix though :)15:42
ClassBotmaxi_ asked: why sometimes near the release are added visual characteristics?15:42
dholbachmaxi_, sometimes teams are late and they get freeze exceptions from the release team :)15:42
ClassBotrt01 asked: does ubuntu maintain communication with upstream ? for example, if a bug is found in one particular version, does ubuntu proactively communicates upstream to find it fixed or it just waits until upstream releases a new version ?15:42
dholbachrt01, that depends - of course we can't just forward ALL the bugs to upstream, but for a lot of projects we have very healthy communication channels where bugs, patches and information are passed back and forth15:43
dholbachalso many Ubuntu developers are actively involved in other projects (wear multiple hats)15:43
ClassBotLionthinker asked: if an upstream project is not yet done when freezing and shipping commences, can and does Ubuntu update the apps when released?15:43
dholbachLionthinker, I answered the question above. "that depends - if it's only serious bug fixes, it can go into the stable release ("stable release update" - "sru"), but if not, it can probably be backported15:44
dholbach a rewrite of the font rendering (as in the example above) won't constitute a serious bug fix though :)"15:44
ClassBotNiraj_ asked: Why does it happen sometimes that some old release updates do not contain updated version of a package, whereas later releases include that update?15:44
dholbachNiraj_, see above15:44
dholbachit's because every change we introduce in a stable release might break functionality for millions of users15:44
dholbachwe have to be very very conservative with stable releases15:45
ClassBotCodeRed asked: what skills are required for ubuntu kernel development ?15:45
dholbachCodeRed, C skills will be necessary and https://wiki.ubuntu.com/KernelTeam might be a good start15:45
ClassBotskyra asked: Which is better idea to fix the bug in the upstream directly or to fix it in ubuntu and send it upstream? Or there is no difference?15:45
dholbachskyra, that depends - if we only have short time to fix the bug in Ubuntu because of the release date, we might want to get the fix into Ubuntu first and then forward it15:46
dholbachif it's a small bug, we can forward it first and then get it from upstream in the next release15:46
ClassBotLionthinker asked: if an upstream project is not yet done when freezing and shipping commences, can and does Ubuntu update the apps when released?15:46
dholbachalready answered15:46
ClassBottuxfan_ asked: So why don't you just release it after becoming stable. I mean sometimes apps in later Ubuntu releases don't arrive in former Ubuntu releases (e.g 12.10 app ver won't probably make it in 12.04)15:46
dholbachI think this kind of question is sufficiently answered now.15:47
dholbachIt's also quite relevant that maintaining several stable releases at the same time is a serious burden in terms of work.15:47
ClassBotBrace asked: If you only have a few hours here and there (say one evening a fortnight) is it still possible to help out?15:47
dholbachBrace, absolutely. We have many pupils, students, people who have a day job or who just have a couple of hours every now and then and they all contribute to Ubuntu. :-)15:48
ClassBotnep1x asked: What does "backported" mean?15:48
dholbachnep1x, there are many repositories for Ubuntu. There's the release repository obviously, there's "-security" with security fixes, there's "-updates" with critical fixes, and then theres's "-backports" with Ubuntu backports, so new versions which go into the release after it's released. (Generally safe, but use at your own risk.)15:49
ClassBottuxfan_ asked: Does conservative mean that non LTS releases are "equipped" mostly with non stable app versions? whilst LTS with stable ones?15:49
dholbachtuxfan_, no15:50
dholbachtuxfan_, it means that fixes have to be super-safe before they go into a stable release, no matter if LTS or not15:50
ClassBotThere are 10 minutes remaining in the current session.15:50
dholbachtuxfan_, we had "obvious one line fixes" which broke functionality for users or some of our users15:50
ClassBotjincreator asked: I heard about MicroReleaseException. What is required that package become on MRE?15:50
dholbachjincreator, https://wiki.ubuntu.com/StableReleaseUpdates#New_upstream_microreleases15:51
ClassBotLionthinker asked: how will a rolling release schedule change development?15:51
dholbachInteresting question,but we won't have time for this in this session. Try googling for some of the recent articles about it.15:51
dholbachI'll quickly get back to the "Introduction to Ubuntu Development". :-)15:52
dholbachSo let's say we want to fix a bug in Ubuntu.15:52
dholbachTo 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.15:52
dholbachAfter 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.15:52
dholbachSo this is the code review bit I talked about earlier. Although we have documentation, this is the primary way you will learn conventions and it's a great way to get to know other Ubuntu developers.15:53
dholbachAfter a while, when you've built a good track record of good contributions, you can apply for upload rights yourself.15:53
dholbachThis whole process is quite straight-forward.15:53
ClassBotjincreator asked: Why we need freeze for even translating?15:54
dholbachjincreator, If strings in packages change very late, translators will have to re-do their translations.15:54
ClassBotbobweaver asked: What is the best approach to talking to a Upstreamer ?  Like is there any case studies on this or are there any plains for launchpad to integrate this function more then just contact this user ? I ask for making recipes and using others branchs15:54
dholbachbobweaver, Upstream projects have IRC channels and mailing lists of their own, and usually by just a bit of googling you can find them pretty quickly.15:55
ClassBotThere are 5 minutes remaining in the current session.15:55
dholbachIt would be nice to have it all automated in Launchpad and some parts are, but it won't work for "every project" and "every bug tracker" out there.15:55
ClassBotLionthinker asked: a developer with upload rights is a MOTU, right?15:55
dholbachno, MOTUs are just one team with upload rights - more on that in a bit.15:55
dholbachWhen 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.15:56
dholbachAdditional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.15:56
dholbachThe most important thing I want to get across today is that you don't need to be an expert with programming languages or anything. 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.15:56
dholbachGood 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.15:57
ClassBotjincreator asked: Why there is freeze that affect even translators? I mean, something like (non)languagetranslationdeadline.15:58
dholbachjincreator, there are many reasons, some of them are: to give testers the opportunity to try Ubuntu in their own language before release, or size of the translations, etc.15:59
dholbachAll right, let's take 2-3 minutes of a break before we crack on with "Getting set up for Ubuntu Development" - I need to get some more tea!15:59
dholbachSee you in 2-3 mins.15:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting Started with Ubuntu Development - Instructors: dholbach
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.16:00
dholbachAll right my friends - we're back!16:03
dholbachAnd we'll kick off "Getting set up for Ubuntu Development" in just a sec.16:04
dholbachWhile making a cup of tea I just decided we'll just go through the bare minimum of setting up your development environment today and work on a small fix of our own towards the end of the session.16:05
dholbachTo get every little bit set up, I'll refer you to some really nice documentation later on.16:05
dholbachHope that meets your agreement. :-)16:05
dholbachFirst of all we'll install some packaging-related software. This includes:16:06
dholbach - Ubuntu-specific packaging utilities16:06
dholbach - Encryption software so your work can be verified as being done by you16:06
dholbach -     Additional encryption software so you can securely transfer files16:06
dholbachWe'll also configure some of the tools you'll need and I'll mention how to get all the rest set up.16:07
dholbachSo somebody asked earlier if it's OK to use an older Ubuntu release and the answer is: It is advisable to do packaging work using the current development version of Ubuntu. Doing so will allow you to test changes in the same environment where those changes will actually be applied and used.16:08
dholbachDon’t worry though, the Ubuntu development release wiki page (https://wiki.ubuntu.com/UsingDevelopmentReleases) shows a variety of ways to safely use the development release.16:08
dholbachThere are a number of tools that will make your life as an Ubuntu developer much easier. You will encounter these tools later in this guide. To install most of the tools you will need run this command:16:09
dholbach$ sudo apt-get install packaging-dev16:09
dholbach(without the $)16:09
dholbachFor users before Ubuntu 11.10 “Oneiric Ocelot”:16:09
dholbach$ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file16:10
ClassBottuxfan_ asked: Does that mean that we have to always have the latest Ubuntu installed (e.g on a VM)?16:10
dholbachif you want to develop Ubuntu itself, you will have to have a way to verify that the fix you're working on actually works - the most reliable way is to have a VM for example16:10
dholbachInstalling the packages is going to take a while, depending on your internet connection. So let's crack on.16:11
ClassBotnuragussuryoko asked: need to confirm, is "current development version of Ubuntu" == 13.04 ?16:11
dholbachnuragussuryoko, yes. 13.04 aka raring ringtail :)16:11
dholbachSo what we're installing now is going to give us:16:12
dholbach - gnupg – GNU Privacy Guard contains tools you will need to create a cryptographic key with which you will sign files you want to upload to Launchpad.16:12
dholbach - pbuilder – a tool to do reproducible builds of a package in a clean and isolated environment.16:12
dholbach - ubuntu-dev-tools (and devscripts, a direct dependency) – a collection of tools that make many packaging tasks easier.16:12
dholbach - bzr-builddeb (and bzr, a dependency) – distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each other’s work.16:12
dholbach - apt-file provides an easy way to find the binary package that contains a given file.16:12
dholbachNext we'll set up pbuilder. A very nice tool you're soon going to love. :-)16:13
dholbachpbuilder allows you to build packages locally on your machine. It serves a couple of purposes:16:14
dholbach - The build will be done in a minimal and clean environment. This helps you make sure your builds succeed in a reproducible way, but without modifying your local system16:14
dholbach - There is no need to install all necessary build dependencies locally16:14
dholbach - You can set up multiple instances for various Ubuntu and Debian releases16:14
dholbachSetting pbuilder up is very easy, simply run:16:14
dholbach$ pbuilder-dist <release> create16:14
dholbachwhere <release> is for example precise, quantal, raring or in the case of Debian maybe sid. This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.16:14
dholbachFor now you might want to just run:16:15
dholbach$ pbuilder-dist raring create16:15
ClassBottuxfan_ asked: pbuilder works kinda like a sandbox?or didn't i get it right?16:15
dholbachtuxfan_, it will use a chrooted environment (http://en.wikipedia.org/wiki/Chroot) to build the package in, this guarantees that the build works reliably and does not depend on some changes you might have done on your local file system somewhere16:16
ClassBotnep1x asked: Launchpad seems to be a very important component, but I don t understand well what is it exactly. Can you explait it breafly?16:17
dholbachnep1x, https://launchpad.net is the main infrastructure we use for Ubuntu. Translations of Ubuntu packages (and other projects) live there, bug reports live there, code branches, Ubuntu packages and many many other things.16:18
dholbachIn this session I'll skip setting up your launchpad account, but I'll give some information later on on how to get everything set up over there. (It just takes a couple of minutes.)16:19
ClassBotquequotion asked: Are the dependencies different for later releases (12.04+)?16:19
dholbachquequotion, Yes, dependencies of packages change, just as the code changes over different releases.16:19
=== nuraguss_ is now known as nuragussuryoko
ClassBotepikvision asked: Can pbuilder serve as a temporary replacement for not running development release?16:19
dholbachepikvision, You can, sort of, a little bit, just as you can use a chroot environment - but it's not very convenient (using graphics will be hard, etc.). It's more tailored towards building packages.16:20
ClassBotLionthinker asked: Whats a translation in coding speak?16:20
dholbachLionthinker, In gedit the first menu point says "File" when I try to click on it. That's "Datei" in German. :-)16:21
ClassBotquequotion asked: What about multilib packaging, and specifically amd64 with i386?16:21
dholbachquequotion, Yeah what about it? :)16:21
dholbachI guess you're referring to multiarch? I'm not sure what your question is about.16:22
dholbachIt was introduced a couple of releases back and it's working well for a lot of common cases. Not all packages have been multiarched yet. http://wiki.debian.org/Multiarch/ has some more background. Hope that helps.16:22
ClassBotretnan asked: Is it possible to do development on github and having changes updated on launchpad16:22
dholbachretnan, there's a bzr-git plugin which might help, also are there code imports in Launchpad, but I don't have much experience with those.16:23
ClassBotquequotion asked: sorry, by dependencies I meant the build environment dependencies; has anything changed since 11.10?16:23
dholbachquequotion, yes, a lot - running a more recent Ubuntu in a VM will make development easier16:23
dholbachAll right, let's crack on - I hope the installation of the packages and setting up pbuilder worked for all of you or are still in progress. :-)16:24
dholbachNext let's tell some of the development tools who we are.16:24
dholbachPlease open your ~/.bashrc in a text editor and add something like this to the bottom of it:16:25
dholbachexport DEBFULLNAME="Bob Dobbs"16:25
dholbachexport DEBEMAIL="subgenius@example.com"16:25
dholbachIf you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.16:25
dholbachNow save the file and either restart your terminal or run:16:25
dholbach$ source ~/.bashrc16:26
dholbachOk... did this work all work out for everyone? Any questions? Any catastrophes?16:26
ClassBotphoenix_firebrd asked: what is the difference in using pbuilder-dist and pbuilder16:27
dholbachphoenix_firebrd, pbuilder-dist is just a wrapper around pbuilder, which makes it very easy to use pbuilder for many different releases, for example can I simply run   pbuilder-dist precise create  to create one for the precise release16:28
dholbachwith plain pbuilder you will have to edit a configuration file, etc16:28
ClassBotnuragussuryoko asked: sorry n00b one. I'm using 12.10 and was disconnected. Shall I follow-through, or install 13.04 first?16:28
dholbachnuragussuryoko, feel free to take all the steps we discuss here on your 12.10 installation - later on you can still install 13.04 in a VM (https://wiki.ubuntu.com/UsingDevelopmentReleases will help) and repeat the steps there16:29
ClassBotphoenix_firebrd asked: what is the difference in using pbuilder-dist and pbuilder16:29
dholbachah yes, had that one already16:29
ClassBotepikvision asked: We only need to run pbuilder <release> once?16:29
dholbachepikvision, pbuilder-dist <release> create16:29
dholbachyes, just once16:29
ClassBotquequotion asked: do i need "export"?16:30
dholbachquequotion, yes16:30
ClassBotx86_ asked: I had done that pbuilder-dist step earlier. How do I check if its k and which version is used in place of raring ?16:30
dholbachx86_,    ls ~/pbuilder/16:30
ClassBotanish1307i asked: can we use pbuilder to create package in running system and then test it on VM?16:30
dholbachanish1307i, yes, you can simply copy them over16:30
ClassBotphoenix_firebrd asked: Is there a way to set the release to example raring or unreleased in bashrc16:30
dholbachphoenix_firebrd, hum - do I assume correctly that you're talking about the default for the release name in debian/changelog entries?16:31
dholbachphoenix_firebrd, I'm not 100% sure - can somebody in the audience help out? I'll try to find something real quick, otherwise we'll have to carry on16:32
dholbachphoenix_firebrd, ok, didn't find it quickly - you might want to refer to "man dch" and add one of the environment variables discussed in there to .devscripts - maybe DEBCHANGE_RELEASE_HEURISTIC?16:35
ClassBotnep1x asked: do we have to run pbuilder-dist <release> right now? which release? can i get an environment different than the release I ve alredy installed?16:35
dholbachnep1x, yes, that's possible - please run: "pbuilder-dist raring create"16:36
dholbachall right, we have around 20 minutes left, so get's get to a quick example of Ubuntu development16:36
dholbachin my tea break earlier, I deliberately broke a package :)16:36
dholbachwe are going to fix it now :)16:37
dholbachI pushed my work to lp:~dholbach/ubuntu/raring/hello/crazy-change - to get the branch, simply run:16:37
dholbach$ bzr branch lp:~dholbach/ubuntu/raring/hello/crazy-change16:37
dholbachNow simply:16:37
dholbach$ cd crazy-change16:37
dholbachIf you run "ls debian" now, you will set a list of files which are relevant to the packaging.16:38
dholbachI made a change to debian/control - if you open the file in your favourite editor, maybe you'll find out which bit I broke. :-)16:39
dholbachUntil somebody mentions it in #ubuntu-classroom-chat I'll talk a bit about what debian/control is all about.16:39
dholbachYou can see that it's divided in two sections. Section 1 is all about the Source of the ("hello" in this case) package.16:40
dholbachThe second one is about the resulting binary package, so the .deb package you would install after a build.16:40
dholbach<x86_> install-infooooooooo16:40
dholbachx86_ got it right. :-)16:40
dholbachThe broken line is this one:16:40
dholbachDepends: ${shlibs:Depends}, dpkg (>= 1.15.4) | install-infoooooooooooooo16:40
dholbachIt specifies the dependencies of the "hello" package after a build.16:41
dholbach"${shlibs:Depends}" is not a real package name, but it's a variable which is substituted with a list of library packages "hello" depends on.16:41
dholbachThis is determined automatically during the build.16:42
dholbachIf we built the package as it is right now, it'd mean that it would refer to a non-existing package.16:42
dholbachPlease go ahead and change "install-infoooooooooooooo" to "install-info". :-)16:42
dholbachAnd save the file.16:42
dholbachNext please run "dch -i".16:43
dholbachYou can see that an editor is opened with a boiler plate changelog entry which should have your name and email address filled in already. :-)16:43
dholbachIf you have a look at the last changelog entry, you can see an example of a very very bad changelog entry: http://paste.ubuntu.com/1586340/16:44
dholbachdebian/changelog is the place where all the changes we upload to Ubuntu are documented. We do this not just for ourselves, but for all the other Ubuntu developers as well.16:44
dholbachA good changelog entry includes: a reference of what was changed, where things were changed, why things were changed and if there was a discussion about the changes (like on a mailing list of a bug report), you refer to those as well16:45
dholbachthat's very important, especially if you go back and try to figure why something was changed half a year ago16:45
dholbachand you should try to have separate bullet points for separate things :-)16:46
dholbachso for something as simple as fixing the dependency, we could write something like:16:46
dholbach  * debian/control: fixed dependency: changed "install-infoooooooooooooo" to "install-info".16:47
dholbachOr something along those lines.16:47
ClassBotjincreator asked: Where can I find list of variables used in making debian file such as {shlibs:Depends} ?16:48
dholbach{shlibs:Depends} is probably the most important one, especially if you deal with shared libraries and linked code.16:50
ClassBotThere are 10 minutes remaining in the current session.16:50
dholbachthere's {misc:Depends} and some substitution variables for python and perl as well - I'll give a link to packaging information after the session. :)16:50
ClassBotjohnhamelink asked: If there was a bug report, what would the debian/changelog look like?16:50
dholbachjohnhamelink, good question :)16:51
dholbachSo let's say there was Launchpad bug report 12345678 about the problem I created earlier.16:51
dholbachIn that case you'd simply add  (LP: #12345678)  to the end of the line16:51
dholbachthis would get the bug report automatically closed as soon as the fix lands in Ubuntu16:51
dholbachSo, to build the package, please run:16:52
dholbach$ bzr bd -- -S16:52
dholbachThis will generate a source package from the branch (which is just a directory with the source code history in it).16:52
dholbachThe source package is a format we use to upload changes to Launchpad and build the binary packages from.16:53
dholbachIf you now run "ls ../hello_*", you will see these files listed:16:53
dholbach../hello_2.8-2ubuntu2.debian.tar.gz  ../hello_2.8-2ubuntu2.dsc  ../hello_2.8-2ubuntu2_source.changes  ../hello_2.8.orig.tar.gz16:54
dholbachThey make up the source package.16:54
dholbachIf you now run this command: "pbuilder-dist raring build ../hello_2.8-2ubuntu2.dsc" it will build the binary (.deb package) from the source package.16:54
ClassBotEagleScreen asked: as the same way you use (LP: #12345678), is there a expecific syntax to reference Debian bug reports?16:55
dholbachYes, it's "Closes: #123456"16:55
ClassBotmaxi_ asked: debsign: gpg error occurred!  Aborting.... debuild: fatal error at line 1278: running debsign failed bzr: ERROR: The build failed.16:55
ClassBotThere are 5 minutes remaining in the current session.16:55
dholbachThat's probably because the mail address in your changelog entry does not match any on your GPG key. Feel free to ignore it for now and just run:  bzr bd -- -S -us -uc16:56
dholbach(which will not sign the package)16:56
dholbachThe build will take a while, but afterwards you can run "ls ~/pbuilder/raring_result/"16:56
dholbachand you will see some shiny .deb packages - probably the first ones you ever built :-D16:57
dholbachand hopefully not the last!16:57
dholbachAll right, we have 2 minutes left until the next session, so I want to get some final words out before the next session starts.16:57
dholbachWe have documentation, and it's available at  http://developer.ubuntu.com/packaging/16:57
dholbachcurrently it's available in English and Spanish16:58
dholbachif you want to help get it translated to other languages, you'd have my eternal gratitude - you can do it here: https://translations.launchpad.net/ubuntu-packaging-guide/16:58
dholbachAlso: you CAN help out with Ubuntu development. You're not alone. You can ask all your questions in #ubuntu-motu on irc.freenode.net - we need people like you and if you're only a bit of a social animal, I promise you'll find lots of friends here.16:59
dholbachPlease bookmark http://developer.ubuntu.com/packaging/16:59
dholbachAnd enjoy the rest of the week - you all are awesome. Thanks for the session and I hope to see more of you in the next time!16:59
coolbhavithanks dholbach :)17:00
dholbachNext up is coolbhavi with "Introduction to patch systems".17:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Patch Systems - Instructors: coolbhavi
coolbhaviyup :-)17:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.17:00
coolbhaviHi All and welcome to my session on introduction to patch systems and why are patch systems used in general17:00
coolbhaviHere is a short intro on me: I am Bhavani Shankar a Ubuntu developer, currently serving on the Application Review Board and LoCo council in Ubuntu17:01
coolbhaviSo lets get started:17:01
coolbhaviAs a prerequisite, please ensure that you have installed packaging-dev package (so that it should pull in quilt) which is the most popular version of patch system used right now17:02
coolbhavi== What is a patch? ===17:02
coolbhaviPatch in its simplest form means a code change introduced in the program to fix an existing bug in general17:02
coolbhavi== Why to use patch systems at the first place? ==17:03
coolbhaviimply put we use patch systems to generate and apply code changes without having to actually change the original code everytime making it look complicated to track changes/making the code look clumsy17:03
coolbhavi== Ok, now we know the general idea of what a patch means but what are the different systems present in ubuntu/debian? ==17:03
coolbhaviThere are/were different patch systems present in ubuntu/debian namely:17:04
coolbhavidpatch which had patches defined in a path called debian/patches/00list with extension .dpatch which is deprecated now17:04
coolbhavicdbs simple patchsys which allowed to generate a diff which was stored in debian/patches path with a .diff extension and is deprecated now17:05
coolbhaviThe most current and widely used system is the quilt patch system which allows you to add a patch in debian/patches/series path and apply it on the source code17:05
coolbhaviAny questions?17:05
coolbhaviSo lets move on:17:06
coolbhavi== What is quilt patch system in general? ==17:07
coolbhaviWith quilt, all work occurs within a single directory tree. Since version 0.30, commands can be invoked from anywhere within the source tree (the directory tree is scanned upwards until either the .pc or the patches directory is found).17:07
ClassBotNiraj_ asked: Why does ubuntu use different patch system than linux, which uses git diff?17:08
coolbhaviNiraj_, diff is also a generic patch system which is used in almost all linux systems. The newer patch systems are used in ubuntu and debian primarily to their ease of usage which I am going to show now17:10
ClassBotkix_ asked: using diff is a problem in general?17:11
coolbhaviKix_, not so but while doing diffing on a large chunk of code you need to be pretty sure of what changes you are introducing17:12
coolbhaviso moving on17:12
coolbhaviQuilt manages a stack of patches. Patches are applied incrementally on top of the base tree plus all preceding patches. They can be pushed on top of the stack (quilt push), and popped off the stack (quilt pop). Commands are available for querying the contents of the series file17:13
coolbhaviThe order of patches to apply is kept in debian/patches/series as said earlier.17:13
coolbhavimore information is available in /usr/share/doc/quilt/quilt.pdf which is available when quilt is installed.17:14
coolbhavi== How does quilt work? ==17:14
coolbhaviBefore working with Quilt you need to tell it where to find the patches. Add this to your ~/.bashrc: export QUILT_PATCHES=debian/patches17:15
ClassBotphoenix_firebrd asked: can the series file be edited manually ?17:15
coolbhaviphoenix_firebrd, yes if you comment out any patch in series file for example, the patch will not be applied when you build the package17:17
coolbhaviAnd source the file to apply the new export:17:17
coolbhavi$ . ~/.bashrc17:17
coolbhaviBy default all patches are applied already to UDD checkouts or downloaded packages. You can check this with:17:18
coolbhavi$ quilt applied17:18
=== P is now known as Guest32652
coolbhaviExample: I have downloaded the package mobile-broadband-provider-info package using pull-lp-source from ubuntu-dev-tools and when I check I get17:18
coolbhavibhavani@bhavani-spagetti-monster:~/mobile/mobile-broadband-provider-info-20130121$ quilt applied17:18
coolbhaviIf you wanted to remove the patch you would run pop:17:19
coolbhavi$ quilt pop17:19
coolbhaviin my example:17:19
coolbhavi$ quilt pop17:19
coolbhaviRemoving patch update_3_UK_secondary_dns.patch17:19
coolbhaviRestoring serviceproviders.xml17:19
coolbhaviNo patches applied17:19
coolbhaviAnd to apply a patch you use push:17:20
coolbhavi$ quilt push17:20
coolbhaviApplying patch update_3_UK_secondary_dns.patch17:20
coolbhavipatching file serviceproviders.xml17:20
coolbhaviNow at patch update_3_UK_secondary_dns.patch17:20
coolbhaviAnd to add a patch one would typically use:17:21
coolbhaviquilt new17:21
coolbhaviquilt new serviceproviders.patch17:21
coolbhaviPatch serviceproviders.patch is now on top17:21
coolbhaviquilt add serviceproviders.xml17:21
coolbhaviFile serviceproviders.xml added to patch serviceproviders.patch17:21
coolbhaviAnd then do required changes (for example work on a bug) and then use quilt refresh on the patch.17:22
coolbhaviNote that quilt add step is important otherwise you might not end up adding the patch in quilt17:22
coolbhavi== Seems complex. Is there any way that simplifies this process in ubuntu? ==17:23
ClassBotphoenix_firebrd asked: quilt add <file> is like quilt edit <file>17:24
coolbhaviphoenix_firebrd, yes basically you add the file first to the stack and edit it then to make up your desired patch17:25
coolbhaviso moving on:17:26
coolbhaviYes there is a way to simplify the process. You can use the edit-patch command in ubuntu to effectively do the same17:27
coolbhavi$ edit-patch 99-new-patch17:27
coolbhaviThis will copy the packaging to a temporary directory. You can now edit files with a text editor or apply patches from17:27
coolbhaviupstream, for example:17:27
coolbhavi$ patch -p1 < ../bugfix.patch17:28
coolbhaviAfter editing the file type exit or press control-d to quit the temporary shell. The new patch will have been17:28
coolbhaviadded into debian/patches.17:28
ClassBotEagleScreen asked: Should quilt only be used to edit upstream sources? or should we use it also for doing changes in the debian packaging specfic files inside /debian directory?17:29
coolbhaviEagleScreen, normally changes inside the debian directory will be treated as native to the package so not required and patch systems are always used for integrating upstream changes17:31
ClassBotjincreator asked: Unlike git, should "quilt add <patch>" must before change file?17:31
coolbhavijincreator, yes as I said earlier its a nice practice to do so as you wont have a chance to miss adding up the patch when you are working with multiple patches especially17:33
coolbhavimoving on again:17:34
coolbhaviAs an example of edit-patch on my system:17:34
coolbhavibhavani@bhavani-spagetti-monster:~/mobile/mobile-broadband-provider-info-20130121$ edit-patch bhavi.patch17:35
coolbhaviNormalizing patch path to bhavi.patch17:35
coolbhaviNormalizing patch name to bhavi.patch17:35
coolbhaviTop patch: update_3_UK_secondary_dns.patch17:35
coolbhaviFile series fully applied, ends at patch update_3_UK_secondary_dns.patch17:35
coolbhaviPatch bhavi.patch is now on top17:35
coolbhaviAs you can see it gives a temperory shell where you can make any changes required to the source and when you exit a new patch will be created by the name bhavi.patch17:35
coolbhavi== Making a package use quilt ==17:36
coolbhaviModern packages use Quilt by default, it is built into the packaging format. Check in debian/source/format to ensure it says 3.0 (quilt).17:36
coolbhaviOlder packages using source format 1.0 will need to explicitly use Quilt, usually by including a makefile into debian/rules. (ex: passing include /usr/share/quilt/quilt.make)17:37
coolbhavi== Few Notes to take care while generating a patch ==17:38
coolbhaviDo not change a package’s patch system without discussing it with the Debian maintainer or relevant Ubuntu team. If there is no existing patch system then feel free to add Quilt.17:39
coolbhaviDo not make any changes to the package such that it can break something. When in doubt, please consult the upstream maintainer17:39
coolbhaviIts always beneficial to add patch tags or headers so that the main intention of the patch can easily be understood. (For patch tagging guidelines used in ubuntu please refer: http://dep.debian.net/deps/dep3/)17:41
coolbhavi== Further references ==17:41
coolbhaviThe ubuntu packaging guide (developer.ubuntu.com/packaging) is always a great start towards learning the concepts of ubuntu development.17:42
coolbhaviStill 15 minutes left17:42
coolbhaviany questions?17:42
ClassBotjohnhamelink asked: when do you decide "this isn't for upstream, this is a patch"?17:43
coolbhavijohnhamelink, good question :-) A simple answer would be when a particular bug/problem affects only the os you are using and other environments does'nt show such behaviour17:45
ClassBotphoenix_firebrd asked: how do you refresh a old patch using quilt?17:46
coolbhaviphoenix_firebrd, the simplest way I do that is first try to apply the patch and if it fails I would edit the patch and refresh it or just remove it if its not applicable to the present upstream version17:49
ClassBotnnutter asked: Have you ever used git-buildpackage or similar? Is it worth using that over plain quilt or edit-patch?17:49
ClassBotThere are 10 minutes remaining in the current session.17:50
coolbhavinnutter, yes personally I use git when I am committing upstream or pulling for my packages and it certainly helps. but I use quilt on ubuntu/debian for its simplicity17:52
ClassBotjincreator asked: Is bzr plugin for edit-patch(quilt) exists?17:52
coolbhavijincreator, yes basically I would do a edit-patch generate the patch and do a bzr add <patch name> for adding my patch to my bzr trunk17:54
ClassBotThere are 5 minutes remaining in the current session.17:55
coolbhaviThats it from me provided there are no more questions coming. Thanks for turning up and see you tomorrow for a session on ubuntu app review board :) good night! :)17:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Working with Upstreams - Instructors: tumbleweed
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.18:00
tumbleweedHello Ubuntu Developer Week!18:01
tumbleweedI've just got back from supper, I guess it's time to start18:01
tumbleweedHope you are enjoying yourselves18:01
tumbleweedWho is new here? Who has been involved in Ubuntu for a while, and is here to learn something new?18:01
tumbleweedPlease say hi in the chat channel - #ubuntu-classroom-chat18:01
tumbleweedthat is also the place to ask questions18:01
tumbleweedplease start them with QUESTION: so the bot can pick them up18:02
tumbleweedIf you have any questions with any of this, when you go home and do this, afterwards18:02
tumbleweedI suggest sticking your nose into #ubuntu-motu and asking there18:02
tumbleweedok, we have an audience \o/18:02
tumbleweedso, I'm Stefano Rivera, an Ubuntu Developer and a Debian Developer18:03
tumbleweedI'm in sunny Cape Town, South Africa18:03
tumbleweedand I'm here to talk about dealing with upstreams18:03
* tumbleweed sees a few familiar faces in the chat channel, and a good number of new ones18:03
tumbleweedWhat do I mean by an upstream?18:04
tumbleweedwell, Ubuntu is made up of ~20 000 source packages, (which build ~40 000 binary packages)18:04
tumbleweedwe Ubuntu Developers don't write all of those ourselves. We only authored a tiny handful of them18:04
tumbleweedeverything else came from other projects18:04
tumbleweedsome of these are big projects like GNOME and KDE, which produce hundreds of packages18:04
tumbleweedmost are tiny little projects with one, or maybe half a dozen active contributors18:04
tumbleweedthese projects are our upstreams18:04
tumbleweedthey release new versions of their software, and we package it, make a few tweaks to get it to work nicely with the rest of Ubuntu, and ship it to users18:04
tumbleweedthen we are on the front-line of incoming bug reports, and have to forward the relevant ones back to the upstreams18:05
tumbleweedthat's what a linux distribution is, really18:05
tumbleweedOK, I lied a bit there18:05
tumbleweedI assume you all know that Ubuntu is derived from Debian18:05
tumbleweedin fact, about 75% of packages in Universe are entirely unmodified from Debian18:05
tumbleweedthat's a very good thing18:06
tumbleweedthere's no need for those packages to be modified in Ubuntu18:06
tumbleweedthe vast majority of bugs that we'd encounter in them are relevant to Debian, Ubuntu, and (if except for packaging bugs, the original upstream)18:06
tumbleweedWe contribute a lot back to Debian (as much as possible)18:06
tumbleweedso, a lot of the work I do in Ubuntu18:07
tumbleweedis fixing problems we come across, but they aren't necessarily specific to Ubuntu18:07
tumbleweedand the best place to deal with the problem is as close to the source as possible18:08
tumbleweedthat means the least duplication of effort, and shares the benefit as widely as possible18:08
tumbleweedif we submit a patch to the upstream developers, and they release a new release containing our bug fix, it benefits everyone:18:08
tumbleweedusers of other linux distributions, cygwin and macports users, people who installed this package themselves from scratch, etc.18:08
tumbleweedI hope at this point, you are aware of some the advantages of working well with our upstreams18:08
tumbleweed(and that I might have written up some of this beforehand, for pasting) :P18:08
tumbleweed(actually, beforehand, for a previous Ubuntu Developer Week)18:09
tumbleweedbut I've kind of got to the end of the introduction now18:09
tumbleweedlet's go into some more specifics18:09
tumbleweedand hopefully get piles of questions18:09
tumbleweedwho here has ever contributed a bug fix to an open source project?18:10
tumbleweedyay, people are doing useful things :)18:11
tumbleweedyeah, many big projects have complex processes18:12
tumbleweedand it can be hard to figure out where the information for new contributors is18:12
tumbleweedgenerally, it's best to start with the home page, and dig around for a bug tracker or documentation on contributing patches18:13
tumbleweedyou all clearly can use IRC (you're here)18:13
tumbleweedso if a project has an IRC channel, that's often a good place to get advice on how to get things done18:13
tumbleweedmost of the time, if you submit a useful patch, someone will figure out what to do with18:15
tumbleweedepikvision asks about mentors18:15
tumbleweedmany larger projects have mentors programs18:15
tumbleweedUbuntu doesn't (we had in the past, but they've dried up)18:15
tumbleweedDebian has the #debian-mentors IRC channel, and debian-mentors mailing lists18:16
tumbleweedbut they aren't really a mentor finding system18:16
tumbleweedso much as a place that new people can get help from experienced people18:16
tumbleweedmost of the time, if you get involved with a project, you'll slowly build a relationship with the existing contributors18:17
tumbleweedand often one or more of them will act as mentors18:17
tumbleweedPlease preifx questions with QUESTION: it makes it easier for me to respond to them18:17
tumbleweedyes, debian-mentors is more about package sponsorship than long term mentoring18:18
tumbleweed20:18 < CodeRed> question : so how to get a proper guidance ?18:18
tumbleweedthat depends on the project18:18
tumbleweedif we are talking about Ubuntu18:18
tumbleweedthe best place to get guidance is in our public IRC channels18:19
tumbleweed#ubuntu-motu and #ubuntu-devel are both great places to get help in working on Ubuntu18:19
tumbleweedthere's also a #ubuntu-packaging channel, that's more about general packaging, esp. in PPAs18:20
tumbleweedone of the problems with one-on-one mentorship is that it can be very draining on the mentor18:20
ClassBotThere are 10 minutes remaining in the current session.18:20
tumbleweedwho are often busy people18:20
tumbleweedso, I'd say it makes a lot of sense to get help in a public channel, where more than one person can help you18:21
tumbleweed(whoever is available, basically)18:21
ClassBoteverestt asked: package sponsorship? what is that?18:21
tumbleweedright, good question18:21
tumbleweedyou probably can't understand a thing I'm saying if you aren't already familiar with the Debian and Ubuntu processes :P18:21
tumbleweedso, let me clarify18:21
tumbleweedthe way we work with new contributors in Debian and Ubuntu is through sponsored uploads18:22
tumbleweedour existing developers who have upload privileges can  upload packages for new contributors18:22
tumbleweedso, if you want to fix a bug in an Ubuntu package18:22
tumbleweedyou apply the patch on the source package, prepare an upload, and ask an Ubuntu developer to upload it18:23
tumbleweedthe recommended wayt o ask, is to put it on the sponsorship queue18:23
tumbleweedand of course (I was here to talk about upstreams, right) you submit the patch to relevent the upstream developers18:23
tumbleweeddid that clarify?18:24
ClassBotThere are 5 minutes remaining in the current session.18:25
tumbleweedwhile I'm here, I guess I might as well suggest good things to work on in Ubuntu18:25
tumbleweedI recommend starting with easy patches, to learn the procedures (Ubuntu is a big and complex project)18:26
tumbleweedharvest.ubuntu.com lets you find easy bugs (if you poke around it a bit)18:27
ClassBotCodeRed asked: like i tried ubuntu-app-devel but couldn't find a way to start18:27
tumbleweedCodeRed: I'm afraid I can't really cover that now. app development is too big a t opic for 3 mins18:27
ClassBotbobweaver asked: say you found some code that no one has toched in a yeah or so.  you sent email to upstreamer and have waited 3 months. when is it ok to take the project over. if it is at all18:28
tumbleweedbobweaver: that's a tough question18:28
tumbleweedif a project has died, then taking it over can be a useful thing to do18:28
tumbleweedif the project is useful to you, and you're prepared to toake it over, then you are doing everyone ag reat service18:29
tumbleweedI suggest talking to the upstream about that, though18:29
tumbleweedit's worth avoiding forking the project if possible18:29
tumbleweedbut yes, porjects do die18:30
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: [On Air] Introduction to One Hundred Paper Cuts - Instructors: notgary
tumbleweedI'm afraid I'm out of time, notgary has the stage now18:30
JoseeAntonioRGuys, next session is at www.ubuntuonair.com , so just go and click the play button :)18:30
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.18:30
ClassBotThere are 10 minutes remaining in the current session.18:50
ClassBotThere are 5 minutes remaining in the current session.18:55
mhall119JoseeAntonioR: are you going to let everyone at ubuntuonair know that the next session is back in IRC?18:59
JoseeAntonioRmhall119: yes19:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu App Developer Tools - Instructors: mhall119
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html following the conclusion of the session.19:00
mhall119hello everybody19:01
mhall119I'm Michael Hall, one of the community managers for Canonical19:01
mhall119has everyone been enjoying Ubuntu Developer Week so far?19:01
mhall119in this session I'm going to give an overview of all the tools that are available to Ubuntu developers19:02
mhall119if you have questions at any point, please ask them in the -chat channel, starting with QUESTION: and I will break periodically to answer them19:03
mhall119if there is anything you want me to talk about, please ask about that too19:03
mhall119and if there is time I'll get to it19:03
mhall119alright, to get things started, if you've been following other sessions today I'm sure you've heard about Launchpad19:04
mhall119Launcpad is an open source project hosting service developed and provided by Canonical19:04
mhall119it's similar in a lot of ways to github or sourceforge, with some key differences that make it ideal for Ubuntu related development19:05
mhall119like those other solutions, Launchpad is organized around Projects19:05
mhall119if your Project is open source, you can use Launchpad free of charge19:05
mhall119you can also optionally host proprietary code projects on Launchpad if you purchase a subscription19:05
mhall119you don't really get anything extra by paying, it just lets you keep your proprietary code private19:06
mhall119Launchpad also supports Teams, and pretty much anywhere you can set a person you can also set a team, so a team can be the owner of a project, which gives everybody in that team access to the project19:07
mhall119project ownership lets you manage the project's settings and information, bug priority and so on19:07
mhall119team ownership is a good idea because it means that even if you're away on holiday, somebody else can take care of anything that needs t obe done19:08
mhall119Teams in Launchpad come in 4 levels of membership control:19:08
mhall119Open Teams: These anybody with a Launchpad account can join19:09
mhall119Moderated Teams: Anyboty with a Launchpad account can request to join, but an admin on that team must approve it19:09
mhall119Delegated Teams: These are kind of a hybrid, the require admin approval for direct access, like Moderated Teams, but they can also have other teams as members without managing the membership of those other teams19:10
mhall119finally, Restricted Teams: These you can only get membership by being invited by an admin, you can't request to join them19:11
ClassBotamin_ asked: I'm a newbie in developing apps under linux, specifically under Ubuntu. I couldn't find too much useful stuff on "quickly". So my question is what are some extensive and complete documentations and references for quickly (especially glade and connecting ui to source)19:12
mhall119there are tutorials for using quickly on our developer portal (developer.ubuntu.com) which I will talk about more soon19:12
ClassBotJumpLink916061 asked: Is launchpad itself also open source?19:12
mhall119Yes, Launchpad was open sourced years ago19:12
mhall119and, of course, it uses itself for project hosting: https://launchpad.net/launchpad :)19:13
mhall119Launchpad also gives you a bug tracker, like bugzilla, for each project19:13
mhall119bugs can also be given custom tags that you define for your own project, that lets you easily categorize them19:14
mhall119a common tag is "bitesize", which indicates that it is a small or easy fix, ideal for new contributors who want to get their feet wet19:15
mhall119this has been widely adopted across projects on Launchpad, so if you want to start contributing to something, look for those bugs19:16
mhall119next, one of Launchpad's most important features is tracking Bazaar branches19:16
mhall119Launchpad and Bazaar go hand-in-hand, which shouldn't be surprising because they were both developed at the same time for the same target audience19:17
mhall119Launchpad itself is a remote Bazaar repository that you can push to19:17
mhall119branches in Launchpad can be owned by either an individual or a team19:18
mhall119and a Project typically has one branch that is it's "Development Focus"19:18
mhall119this branch is typically owned by the team that owns the project, meaning you have to be on the team to push to it19:18
mhall119however, anybody can push a branch to that project's namespace, and then propose for it to be merged into the development focus19:19
mhall119which takes us to the next big feature on LP: Merge Propsals19:19
mhall119if you are a github user, these are like pull requests19:19
mhall119since only the owning team can land changes in the development focus ("trunk" usually), everybody else sends a merge proposal that must be reviewed and accepted by that team19:20
mhall119and Launchpad tracks all of this, you can keep tabs on the state of the request and the back-and-forth conversations all on Launchpad19:20
mhall119finally, and rather unique to Launchpad, are PPAs, or Personal Package Archives19:21
mhall119PPAs are a mini-repository for debian packages, they look to Apt and Ubuntu Software Center exactly like the main repositories, only they are owned by an individual or a team19:22
mhall119PPAs are a great way to provide packages of your code or application to users, and keep those users up to date19:22
mhall119it's often used for pre-release versions of code that will eventually make it's way into the main archives19:23
mhall119any questions about Launchpad before I move on?19:24
mhall119Launchpad user profiles and team membership is also used on many other Ubuntu related websites, so if you plan on doing much of anything in the Ubuntu ecosystem, you're going to want to sign up19:24
mhall119alrighty, moving on19:25
mhall119As I said earlier, Launchpad and Bzr go hand-in-hand19:25
mhall119Bzr is the primary version control system used in Ubuntu development19:26
mhall119it's similar in many ways to git or mercurial, because they all got started at about the same time, and borrowed many ideas from eachother19:26
mhall119Bzr is very branch-focused, instead of "cloning" a remote repository, you branch it19:27
mhall119also, unlike git and mercurial, bzr typically has separate directories for separate branches19:27
mhall119these are commonly referred to as feature branches, because you create one for each feature or bug fix you are going to work on19:28
mhall119so, for example, to get the code for Launchpad, you would run "bzr branch lp:launchpad ./my-launchpad-branch"19:28
mhall119(don't do this right now, it's huge)19:29
mhall119bzr can work over many different transport layers, HTTP is common, but it will also work over FTP, SSH and others19:30
mhall119you'll also see some common aliases, like lp: and ubuntu:19:30
mhall119lp: is short-hand for the development focus of a project, so lp:launchpad means the development focus branch (or trunk) for the "launchpad" project19:30
mhall119lp:quicky for the quickly project, and so on19:31
mhall119ubuntu: is short-hand for the package branch used to create the debian package in Ubuntu's archives19:31
mhall119this is used more for those participating in ubuntu's distributed development, not by the original project's developers, who will typically use the lp: prefix19:32
mhall119now, if you run "bzr branch lp:launchpad ./my-launchpad-branch", you will get both the branch history and a local checkout in ./my-launchpad-branch/19:33
mhall119but bzr also lets you have a checkout separate from the branch history19:33
mhall119so you can run "bzr checkout ./my-launchpad-branch/ ./my-launchpad-work/" and you'll have a checkout of the tip in your -work directory, but the rest of the branch history says in -branch19:34
mhall119and, in fact, you can switch your checkout directory between branches19:34
mhall119so you can "bzr branch ./my-launchpad-branch/ ./fixing-feature-x" to make a new feature branch19:35
mhall119then, in your -work checkout directory, run "bzr switch ../fixing-feature-x" to retarget it19:35
mhall119this lets you mimick git or mercurial branch switching workflows with the same local checkout19:36
mhall119bzr also lets you assing bug-fix metadata to your commits, so if you are working on Launchpad bug#12345, you can run "bzr commit --fixes lp:12345" and it will store that in the branch history19:36
mhall119later, when you push your branch to Launchpad, it will automatically associate your new branch with that bug number, so people viewing the bug can see it19:37
mhall119this also lets Launchpad update the bug if your branch is merged into the development focus branch19:37
mhall119I said earlier that anybody can submit a branch to a Launchpad project19:38
mhall119to do this, you simply push your branch to a specific lp: url19:38
mhall119the format is lp:~<your_lp_name>/<target_project_name>/<unique_branch_name>19:38
mhall119so for me, it might look something like this:19:39
mhall119bzr push lp:~mhall119/quickly/fix-bug-1234519:39
mhall119if you want to push some personal code to Launchpad, but don't have a project, you can substitute the project part with "+junk"19:39
mhall119so bzr push lp:~mhall119/+junk/my-cool-code19:40
mhall119everybody on Launchpad has this +junk space for code that doesn't belong to a project19:40
mhall119any questions about bzr and/or launchpad?19:40
ClassBotepikvision asked: Can you explain what a "checkout" is?19:41
mhall119a "checkout" is a copy of the code at a specific version (typically the head of the branch), that is separate from the branch history19:41
mhall119basically, the branch metadata nd history is all stored in the /.bzr/ directory at the root of the branch19:41
mhall119the files you see in that directory are the checkout19:42
mhall119they usually go together, but you can separate them too19:42
mhall119so, for example, when I work on a Django project, I create a checkout into a directory called "work", where I build my virtualenv and keep my database files19:43
mhall119but then I can switch the code in that directory between my trunk and feature branches19:43
mhall119so I can switch between working on feature-x and feature-y, without having to make separate virtualenvs for each19:43
mhall119alright, next I wanted to talk about the developer portal19:44
mhall119this is the primary resource for information about writing apps that target Ubuntu19:44
mhall119here you can find documentation on how to integrate with Unity, Ubuntu One, and other Ubuntu-specific features19:45
mhall119you can also browse API documentation for the same19:45
mhall119with the announcement of the Ubuntu Phone, we also posted on the developer portal how to get the new SDK preview and a tutorial on writing apps for the phone19:46
mhall119and if you want to submit an independent application to the Ubuntu Software Center, you can do that through the MyApps section19:46
mhall119there is also a blog component to the site, which you can follow for updates on our developer offerings19:47
mhall119our tutorials are mostly provided by members of the community, so if you have something you think would be useful to others, please let me know and I'll get it added to the site19:48
mhall119I'm running short on time, so I'll skip right ahead to Quickly19:48
mhall119Quickly is local project management tool that makes is incredibly easy to start writing an application for Ubuntu19:48
=== glebihan_ is now known as glebihan
mhall119it provides a number of commands that cover the entire development life-cycle19:49
mhall119to get started, you simple run "quickly create <template> <new_app_name>" and it will bootstrap everything for you19:49
mhall119not only does it provide a code template, but it also starts you with a bzr branch19:50
mhall119the most common template is currently "ubuntu-application", which is a python2/gtk3 codebase19:50
ClassBotThere are 10 minutes remaining in the current session.19:50
mhall119while python and gtk are the most widely used, Quickly itself supports templates for any language and toolkit19:50
mhall119quickly also provides commands for packaging your code, pushing it to launchpad and even uploading it to a PPA, all with a few simple commands19:51
mhall119there is a video walk-through on http://developer.ubuntu.com/get-started/ that shows the process of using Quickly to create an application19:52
mhall119and more documentation can be found at https://wiki.ubuntu.com/Quickly19:52
mhall119alright, 7 minutes left, any questions before I move on?19:53
mhall119I'm going to very, very quickly list some other resources available to Ubuntu developers19:54
mhall119The Wiki (http://wiki.ubuntu.com) can be edited by anybody, and contains a massive amount of information about all aspects of Ubuntu and the Ubuntu Community19:54
mhall119Etherpad (http://pad.ubuntu.com) is also available to anybody to use19:55
mhall119you need to have a Launchpad account, and also become a member of ~ubuntu-etherpad to get access though19:55
ClassBotThere are 5 minutes remaining in the current session.19:55
mhall119this was for spam-prevention19:55
mhall119etherpad is fantastic for remote pair-programming or collaborative debugging19:55
mhall119it's also used extensively during the Ubuntu Developer Summit to track discussions19:56
mhall119Pastebin (paste.ubuntu.com) is available if you need to paste text for others to see19:56
mhall119stgraber has also written a very handy tool called pastebinit which lets you quickly and easily paste files from the command line, or even pipe output from a process directly into it19:57
mhall119Ubuntu One (http://one.ubuntu.com), it isn't just for personal file storage, you can also get a sharable URL for any file you upload19:57
mhall119this is handy for sharing screenshots, data files, or whatever else you want19:58
mhall119AskUbuntu (http://askubuntu.com) is  StackExchange site that is heavily used, you can ask your questions there or help answer others19:58
mhall119Mailman (http://lists.ubuntu.com) we have many, many mailing lists19:58
mhall119for ubuntu development, you might want to subscribe to ubuntu-devel and ubuntu-motu19:59
mhall119LoCo Teams (http://loco.ubuntu.com) while primarily a community thing, it's always fun to hack on code with friends, especially local ones20:00
mhall119we also have a twice-annual Global Jam, where we encourage people to meet up with Ubuntu users around them and contribute together20:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2013/01/29/%23ubuntu-classroom.html20:00
mhall119Forums (http://forums.ubuntu.com), one of our oldest resources, there is a lot of built-up information there20:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || No Sessions Currently in Progress
mhall119Design (http://design.ubuntu.com) is a newer side, dedicated to providing visual and UX information20:01
mhall119and of course IRC, besides this classroom channel, we also have #ubuntu-devel, #ubuntu-app-devel, #ubuntu-unity, #ubuntu-phone, and on and on20:01
mhall119you can run "/msg alis list #ubuntu*" for an extensive list of ubuntu channels20:02
mhall119and with that I'm one20:02
JoseeAntonioRThanks for being here today, we'll have more sessions tomorrow, starting at 15 UTC! See you there!20:03
mhall119if anybody has any other questions, feel free to ping me on irc, or email me: mhall119 @ubuntu.com20:03
jderosehehe, wrong window :P20:28
=== Noskcaj is now known as Noskcaj_afk
=== yofel_ is now known as yofel

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!