[06:05] <cc11rocks> I will miss the Ubu Dev Week meetings on here. Will they be posted somewhere (esp. the part of setting everything up and looking through code)?
[06:06] <tsimpson> cc11rocks: everything in this channel is logged, so you'll find the complete log on irclogs.ubuntu.com
[06:06] <cc11rocks> Okay, thanks
[06:07] <cc11rocks> Will the meeting be very detailed or more of an overview?
[06:10] <tsimpson> at a guess, I'd say more of an overview, but there'll likely be pointers to more information on the web etc
[06:15] <cc11rocks> Alrightly, thank you
[06:16] <tsimpson> no problem :)
[10:45] <Unknown12290> hey
[11:00] <nkkky> #diaspora
[11:04] <shivangpatel> Hi...
[11:07] <ge0rge> less than 4 hours left :)
[11:13] <shabiitd> watz the starting time in GMT??
[11:15] <tsimpson> shabiitd: 15:00
[12:55] <yanko> hello
[14:35] <Guest30755> when it starts?
[14:35] <raju> 25 min more
[14:35] <Guest30755> yes
[14:52] <PaoloRotolo> Hi all!
[14:52] <jokerdino> hi PaoloRotolo
[14:53] <d1xlax> hi
[14:53] <neoteric> sssh... settle in your seat, it will be starting soon :)
[14:55] <arvislacis1> Any way how to turn off notifications for logging in and out users?
[14:55] <arvislacis1> Or nice IRC client for doing that?
[14:55] <Liverpudlian> Xchat
[14:55] <thotp> hi everyone :))
[14:55] <Liverpudlian> XChat
[14:55] <dholbach> arvislacis1:  /ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS
[14:56] <arvislacis1> dholbach: Thanks
[14:56] <dholbach> anytime
[14:56] <mirba> hola gente
[14:56] <arvislacis1>  /ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS
[14:56] <galacticboy> I'm excited open Linux Classroom!
[14:56] <mirba> hello averybody
[14:56] <dholbach> arvislacis1, without the leading space
[14:56] <smartboyhw> Sit back and enjoy:)
[14:58] <neoteric> dholbach: how do you "unignore" or does it just reset when you leave and rejoin?
[14:58] <dholbach> neoteric, I guess it resets
[14:58] <Kace> It doesn't work
[14:58] <dholbach> some clients might not support it
[14:58] <Kace> What client are you using?
[14:59] <dholbach> xchat-gnome
[14:59] <thotp> it's time
[14:59] <PaoloRotolo> Smuxi :)
[14:59] <nohtype> Xchat, right click on #ubuntu-classroom (left menu), Settings, mark Hide Join/Part Messages
[15:00] <dholbach>  H E L L O   M Y   F R I E N D S !
[15:00] <obounaim> Hi
[15:00] <dholbach> Welcome to another Ubuntu Developer Week!
[15:00] <exodus> dholbach, o/
[15:00] <sukyjary> hi
[15:00] <conner_bw> Thanks nohtype!
[15:00] <bilal> wait, isn't it moderated?
[15:00] <conner_bw> Was just about to ask.
[15:00] <roadmr> \o/
[15:00] <dholbach> Here we go!
[15:01] <dholbach> Before we start off, here just a few pointers which should generally help you through the event.
[15:01] <dholbach> First of all: make sure you also join #ubuntu-classroom-chat
[15:01] <dholbach> #ubuntu-classroom is just for the session itself, all the chat, discussion and questions happen in #ubuntu-classroom-chat
[15:01] <dholbach> if you have a question you want to be answered in the session, please prefix it with QUESTION:
[15:02] <dholbach> ie, QUESTION: Can you recommend any good music for a late-night hacking session?
[15:02] <dholbach> also have a look at https://wiki.ubuntu.com/UbuntuDeveloperWeek because all the session information is on there
[15:02] <dholbach> Two questions which come up frequently are: will there be logs?
[15:03] <dholbach> yes, we will also put them up on https://wiki.ubuntu.com/UbuntuDeveloperWeek/
[15:03] <dholbach> and the second one is "how can I ignore all the joins/parts of people?"
[15:03] <dholbach> you can do that by typing "/ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS" into the channel window
[15:03] <dholbach> without the " obviously
[15:04] <dholbach> some IRC clients might not support this though
[15:04] <dholbach> alright - that's everything organisational from me for now
[15:04] <dholbach> Let's start the first session!
[15:04] <dholbach> My name is Daniel Holbach, I've been working on Ubuntu for almost all of its life and always loved our Developer community
[15:05] <dholbach> for a years I've been working for Canonical now, first working on the Desktop, then moving on to work with our Developer community
[15:05] <dholbach> in this first session I want to give you an overview over how Ubuntu development generally works
[15:06] <dholbach> there are lots of people, lots of moving parts and it can all seem very confusing, but it's actually fine and quite easy to learn :)
[15:06] <dholbach> in this first session I just want to give you a broad overview, so you at least heard all the most important things once
[15:06] <dholbach> and to answer as many questions as we possibly can :)
[15:07] <dholbach> If I'm too fast or don't make sense, please speak up. :)
[15:07] <dholbach> Ubuntu 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.
[15:07] <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.
[15:08] <dholbach> Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.
[15:08] <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.
[15:09] <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.
[15:09] <dholbach> very 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:11] <dholbach> Also should I note that in the last 2-3 cycles we have been putting together a huge QA lab where tests on all kinds of packages are run, which obviously also help with the release planning. :)
[15:11] <dholbach> Ubuntu’s development is very much dependent on the current stage of the release cycle.
[15:11] <dholbach> We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.
[15:11] <dholbach> With every freeze date that is reached developers are expected to make fewer, less intrusive changes.
[15:12] <dholbach> If you have a look at https://wiki.ubuntu.com/QuantalQuetzal/ReleaseSchedule you can see the release schedule for the current 12.10 release.
[15:12] <dholbach> You can see that we just went past Feature Freeze.
[15:12] <dholbach> Feature Freeze is the first big freeze date after the first half of the cycle has passed. At this stage features must be largely implemented.
[15:12] <dholbach> The rest of the cycle is supposed to be focused on fixing bugs.
[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 because many deem it stable enough to play around with it.
[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.
[15:13] <dholbach> Any questions so far?
[15:13] <dholbach> Come on, don't be shy. :)
[15:14] <ClassBot> marcos asked: QA in this context is Question and Answer?
[15:15] <dholbach> marcos, sorry, I could have made it clearer - no, QA in the sentence above meant "Quality Assurance"
[15:15] <dholbach> everything that goes from pro-active testing (test suites run automatically and manual testing) to work on bug reports, testing CD images, etc.
[15:16] <dholbach> QA is what makes Ubuntu not good, but great :)
[15:16] <ClassBot> conner_bw asked: What is the criteria for " it does not contain any serious problems"
[15:17] <dholbach> conner_bw, that's not always a clear-cut decision, but data-loss, critical program crashes and things like that certainly count as show-stoppers
[15:17] <ClassBot> agmenor_ asked: As an app developer, which version should  I be running ? When ?
[15:17] <dholbach> ClassBot, as an app developer it might be good enough to run the latest stable, which is 12.04, but as somebody who works on Ubuntu itself, it's necessary to run 12.10 - and if only in a virtual machine
[15:18] <dholbach> you need to be able to test the changes you want to introduce into Ubuntu in a live environment
[15:18] <ClassBot> paulo_gomes asked: say an application releases a new version of its software after the freeze in ubuntu do we have to wait for the next release?
[15:18] <dholbach> ClassBot, that depends - if it's early in the cycle it can go in without problems - if it's a bug fix release you can still get it in after the freeze
[15:18] <dholbach> but the later in the cycle, the harder it will be to get it past the release team
[15:19] <dholbach> but for a good reason: we need to have time to test things
[15:19] <dholbach> (I'll talk more about this later on.)
[15:19] <ClassBot> conner_bw asked: What is the criteria for " it does not contain any serious problems", like i'm using 12.04 and am subscribed to a few bugs which were clearly released anyway (Libre Office Launcher Integration, for example)
[15:20] <dholbach> conner_bw, sometimes a decision must be made to keep the release rolling out on the right day - it's not always easy
[15:20] <ClassBot> Liverpudlian asked: Is developing apps different when it comes to LTS versions?
[15:21] <dholbach> Liverpudlian, LTS versions are of course interesting because many decide to stay on that particular version. So there is more interest of app authors to get their app on the LTS.
[15:21] <ClassBot> obounaim asked: What is the URL of QA?
[15:21] <dholbach> obounaim, https://wiki.ubuntu.com/QATeam/ might work as a good introduction into everything the team does.
[15:21] <ClassBot> dsp__ asked: how to stop all these logs, i just wanna see your chat msgs.... its confusing
[15:22] <dholbach> dsp__, type "/ignore #ubuntu-classroom CRAP NOTICES SNOTES CTCPS JOINS PARTS QUITS KICKS MODES WALLOPS NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS" into the chat window, but without the "
[15:22] <ClassBot> C1sM0 asked: Are .deb files created automatically once the source code has been send up?
[15:23] <dholbach> C1sM0, yes, they land in the queue because we don't have an infinite amount of build machines, but if the queue is largely empty you can expect your package to be built and ready in the archive within an hour
[15:23] <ClassBot> nja asked: ​ Why does the Work Item Iteration on the Quantal Release Schedule show A-2 at the top instead of A-1?
[15:24] <dholbach> nja, I assume you are talking about http://status.ubuntu.com/ubuntu-quantal/? I'm not quite sure about this to be honest.
[15:24] <dholbach> Maybe because Alpha 2 was the last milestone?
[15:24] <dholbach> Sorry, don't know.
[15:24] <ClassBot> marcos asked: App Showdown accept closed source and pay applications too?
[15:24] <dholbach> marcos, not as far as I know, no
[15:25] <dholbach> maybe we can try to direct our focus away from apps for a little bit - in this session I will try to talk a bit more about the development of Ubuntu itself - although large parts apply for app development and packaging as well
[15:25] <ClassBot> _et asked: Builds done using which C-I tool?
[15:25] <dholbach> _et, I don't know C-I tool - all our packages are built on Launchpad, which is an Open Source platform built with Zope and Python - the build process itself uses sbuild
[15:26] <ClassBot> ziviani asked: who defines the requirements for each GA release? what if some features are no able to be developed until the freezing date?
[15:26] <dholbach> ziviani, if features can't get done in the cycle, they are dropped and left for next cycle to be implemented.
[15:26] <dholbach> The decision is made by the release team and the respective team leads.
[15:26] <ClassBot> nja asked: ​ Why does Lernid have a "Terminal" tab?
[15:27] <dholbach> nja, when we get to a live demo part you can try out what the presenter is saying live on your system
[15:27] <ClassBot> smartboyhw asked: Then what about software packaging?
[15:28] <dholbach> smartboyhw, I'm not quite sure I understand your question. Ubuntu Development is a lot about Software Packaging and its integration with each other. Maybe you can ask another question?
[15:28] <ClassBot> marcos asked: Update releases (like 12.04.1) accept new features?
[15:28] <dholbach> marcos, no, it will largely "just" include security and stability fixes, updated translations and the like
[15:29] <dholbach> it's just impossible to direct your attention to developing two releases (12.04 and 12.10 for example) at the same time
[15:29] <ClassBot> Henrich asked: how many buildds are there? can we see the list?
[15:29] <dholbach> Henrich, yes - it's available here: https://launchpad.net/builders/
[15:30] <dholbach> Alright - that was a true avalanche of questions - thanks everyone! :)
[15:30] <dholbach> My fingers are aching, but not bleeding yet, so let's keep going.
[15:30] <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.
[15:30] <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.
[15:31] <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.
[15:31] <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.
[15:31] <dholbach> As you can see on https://uds.ubuntu.com/ the next UDS is going to be in Copenhagen - if you're there, make sure you drop by.
[15:32] <dholbach> Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects.
[15:32] <dholbach> That is why contributors to Ubuntu constantly stay in touch. Most teams or projects use dedicated mailing lists to avoid too much unrelated noise.
[15:32] <dholbach> For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.
[15:33] <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.
[15:33] <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.
[15:33] <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.
[15:33] <dholbach> These projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.
[15:34] <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).
[15:34] <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.
[15:34] <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.
[15:34] <ClassBot> average_drifter asked: I just forked someone's repo of HTOP 1.0.1 from  github, and made a patch, the person merged my patch. how can make sure that this patch gets into the Ubuntu repository together with all the stuff he added ? (he added support for thread monitoring). I'm sure a lot of people know what HTOP is.. it's a pretty good utilitary for monitoring processes(kind of like top)
[15:35] <dholbach> average_drifter, Great. Just what I wanted to talk about next. :)
[15:35] <ClassBot> NickE asked: Does Launchpad host everything to do with a given project (unless it is upstream)?
[15:36] <dholbach> NickE, if you decide to use Launchpad to host your project, you can put all the code branches, the bug reports, translations, the specifications, the releases and support tracker into Launchpad
[15:36] <dholbach> and if a project decides to not use Launchpad, you can easily set up a code mirror
[15:36] <dholbach> and daily builds and the like
[15:36] <ClassBot> raju asked: Whats the ground work have to do , to join in a current running project as  one of its the developer ?
[15:37] <dholbach> raju, I would always recommend to have a look out (and ask for) some simple bugs you can start working on.
[15:37] <dholbach> Luckily this week we'll have a session about fixing small bugs in Ubuntu and what to do about them.
[15:37] <dholbach> Tomorrow, 17:00 UTC.
[15:38] <dholbach> Alright, since there's so much interest in fixing bugs and getting stuff into Ubuntu, let's talk a bit about it.
[15:38] <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.
[15:38] <dholbach> Open Source Development happens in a distributed world with different goals and different areas of focus.
[15:38] <dholbach> 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:39] <dholbach> hat 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:39] <dholbach> In the example I just mentioned it would make sense to ship Ubuntu with the existing version of the project, add the bugfix, get it into Upstream for their next release and ship that (if suitable) in the next Ubuntu release. It would be the best possible compromise and a situation where everybody wins.
[15:40] <dholbach> More specifically: 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.
[15:40] <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.
[15:41] <dholbach> If that makes you curious, that's great - I'll give you some links to docs later on. The mechanics of fixing a bug are always the same and you learn the tools pretty quickly. It's sometimes just that you have a particularly tricky bug in front of you. But there's always people who can help you out. :)
[15:41] <ClassBot> raju asked: Sorry if its sounds like silly doubt but i want to ask it . how a starting user can estimate the Bug strength as simple one or complex one ?
[15:42] <dholbach> raju, it's sometimes not easy to estimate. It's quite common to think "hah, this one is going to be easy" and then you spend hours on fixing it.
[15:42] <dholbach> It happens to me all the time. :)
[15:42] <dholbach> The good thing is though that we picked a bunch of easy to fix tasks, which Stefano will talk about in his session tomorrow
[15:42] <dholbach> and which are mentioned in the docs I'll point out later on
[15:43] <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.
[15:43] <ClassBot> prashanth asked: Where do you usually get the source code?
[15:44] <dholbach> prashanth: it's all in Launchpad - a quick "apt-get source <package>" or "bzr branch ubuntu:<package>" will get the source for you - but more on that specifically later on :)
[15:44] <dholbach> When fixing bugs additional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.
[15:44] <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.
[15:45] <dholbach> More questions? :)
[15:45] <ClassBot> prashanth asked: where can we get a list of Upstreams?
[15:46] <dholbach> prashanth: Good question.  To get a page with all info about a package in Ubuntu, you can for example go to https://launchpad.net/ubuntu/+source/gedit
[15:47] <dholbach> If you go to https://launchpad.net/gedit though (note the missing "ubuntu/+source"), you get the information about Upstream
[15:47] <ClassBot> geekette86 asked: i wanna know more about  apport-retrace
[15:48] <dholbach> apport-retrace is a very nice tool - what it does for us is that if a program crashes and it saves a core dump with the current state of the program's used memory, apport-retrace can get us a human-readable output of the crash stacktrace, so the functions which were called in which part of the code, which line, which variables and so on
[15:49] <dholbach> https://wiki.ubuntu.com/DebuggingProgramCrash has more info about this generally
[15:49] <ClassBot> Henrich asked: If you find same problem in upstream (e.g. Debian), do you report it to upstream bug tracker? if not, why?
[15:49] <dholbach> Henrich, yes, you do that if you can be reasonably sure that the problem happens there as well and not because Ubuntu has a modified version of it
[15:49] <ClassBot> neoteric asked: If source can be mirrored into Launchpad would it then be possible that someone fixes a bug in the LaunchPad version that is not fixed in an Upstream package?  If so, what then?
[15:50] <dholbach> neoteric, Unfortunately Launchpad can't push code to the Upstream project, so we need to forward patches 'manually'.
[15:50] <ClassBot> raju asked: please explain more about this " 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:50] <ClassBot> There are 10 minutes remaining in the current session.
[15:50] <dholbach> Ok, let's say you find a problem in gedit. It crashes for some reason.
[15:51] <dholbach> First you might want to check if there's a new release available which fixes the issue, if not you could try to check the upstream commits if a recent change fixed the issue.
[15:51] <dholbach> If that's not the case, you could have a look at upstream's bug tracker and see if somebody reported the issue already and if a fix is in progress.
[15:51] <dholbach> In that case you can then help out to test the fix and give valuable feedback.
[15:52] <dholbach> If the problem is not know, you'd report it with all the relevant info you have and try to help out as best as you can.
[15:52] <ClassBot> eklok asked: whats the difference between the package management and how windows does it? i never got that right. And why would it be better to wrap stuff up in packages
[15:53] <dholbach> The good thing with package management in a distro is that we have control over what gets in. If something is unstable we don't have to put it in or we can roll back to an old version. Also can we more easily integrate things with each other because we have all the source code.
[15:53] <dholbach> On top of that we can more easily find security issues by scanning the entire archive or rebuilding all packages with new security features, etc.
[15:53] <dholbach> Also is it easier for our users. They get all their updates from one place and don't have to update 64325823 programs individually.
[15:53] <dholbach> If you ask me, it's best thing since sliced bread.
[15:54] <ClassBot> ziviani asked: What are the next Ubuntu goals? Based on the huge efforts with Unity for a better user experience I believe Ubuntu is more focused in UX right now. Is it the focused area where developers could give the special attention?
[15:55] <dholbach> A lot of attention indeed goes into UX, but there are many other teams, who for instance work on the server or make sure that everything works on all kinds of devices, etc. https://wiki.ubuntu.com/Teams might help you find something you're interested in.
[15:55] <ClassBot> exodus asked: Daniel, have you and the Ubuntu Developers Team thought about doing a session in Google Hangout or a similar type of streaming?
[15:55] <ClassBot> There are 5 minutes remaining in the current session.
[15:55] <dholbach> exodus, yes - we've done a few of them and I plan to put on a few sessions soon again. If you follow @ubuntudev on Twitter, Identi.ca, Google+ or Facebook you should get a note. :)
[15:56] <ClassBot> nja asked: ​ Why are you not streaming this in a G+ hangout?
[15:56] <dholbach> In the next session there will be more instructions which you can easily copy/paste from IRC, but not from a Google+ Hangout. Maybe in the future we'll have more video casts.
[15:56] <dholbach> Another point of interest might be people who are at work and can't watch videos, but can easily read up an IRC logs.
[15:56] <dholbach> Also an IRC log is searchable.
[15:57] <dholbach> That said, I know that videos can be a bit more inviting and more personal than a text-based session.
[15:57] <ClassBot> luisalvarado asked: what tools do you recommend to start working on a bug fix?
[15:57] <dholbach> luisalvarado, more on that in the next session and Stefano's session tomorrow.
[15:58] <dholbach> Let's take 3 minutes break so we can all get another glass of water, a cup of tea or something else.
[15:58] <dholbach> Thanks everyone and see you in 3. :)
[16:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
[16:01] <dholbach> Excellent - welcome back to session number two at https://wiki.ubuntu.com/UbuntuDeveloperWeek :)
[16:01] <dholbach> for those of you who joined in late, please also make sure you're in #ubuntu-classroom-chat so you can ask your questions there
[16:02] <dholbach> and please prefix them with QUESTION: so the bot will pick them up
[16:02] <dholbach> In this session we will set up our development environment, configure the tools and everything, so you're ready for the upcoming sessions and for getting involved
[16:03] <dholbach> if we get through everything quick enough we can even have a look at a package and what to do with it
[16:03] <dholbach> this session will be practical, so you might want to open a terminal already
[16:03] <dholbach> There are a number of things you need to do to get started developing for Ubuntu.
[16:03] <dholbach> We'll get your computer set up so that you can start working with packages, and upload your packages to Ubuntu’s hosting platform, Launchpad.
[16:03] <dholbach> Here’s what we’ll do:
[16:04] <dholbach>  - Installing packaging-related software. This includes: Ubuntu-specific packaging utilities, Encryption software so your work can be verified as being done by you, Additional encryption software so you can securely transfer files.
[16:04] <dholbach>  - Cover the creation and configuring of your account on Launchpad
[16:04] <dholbach>  - Setting up your development environment to help you do local builds of packages, interact with other developers, and propose your changes on Launchpad.
[16:04] <dholbach> 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:05] <dholbach> This means that you will need to run Ubuntu Quantal (12.10) in some form.
[16:05] <dholbach> Don't despair - you can run it in a chroot or virtual machine if that suits you for testing, or in a separate partition, or something along those lines.
[16:05] <dholbach> Still it's very important to test your fixes in a live environment.
[16:05] <dholbach> https://wiki.ubuntu.com/UsingDevelopmentReleases explains how to do it safely.
[16:06] <dholbach> If you are now on 12.04, you're fine - you can still go through the instructions and repeat them later on.
[16:06] <dholbach> There are a number of tools that will make your life as an Ubuntu developer much easier. You will encounter these tools later on. To install most of the tools you will need run this command:
[16:06] <dholbach>   sudo apt-get install packaging-dev
[16:07] <dholbach> This will take a while, so just keep it running.
[16:07] <dholbach> This command will install the following software:
[16:07] <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:07] <dholbach>  - pbuilder – a tool to do a reproducible builds of a package in a clean and isolated environment.
[16:07] <dholbach>  - ubuntu-dev-tools (and devscripts, a direct dependency) – a collection of tools that make many packaging tasks easier.
[16:07] <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 others work.
[16:07] <dholbach>  - apt-file provides an easy way to find the binary package that contains a given file.
[16:08] <dholbach> ... and obviously many many many other good things we won't cover in this tutorial. :)
[16:08] <dholbach> Any questions so far?
[16:08] <ClassBot> NickE asked: ​ What VM does TestDrive use?
[16:09] <dholbach> NickE, I think it uses kvm.
[16:09] <ClassBot> nja asked: ​ Is it usual to get "apt-file update needed" after installing those packages?
[16:09] <dholbach> nja, not for now, I don't think
[16:09] <ClassBot> conner_bw asked: Is bzr etched in stone? Will git be supported someday?
[16:10] <dholbach> conner_bw, I don't know - you could try to ask in #launchpad though
[16:10] <dholbach> personally I love bzr because it's quite easy to learn, but I know others prefer git or some other version control system
[16:10] <dholbach> the good thing is that Launchpad can import git branches and others as well, so you can work on them natively with bzr
[16:11] <dholbach> Ok, let's crack on.
[16:11] <dholbach> The Debian/Ubuntu packaging tools need to learn about you . So please simply open your ~/.bashrc in a text editor and add something like this to the bottom of it:
[16:11] <dholbach> export DEBFULLNAME="Bob Dobbs"
[16:12] <dholbach> export DEBEMAIL="subgenius@example.com"
[16:12] <dholbach> Please use YOUR email address and YOUR name. :)
[16:12] <dholbach> Now save the file and either restart your terminal or run:
[16:13] <dholbach>   source ~/.bashrc
[16:13] <dholbach> (If you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.)
[16:13] <dholbach> Now that this is done, the packaging tools will always use your name and email address by default.
[16:14] <ClassBot> nja asked: ​ Is bash the shell integrated in Lernid?
[16:14] <dholbach> nja, yes, lernid uses whatever shell you normally use - the default is bash
[16:14] <dholbach> Now that this is done, let's create GPG key.
[16:14] <dholbach> If you have a key already, you're fine - you don't need another.
[16:15] <dholbach> GPG stands for GNU Privacy Guard and it implements the OpenPGP standard which allows you to sign and encrypt messages and files. This is useful for a number of purposes.
[16:15] <dholbach> In our case it is important that you can sign files with your key so they can be identified as something that you worked on. If you upload a source package to Launchpad, it will only accept the package if it can absolutely determine who uploaded the package.
[16:15] <dholbach> To generate a new GPG key, run:
[16:15] <dholbach>   gpg --gen-key
[16:15] <dholbach> GPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine. Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure.
[16:15] <dholbach> Afterwards, it will ask you if you want it to expire the key at some stage. It is safe to say “0”, which means the key will never expire.
[16:16] <dholbach> The last questions will be about your name and email address. Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on.
[16:16] <dholbach> Adding a comment is not necessary. Then you will have to set a passphrase, choose a safe one (a passphrase is just a password which is allowed to include spaces).
[16:16] <dholbach> Now GPG will create a key for you, which can take a little bit of time; it needs random bytes, so if you give the system some work to do it will be just fine.
[16:16] <dholbach> Maybe we will just let it sit there for a bit and do its thing, while we take care of other business.
[16:17] <dholbach> Let's create our SSH key next.
[16:17] <dholbach> SSH stands for Secure Shell, and it is a protocol that allows you to exchange data in a secure way over a network. It is common to use SSH to access and open a shell on another computer, and to use it to securely transfer files. For our purposes, we will mainly be using SSH to securely push changes to Launchpad.
[16:17] <dholbach> To generate an SSH key, enter:
[16:17] <dholbach>   ssh-keygen -t rsa
[16:18] <dholbach> The default file name usually makes sense, so you can just leave it as it is. For security purposes, it is recommended that you use a passphrase.
[16:19] <ClassBot> nja asked: ​ Can the passphrase be changed later?
[16:19] <dholbach> nja, yes
[16:19] <dholbach> Next, let's set up pbuilder.
[16:19] <dholbach> pbuilder allows you to build packages locally on your machine. It serves a couple of purposes:
[16:19] <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 system.
[16:20] <dholbach>  - There is no need to install all necessary build dependencies locally
[16:20] <dholbach>  - You can set up multiple instances for various Ubuntu and Debian releases.
[16:20] <dholbach> Setting pbuilder up is very easy, simply run:
[16:20] <dholbach>   pbuilder-dist <release> create
[16:20] <dholbach> So for quantal, you'd run:
[16:20] <dholbach>   pbuilder-dist quantal create
[16:21] <dholbach> You can install multiple pbuilders, for each release of Ubuntu, 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:21] <dholbach> Are there any questions up until now?
[16:22] <ClassBot> jsjgruber-l82-p asked: Why might you need a .pbuilderrc file?
[16:22] <dholbach> in .pbuilderrc you could specify a lot of things: for example using additional mirrors, installing packages into the chroots by default, etc.
[16:22] <dholbach> pbuilder's manpage should give you a good idea of what you might want to use. In the most cases you don't need it though.
[16:23] <ClassBot> exodus asked: Lets say I'm building a complicated package, which depends on various packages which are not already in a pbuilder slate. PackageA depends on PackageB & PackageC. After I build B & C, does pbuilder know B & C as a dependency for A. Is there a special set-up for the packages installed in pbuilder environment?
[16:24] <dholbach> exodus, Good questions. Sometimes you might want to build a couple of packages in a certain sequence, for instance you want to transition 10 packages from libsomething1 to libsomething 2
[16:25] <dholbach> in this case you can teach pbuilder to re-use packages you already built and to add them to its sources
[16:25] <ClassBot> lengau asked: Why does pbuilder require root permissions?
[16:25] <dholbach> lengau, because it uses chroot internally to create a completely separate minimal system in which it performs the build
[16:26] <ClassBot> TheLordOfTime asked: How do you teach pbuilder to use the already-built packages, in the hypothetical exodus presented?
[16:26] <dholbach> TheLordOfTime, https://wiki.ubuntu.com/PbuilderHowto is one I know about.
[16:27] <dholbach> If it's outdated, I'd recommend to ask in #ubuntu-motu
[16:27] <dholbach> Ok. I assume GPG finished creating the key for you already. Let's move on with the key then. :)
[16:27] <dholbach> You might have gotten a message similar to this one:
[16:27] <dholbach> pub   4096R/43CDE61D 2010-12-06
[16:27] <dholbach>       Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
[16:27] <dholbach> uid                  Daniel Holbach <dh@mailempfang.de>
[16:27] <dholbach> sub   4096R/51FBE68C 2010-12-06
[16:27] <dholbach> In this case 43CDE61D is the key ID.
[16:28] <dholbach> Next, you need to upload the public part of your key to a keyserver so the world can identify messages and files as yours. To do so, enter:
[16:28] <dholbach>   gpg --send-keys <KEY ID>
[16:28] <dholbach> This will send your key to one keyserver, but a network of keyservers will automatically sync the key between themselves. Once this syncing is complete, your signed public key will be ready to verify your contributions around the world.
[16:28] <ClassBot> nja asked: ​ What are all these generated keys for?
[16:29] <dholbach> nja, if you upload a package to Launchpad (for instance to your personal package archive), it will check if the package was really done by you
[16:29] <dholbach> the GPG key is used to sign a package and make sure it wasn't tampered with and that it originates from you
[16:30] <dholbach> the SSH key is used for Bazaar, which I'll talk a bit more in a minute - it basically pushes your changes to LP using a secure connection
[16:30] <dholbach> With a basic local configuration in place, your next step will be to configure your system to work with Launchpad.
[16:30] <dholbach> Launchpad is the central piece of infrastructure we use in Ubuntu. It not only stores our packages and our code, but also things like translations, bug reports, and information about the people who work on Ubuntu and their team memberships. You will also use Launchpad to publish your proposed fixes, and get other Ubuntu developers to review and sponsor them.
[16:31] <dholbach> Sponsoring basically means "upload a package for somebody else". This is what needs to be done if you want to get a fix into Ubuntu and you don't have upload rights yet.
[16:31] <dholbach> You will need to register with Launchpad and provide a minimal amount of information. This will allow you to download and upload code, submit bug reports, and more.
[16:32] <dholbach> Besides hosting Ubuntu, Launchpad can host any Free Software project. https://help.launchpad.net/ has more information if you should generally get stuck somewhere.
[16:32] <dholbach> If you don’t already have a Launchpad account, you can easily create one (https://launchpad.net/+login). If you have a Launchpad account but cannot remember your Launchpad id, you can find this out by going to https://launchpad.net/~ and looking for the part after the ~ in the URL.
[16:32] <ClassBot> TheLordOfTime asked: I've seen this thing about the Ubuntu Code of Conduct.  Do I need to sign that to develop for Ubuntu?
[16:33] <dholbach> TheLordOfTime, yes - if you want to become part of the team, become an Ubuntu member (get voting rights, an @ubuntu.com address and be generally recognised for your work), you will have to sign it
[16:33] <dholbach> there's no hidden clauses or anything crazy in there - you won't sign up for a washing machine you'll have to pay
[16:33] <dholbach> the code of conduct basically says to us all: be excellent to each other
[16:34] <dholbach> and that's generally a good thing to comply with :)
[16:34] <ClassBot> man_let asked: can less intelligent people contribute?
[16:34] <dholbach> man_let, We have enough tasks for everyone in Ubuntu. No matter what your interest, ability or preference might be.
[16:35] <ClassBot> nja asked: ​ HELP! My LaunchPad password reset won't arrive!
[16:35] <dholbach> nja, I think somebody mentioned it in the chat window already, but you can ask in #launchpad for help.
[16:35] <dholbach> and you can follow the instructions from the log or the documentation later on
[16:36] <dholbach> Launchpad’s registration process will ask you to choose a display name. It is encouraged for you to use your real name here so that your Ubuntu developer colleagues will be able to get to know you better.
[16:36] <dholbach> When you register a new account, Launchpad will send you an email with a link you need to open in your browser in order to verify your email address. If you don’t receive it, check in your spam folder.
[16:36] <dholbach> The new account help page (https://help.launchpad.net/YourAccount/NewAccount) on Launchpad has more information about the process and additional settings you can change.
[16:37] <dholbach> You need to tell Launchpad about GPG key, so to find about your GPG fingerprint, please run:
[16:37] <dholbach>   gpg --fingerprint <email@address.com>
[16:37] <dholbach> and it will print out something like:
[16:37] <dholbach> pub   4096R/43CDE61D 2010-12-06
[16:37] <dholbach>       Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
[16:37] <dholbach> uid                  Daniel Holbach <dh@mailempfang.de>
[16:37] <dholbach> sub   4096R/51FBE68C 2010-12-06
[16:37] <dholbach> Head to https://launchpad.net/~/+editpgpkeys and copy the “Key fingerprint” into the text box. In the case above this would be 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D. Now click on “Import Key”.
[16:37] <dholbach> Launchpad will use the fingerprint to check the Ubuntu key server for your key and, if successful, send you an encrypted email asking you to confirm the key import. Check your email account and read the email that Launchpad sent you.
[16:37] <dholbach>  If your email client supports OpenPGP encryption, it will prompt you for the password you chose for the key when GPG generated it. Enter the password, then click the link to confirm that the key is yours.
[16:38] <dholbach> Back on the Launchpad website, use the Confirm button and Launchpad will complete the import of your OpenPGP key.
[16:38] <dholbach> Find more information at https://help.launchpad.net/YourAccount/ImportingYourPGPKey
[16:38] <dholbach> And then you can do the same with your SSH key.
[16:38] <dholbach> Open https://launchpad.net/~/+editsshkeys in a web browser, also open ~/.ssh/id_rsa.pub in a text editor.
[16:39] <dholbach> Make sure it's ~/.ssh/id_rsa.pub (public part) and not ~/.ssh/id_rsa (secret part)
[16:39] <dholbach> :)
[16:39] <dholbach> This is the public part of your SSH key, so it is safe to share it with Launchpad. Copy the contents of the file and paste them into the text box on the web page that says “Add an SSH key”. Now click “Import Public Key”.
[16:39] <dholbach> For more information on this process, visit the creating an SSH keypair page on Launchpad: https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair
[16:39] <ClassBot> thotp asked: might the GPG key changes when i re-install the operating system?
[16:40] <dholbach> thotp: it might be worth backing up the ~/.gnupg directory
[16:40] <dholbach> you should be able to just copy it back
[16:40] <dholbach> The last thing I wanted to mention briefly - I know we rushed through a lot, so I want to make some time for more questions - is setting up Bazaar, which should be pretty quick.
[16:40] <dholbach> Bazaar is the tool we use to store code changes in a logical way, to exchange proposed changes and merge them, even if development is done concurrently. It is used for the new Ubuntu Distributed Development method of working with Ubuntu packages.
[16:41] <dholbach> o tell Bazaar who you are, simply run:
[16:41] <dholbach>   bzr whoami "Bob Dobbs <subgenius@example.com>"
[16:41] <dholbach>   bzr launchpad-login subgenius
[16:41] <dholbach> whoami will tell Bazaar which name and email address it should use for your commit messages. With launchpad-login you set your Launchpad ID. This way code that you publish in Launchpad will be associated with you.
[16:41] <dholbach> Again: If you can not remember the ID, go to https://launchpad.net/~ and see where it redirects you. The part after the “~” in the URL is your Launchpad ID.)
[16:42] <dholbach> And that should be pretty much it.
[16:42] <dholbach> One thing you also might want to do is open the "software properties" and make sure the "Sources" part is checked. This will let you download sources from all packages in Ubuntu easily.
[16:43] <dholbach> or just make sure you have   deb-src   lines in /etc/apt/sources.list
[16:43] <ClassBot> eklok asked: what keeps you motivated to programm/debug? isnt it exhausting to deal with this every day. I want to motivate myself but i always fail
[16:43] <dholbach> eklok, the people and the feeling that if a bug is fixed, it's not just fixed for me but for many millions of users out there
[16:43] <dholbach> also do I learn something new all the time, which is great
[16:44] <dholbach> of course it can be hard to solve a problem, but you can always ask for help
[16:44] <ClassBot> man_let asked: what if 2 ppl have the same public key?
[16:44] <dholbach> man_let, there have been collisions of gpg keys already, but they are very rare - can somebody dig out a link about this?
[16:44] <ClassBot> nja asked: ​ What can I do if I have 2 subkeys.  How do I know which one to delete?
[16:45] <dholbach> I hope http://www.gnupg.org/gph/en/manual.html#AEN282 can help you with it
[16:45] <dholbach> Any more questions? :)
[16:46] <ClassBot> nja asked: ​ Can I not see what one was created most recently?
[16:46] <dholbach> If you mean GPG, I'm afraid I don't have the answer right now. Maybe somebody in #ubuntu-classroom-chat or #ubuntu-motu can help.
[16:46] <dholbach> Sorry
[16:47] <dholbach> If you followed all the instructions, the following example should work:
[16:47] <dholbach> Please run:
[16:47] <dholbach>   bzr branch ubuntu:hello
[16:47] <dholbach> This will give you a Bazaar branch of the "hello world" package in Ubuntu and all its revisions in Ubuntu.
[16:47] <dholbach> then please:
[16:47] <dholbach>   cd hello
[16:48] <dholbach>   bzr bd -- -S
[16:48] <dholbach> which will build a source package from the branch - so it will recreate what the original source was and what we need to modify to make it build the "Debian or Ubuntu way"
[16:49] <dholbach> if you type    ls ..    it should show you something like this:
[16:49] <dholbach> hello_2.8-2.debian.tar.gz  hello_2.8-2_source.changes
[16:49] <dholbach> hello_2.8-2.dsc            hello_2.8.orig.tar.gz
[16:49] <dholbach> now please run:
[16:50] <dholbach>   pbuilder-dist quantal build ../hello_2.8-2.dsc
[16:50] <dholbach> This will build the package from the source in our shiny new pbuilder instance.
[16:50] <dholbach> It will first download relevant build-dependencies (so packages required to build the package), then perform the build.
[16:50] <ClassBot> There are 10 minutes remaining in the current session.
[16:51] <dholbach> The resulting package then should be available in ~/pbuilder/quantal_result/
[16:51] <ClassBot> nja asked: ​ When running bzr bd -- -s: Help - http://paste.ubuntu.com/1172150/
[16:51] <dholbach> Yes, that's a warning which is safe to ignore:
[16:51] <dholbach> gpg: skipped "Santiago Vila <sanvila@debian.org>": secret key not available
[16:51] <dholbach> gpg: /tmp/debsign.16cckC0A/hello_2.8-2.dsc: clearsign failed: secret key not available
[16:52] <dholbach> It merely means that the last person who worked on the package (cf debian/changelog) was Santiago Vila, whose GPG key you obviously don't have.
[16:52] <dholbach> We could have added "-us -uc" to the "bzr bd -- -S" command which would have avoided this
[16:52] <dholbach> but it's safe to ignore.
[16:53] <dholbach> In this small examples (just 3-4 commands) we went from source branch (all revisions in Ubuntu are stored in there), to source package (just the latest source revision as tarball and additional modifications - this is what we use to upload to Launchpad for builds) then then the resulting binary (.deb) packages
[16:54] <dholbach> This is obviously just a taster, so I hope you will find many interesting things in the next sessions which will take you further on your way to joining the Ubuntu Developers.
[16:54] <dholbach> Just do me one favour: bookmark http://developer.ubuntu.com/packaging/html/
[16:55] <dholbach> and stay up to date by following @ubuntudev on identi.ca/twitter.com/facebook.com/gplus.to
[16:55] <ClassBot> marcosb asked: -us -uc is not for pubilder? or really is for bzr?
[16:55] <ClassBot> There are 5 minutes remaining in the current session.
[16:55] <dholbach> marcosb, yes, not for pbuilder, but for bzr bd (everything behind the '--' is passed to debuild/dpkg-buildpackage internally)
[16:56] <dholbach> I hope you give Ubuntu development a go, learn a lot, make the world a better place and make a bunch of friends. :)
[16:57] <dholbach> Any last 2-3 questions before Oliver "ogra" Grawert takes over to talk about ARM?
[16:57] <ClassBot> nja asked: ​ After running "bzr bd -- -S -us -uc" now what?  I'm really behind now.
[16:57] <dholbach> nja, pbuilder-dist quantal build ../hello_2.8-2.dsc
[16:58] <dholbach> but you should be able to find this in the docs (http://developer.ubuntu.com/packaging/html/) as well
[16:58] <dholbach> and in the logs which will go up on https://wiki.ubuntu.com/UbuntuDeveloperWeek later on
[16:58] <ClassBot> marcosb asked: another session to create patches for hello package? :)
[16:58] <dholbach> marcosb, yes it would have been too much to squeeze into 2 hours :)
[16:58] <ClassBot> alucardni asked: how can I tell to bzr bd to use pbuilder to build a binary package?
[16:59] <dholbach> alucardni, it's two separate commands - a pbuilder plugin for bzr might be a good idea :)
[16:59] <dholbach> but I don't know if it exists :)
[17:00] <dholbach> All the best everyone! Hope to see more of you soon!
[17:00] <dholbach> ogra_, your stage :)
[17:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
[17:01] <ogra_> yay
[17:01]  * ogra_ waves
[17:01] <ogra_> hello everybody
[17:02] <ogra_> soo, i'm here to tell something about arm :)
[17:02] <ogra_> arm is the most recent addition to the supported arhitectures in ubuntu
[17:02] <ogra_> (sorry for my typos i just got a new kbd and am not 100% used to it yet, feel free to laugh about them as you like ;) )
[17:03] <ogra_> so about 4 years ago there was the ubuntu-mobile team ... originally founded for building ubuntu on MID devices
[17:03] <ogra_> (MID means mobile internet devices, i.e. tablet)
[17:04] <ogra_> but somehow these devices didnt take off on the market ... (until the ipad came)
[17:04] <ogra_> so the focus of this group moved forward to support ARM
[17:05] <ogra_> with jaunty we actually had our first arm release ... back then for the freescale babbage board, a poorly powered 700MHz single core machine with 512M ram
[17:06] <ogra_> back then the fcus was still on just getting it to work, we didnt invest much but pulled the debian arm port into ubuntu and made sure everything builds
[17:07] <ogra_> with the more powerful devices showing up (specifically the pandaboard from TI) and ARM getting intrested in ubuntu and joining a partnership with canonical, the focus shifted towards optimizing for the new CPU architectures
[17:07] <ogra_> so we can get the most out of the HW
[17:07] <ogra_> originally the debian port is buiolt for the ARMv5 architecture, which in the intel world would probably comparable to 486
[17:08] <ogra_> we now wanted to have all the bells and whitles and after some work with the people from ARM we decided to switch to the ARMv7 architecture ... which in the intel world you would see as 686
[17:09] <ogra_> so from lucid on you could opnly isntall on armv7 HW ...
[17:09] <ogra_> with the lucid cycle we also joined a deep partnershipü with TI to develop on the pandaboard
[17:10] <ogra_> even though the contract ran out today, we still work closely together
[17:10] <ogra_> around the same time linaro was founded by canonical and arm ... to actually solve the huge fragmentation in the arm market
[17:11] <ogra_> most pf the low level work (kernel, toolchain, drivers etc) moved over to linaro and the ubuntu team could concentrate on making ubuntu doesktop rock on the architecture
[17:11] <ogra_> this we did until precisee ...
[17:12] <ogra_> during this time the canonical management saw how well arm worked and wanted to try to get arm out of its second class citizen status
[17:13] <ogra_> i.e. until then there was always this arm team you coudl dump your bugs on as a member of another ubuntu team ;)
[17:13] <ogra_> so the arm team was split up and spread across the different other teams, more hardware was bought and now every team should have pandaboards for developemtn and testing
[17:14] <ogra_> with this split and nobody actively focusing on arm the developemtn side already works pretty well...
[17:14] <ogra_> but we are still lacking QA from the community ... so if you have a panda, feel free to help out ;)
[17:14] <ogra_> .... so much about the past ...
[17:15] <ogra_> btw, if you have any questions, feel free to just ask ...
[17:15] <ogra_> oh, i just learned that i have to driver the classbot myself :)
[17:15] <ogra_> !q
[17:16] <ogra_> !y
[17:17] <ogra_> whoops, seems tehere are issues with Classbot
[17:18] <ClassBot> prashanth asked: heard that if you get the source code using "apt-get source <package>" is old compared to ones posted in git is it true?
[17:18] <ogra> yay
[17:18] <ogra> sorry :)
[17:18] <ogra> that looks like a leftover from dholbach :)
[17:19] <ClassBot> netzvieh asked: So there won't be any ARMv6-Supoort?
[17:19] <ogra> well
[17:20] <ogra> we currently build armhf and armel architectures, while the former is still there it isnt actually actively cared for or actively supported
[17:20] <ogra> but with the begin of the quantal cycle armel was switched to build for ARMv5
[17:20] <ogra> sadly it isnt clear yet if the armel port will stay around at all
[17:21] <ogra> so for now onl yarmhf and the ARMv7 build is supported
[17:21] <ClassBot> FlowRiser asked: What does the "intel world" reference thingy mean ?
[17:21] <ogra> well, i try to make people that never got in touch with arm understand the differences
[17:22] <ogra> you surely dont want to run ubuntu on a 486 machine nowadays :)
[17:22] <ogra> and this is similar to running ubuntu on an ARMv5 system
[17:23] <ClassBot> FlowRiser asked: Does Ubuntu support ARMv8 ?
[17:23] <ogra> linaro works on the v8 port and their achievements will immediately land in ubuntu once they are done
[17:23] <ClassBot> Letozaf__ asked: I do not understand the difference between armhf and armel a part that one goes on ARMv5 and the other ARMv7. What is the diffrence?
[17:24] <ogra> CPUs have floating point units (thats what the f in armhf stands for) ...
[17:25] <ogra> older ARM ports used a software emulated floating point unitt (softfp)
[17:25] <ogra> so does for example ARMv5
[17:26] <ogra> with newer hardware actual floating point unity in hardware shoed up
[17:26] <ogra> *showed
[17:26] <ogra> thats usually the case for ARMv6 and newer
[17:27] <ogra> with the decision to make use of this floating point unit the whole archive has to be recompiled for this, hardfloat binaries can not run under a softfloat userspace (binary incompatible), so a new architecture was introduced in debian for this ... called armhf
[17:28] <ogra> thats why we currently have two arm ports (but only one supported one of which we build actual distro images)
[17:28] <ClassBot> ajitesh asked: As android kernel code has been merged with linux, will ubuntu desktops will be able to run .apk files without an emulator?
[17:29] <ogra> i dont think that enough code has been merged upstream yet to do this, once the mainline kernel fully supports this out of the box we will likely see such support in ubuntu arm
[17:29] <ogra> on the distro side nobody is actively working on it to my knowledge though (patches accepted indeed :) )
[17:30] <ClassBot> ajitesh asked: Wat about android application support in ubuntu for mobiles?
[17:30] <ogra> well, the same applies i think :)
[17:30] <ogra> i know there are community projects for this but i doubt anyone ever worked on ubuntu integration for it
[17:31] <ogra> the probelm i think is that you still need to (from a linux distro perspective) rip open a few security holes in your kernel to make it work properly
[17:31] <ClassBot> marcosb asked: ubuntu mobile isn't a environment to use ubuntu as desktop with a dock?
[17:32] <ogra> no, ubuntu-mobile is long dead ... even predates the android hype :)
[17:32] <ogra> ubuntu-mobile was actually focusing on creating a desktop for touch on MID devices
[17:33] <ogra> i think what you are talking about is ubuntu-on-android
[17:33] <ogra> about which i sadly dont have any infos, it is developed by a different team i dont work much with
[17:33] <ClassBot> marcosb asked: s/'ubuntu mobile'/'ubuntu for smartphones'/g
[17:34] <ogra> right, thats ubuntu-for-android then
[17:34] <ogra> to my knowledge this is a full yubuntu desktop you run once you dock your phone to a tablet of laptop dock ... but there isnt much more i can tell you abut
[17:35] <ogra> i dont belive you will see it in the mainline ubuntu distro, it is rather something that (by design) has to be built together with a HW vendor
[17:35] <ogra> so we had the past of arm and a bunch of questions ... lets take a look at the precence :)
[17:36] <ogra> up to quantal ubuntu arm was proivided on images that were actually speficially focusing on the target hardware with their installation ...
[17:37] <ogra> they were so special that they always needed handholding if minor HW aspewcts of an arm board changed ... not so great as you can imagine
[17:38] <ogra> so with quantal we dropped all these specialized images, if you install  on a panda today tah install is 100% identical to an install on an x86 machine ... you wont see a difference ...
[17:38] <ogra> (and in fact there isnt any beyond a different kernel and bootloader setup)
[17:39] <ogra> we also dropped a lot of the heavyweight images and only kept desktop for panda (i'll explain later why), a bunch of server images (ubuntu server was introdusced in precise for various target arches) and the netinstall images
[17:40] <ogra> the graphics driver situation on arm is way worse than i.e. nvidia or fglrx on x86
[17:40] <ogra> luckily TI managed to get us a distributable version of the driver for the pandaboard
[17:41] <ogra> with the drop of unity-2d and the full switch to needing GL capable HW on the target devices, we cant really build images for arm without having a GL capable driver installed
[17:43] <ogra> so we moved all non panda images to other desktops (i.e. for teh ac100 netbook which is widely used in the ubuntu community we switched to lubuntu-desktop) or left them as netinst images (whcih mens more complex install but also more flexibility)
[17:43] <ogra> the different sources for info about the different images are on the ubuntu wiki
[17:44] <ogra> namely: https://wiki.ubuntu.com/ARM/OMAP for the panda and beagleboard ... https://wiki.ubuntu.com/ARM/TEGRA/AC100 for ac100 netbooks and http://ports.ubuntu.com/ubuntu-ports/dists/quantal/main/installer-armhf/current/images/ for all the netboot images
[17:45] <ogra> even though there is no dedicated arm team anymore, all people with interest in ubuntu-arm usually hang around in #ubuntu-arm on freenode
[17:45] <ogra> so inb case you have any questions, want to help out with install tests, have an arm device you want to port ubuntu to (if its not the raspberry :)) or are just curious, feel free to drop by there
[17:46] <ogra> it doesnt look like there are many more questions
[17:46] <ogra> and i dont really have much more to say :)
[17:48] <ogra> ♩  ♪ ♬ ♫
[17:48] <ogra> (TheLordOfTime suggested i shoudl sing )
[17:49] <ClassBot> FlowRiser asked: ARM vs x86;
[17:49] <ogra> easy answer: http://www.googlefight.com/index.php?lang=en_GB&word1=arm&word2=x86
[17:50] <ClassBot> TheLordOfTime asked: What's the advantages/disadvantages between ARM and x86? (FlowRiser)
[17:50] <ogra> ARM draws abouth a thenth of the power of an x86 machine
[17:50] <ogra> (even the lowest end atom draws lots and lots more still)
[17:50] <ClassBot> There are 10 minutes remaining in the current session.
[17:51] <ogra> that also the reason why datacentres are massively intrested in arm, you can run a big datacenter without any air conditioning if you run it on arm machines
[17:52] <ogra> the ac100 netbook i mentioned above currently runs >8h with a 3 cell battery under ubuntu (note normal intel laptops usually have 6-9 cell ones)
[17:52] <ClassBot> goddard asked: what sorts of stuff do you do with ARM?
[17:53] <ogra> for ubuntu i just care that the images work :)
[17:53] <ogra> privately my heatinf and solar system of my house completely run under ubuntu arm driver beagleboards :)
[17:53] <ogra> http://www.grawert.net:81/
[17:53] <ogra> and http://www.grawert.net:81/rooms
[17:54] <ClassBot> paulo_gomes asked: i dont understand, so there's no arm team, who takes care of development and integration?
[17:54] <ogra> everybody !
[17:54] <ogra> the desktop team takes care for all desktop issues on x86, amd64 and arm ... server for all server issues, foundations for the plumbing etc etc
[17:55] <ogra> the work and responsibility is actually on all teams, not on a single arm team anymore
[17:55] <ClassBot> There are 5 minutes remaining in the current session.
[17:55] <ClassBot> goddard asked: What sorts of work does orgra personally do ?
[17:56] <ogra> well, taking care for the arm images, helping colleagues to get their arm systems set up, so they can fix unizty bugs etc ;)
[17:56] <ClassBot> FlowRiser asked: How can we find arm compatible hw, what do we look for ?
[17:56] <ogra> if you want the best ubuntu support, go to pandaboard.org
[17:56] <ClassBot> paulo_gomes asked: any links of use of ARM in home automation?
[17:57] <ogra> i think i linked the stuff i used from the pages above (on grawert,net)
[17:57] <ogra> there are also some infos on http://ograblog.wordpress.com/, i usually blog about changes to my home automation thingies :)
[17:58] <ogra> (and usually also link to the SW i use)
[17:58] <ogra> k, seems the time is up, thanks for participating everyone !
[17:58] <bilal> Thanks to you too, ogra, that was an informative session
[17:59] <ogra> if you have any more questions etc, i'm available in #ubuntu-arm around european business hours usually
[17:59] <ogra> and many thanks to the organizers of this event, you guys do an awesome job !
[18:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
[18:00] <bilal> Hello everyone! Welcome to the session about Ubuntu development for the youth!
[18:01] <bilal> I'm Bilal Akhtar, and I've been involved in the Ubuntu community for two years now
[18:02] <bilal> As you'll soon learn (or, see), there's a lot more to contributing to Ubuntu than just coding, and there are lots of ways to chip in!
[18:03] <bilal> During the course of this session, if you have any questions, feel free to ask them on #ubuntu-classroom-chat, in this format:
[18:03] <bilal> QUESTION: Why is Ubuntu so awesome?
[18:03] <bilal> and then I'll answer them in this channel
[18:04] <bilal> So, let me start by giving a summary of what Ubuntu development actually is
[18:04] <bilal> Daniel Holbach's session earlier today, titled "Introduction to Ubuntu Development" was a detailed 1-hour session just about this
[18:05] <bilal> I'll only briefly explain it, for more details you can read the IRC logs of that session
[18:05] <bilal> Ubuntu is a complete operating system, but it is built out of small segments called packages
[18:07] <bilal> Every package is written in a particular programming language, then compiled to create a binary package
[18:07] <bilal> the Ubuntu Installer, which you used to install your system, did little more than extract several binary packages
[18:08] <bilal> A frequent question I get from prospective developers, is "Which language is Ubuntu written in? Which language should I learn in order to start developing for Ubuntu?"
[18:09] <bilal> Most core Ubuntu packages, like the kernel (the software that manages hardware/software linkage, manages drivers and hardware, etc), low-level libraries, etc are written in C
[18:10] <bilal> Desktop packages, which form the front-end of Ubuntu, are written in different languages. Most are written in either C, C++ or Python
[18:11] <bilal> Which is why I suggest anyone interested in learning to help in Ubuntu development to learn Python
[18:12] <bilal> Some examples of desktop packages are Software Center (written in Python), Unity (written in C++), Nautilus the file manager (written in C), Gwibber the Twitter client (written in Python), etc
[18:12] <bilal> I choose Python because it's easy to learn from the ground up, and it teaches you the basic fundamentals of programming too, so you can later move on to learning C
[18:13] <ClassBot> FlowRiser asked: Any tips on where to start looking for python/cpp tutorials ?
[18:13] <bilal> Great question
[18:13] <bilal> For Python, I'd suggest you learn using the official Python docs and tutorials
[18:13] <bilal> http://docs.python.org/
[18:14] <bilal> The tutorial is at http://docs.python.org/tutorial/index.html
[18:15] <bilal> For C++, there are hundreds of tutorials. cprogramming.com and cplusplus.com are the popular ones
[18:15] <bilal> There are many others a Google away in case you don't like these
[18:15] <ClassBot> coalitians asked: Is it true java is not favoured(used) in the ubuntu community?
[18:16] <bilal> Java is used quite a bit, but not as much compared to C or Python
[18:16] <bilal> As an example, LibreOffice is written in Java
[18:16] <bilal> There are many examples of Java software in the Ubuntu community
[18:18] <bilal> Another example is Eclipse. But the examples are fewer compared to C or Python, mainly because Java requires a VM to run, like OpenJDK or Sun's Java VM
[18:18] <bilal> If you know Java already, I'd suggest you to learn C too, since Java and C are very similar
[18:18] <bilal> and C is widely used in the Ubuntu community
[18:19] <ClassBot> CuppaT asked: Could you suggest a python IDE please?
[18:19] <bilal> Personally, I like Vim. But it has a learning curve which many of you might not like
[18:20] <bilal> So I'd suggest Gedit, which comes pre-installed and is easy to use
[18:21] <bilal> Geany is also a great light-weight IDE
[18:21] <bilal> Go with either of the two, and you'll be fine
[18:21] <ClassBot> coalitians asked: Are python application in Ubuntu(linux) are being migrated to 3.x versions?
[18:21] <bilal> Yes, and no. Python 3.x is backward incompatible with 2.x code, which is why some applications haven't moved over
[18:22] <bilal> If you're starting from scratch, I'd recommend you to learn Python3
[18:23] <bilal> Very soon, we hope to get everything on the Ubuntu CD moved over to Python 3 so Python 2 can be dropped
[18:23] <bilal> Most libraries have different versions of Python 2 and Python 3 already
[18:23] <ClassBot> thotp asked: what are the main differences between c/c++ programming on ubuntu and windows?
[18:24] <bilal> Ubuntu has a different software stack. Ubuntu uses GTK+ and QT libraries for graphical applications, to render buttons, text boxes and all. Windows uses WPF and WinForms
[18:24] <bilal> But the base syntax is the same
[18:24] <bilal> and GTK+ and Qt applications can work on Windows to
[18:24] <bilal> *too
[18:25] <bilal> On a side note, if you want to know more about Python 3, attend barry's session right after this
[18:25] <bilal> back on Windows vs Ubuntu c++, if you learn C/c++ on either side, you learn the syntax which means you'll be right at home on the other side
[18:26] <bilal> preferably learn it on Ubuntu, since that's the platform you'll be coding for4
[18:26] <ClassBot> kamilnadeem asked: For someone who is starting in CS, where to begin from?
[18:27] <bilal> You'll likely be learning multiple programming languages at college/univ
[18:27] <bilal> They will be teaching you C for sure
[18:28] <bilal> I'll answer the rest of your question later on, as I explain "where to start"
[18:28] <ClassBot> eklok asked: what makes a good programmer in ubuntu? how many hours per day do you have to invest?
[18:28] <bilal> It has nothing to do with the number of hours
[18:28] <bilal> Quantity != quality
[18:29] <bilal> Many of you have tight schedules
[18:29] <bilal> I myself spend more than half of my day at shcool
[18:29] <bilal> *school
[18:29] <bilal> I, for example, can get many contributions done within an hour
[18:29] <bilal> Others may take longer
[18:30] <bilal> So, to become a good programmer, you just need to find the right thing to do, something which you like. Again, I'll answer this later on, in the "where to begin" part
[18:30] <bilal> on where you should start your journey in the Ubuntu communtiy
[18:30]  * bilal is really making too many typos today
[18:30] <ClassBot> thotp asked: so what is the best c/c++ IDE in ubuntu?
[18:30] <bilal> Geany and/or Gedit.
[18:31] <ClassBot> FlowRiser asked: Regarding to developing cpp applications for ubuntu,do you recommend any good books/tutorials ? (regarding to best practices, GUI, etc)
[18:31] <bilal> Good question
[18:31] <bilal> As for tutorials, you can learn graphical programming from Gtk's online docs
[18:31] <bilal> or bare-bones C++ programming, which you should learn before GTK, from cplusplus.com
[18:32] <bilal> I prefer online tutorials over books
[18:32] <bilal> Many of you will be learning programming in school/college/university
[18:32] <bilal> so that's a good starting point
[18:32] <bilal> However
[18:33] <bilal> in the Ubuntu community, you'll "learn by doing"
[18:33] <bilal> which will be way more helpful than anything school or college can teach you.
[18:34] <ClassBot> kamilnadeem asked: Not at school or college but learning it by oneself? I am pursuing a course under Hardware and Networking BTW. :-)
[18:34] <bilal> In that case, you can just learn from an online tutorial, like I mentioned above
[18:34] <ClassBot> kamilnadeem asked: Also how does one progress in languages, general consensus is that Python is the one, one should pickup in CS. How does one scale up the languages.
[18:34] <bilal> If you're starting from scratch, learn Python, then C, then C++
[18:34] <bilal> then other languages
[18:34] <bilal> if you know one language already, like many high school students and university students learn Java early
[18:34] <bilal> then Java -> C -> Python
[18:35] <ClassBot> raki1 asked: GTK+ or QT be better in ubuntu?
[18:35] <bilal> Both are equally good, to be honest
[18:35] <bilal> Qt is superior in some ways, GTK+ is easier to learn in my opinion
[18:35] <bilal> pick your favourite
[18:35] <ClassBot> SamTate asked: Do you think that Vala is the next thing to do after learning some JS and basic PHP?
[18:36] <bilal> Vala is a clean language indeed
[18:36] <bilal> But I'd suggest new programmers to give it lower priority than the others, since Vala simply isn't very commonly used
[18:37] <bilal> After JS and PHP, C would be the logical way forward
[18:37] <bilal> Time to move on
[18:37] <bilal> Now, for the "why" aspect. Why, as youth, should you be interested in Ubuntu development?
[18:37] <bilal> There are numerous reasons
[18:38] <bilal> First, like I mentioned in an answer to a question above, you'll learn by doing
[18:38] <bilal> which will help you in programming way more than any other school/university course will
[18:38] <bilal> You'll learn to solve critical problems
[18:39] <bilal> You'll get the assistance of thousands of talented Ubuntu developers around the world
[18:39] <bilal> You'll learn to collaborate with a team
[18:39] <bilal> and you'll get to meet new people
[18:40] <bilal> As an added bonus, it will look good on your resume, if you're going in the CS/engineering field
[18:41] <bilal> and it will give you experience in programming, and make you a better programmer
[18:41] <bilal> It will set you apart from your peers in school or college
[18:41] <bilal> and contributing to Ubuntu is a really, really good way to spend time
[18:42] <bilal> spare time, that is
[18:42] <bilal> Some of you might think that it might be too much of a time waste
[18:42] <bilal> well, the good thing here is, that it's totally up to you to contribute
[18:43] <bilal> you can spend as much or as little time as you want
[18:43] <bilal> whenever you want
[18:43] <bilal> and if you're stuck, there are people out here to help you
[18:44] <bilal> on IRC (#ubuntu-devel for Ubuntu development, #ubuntu-app-devel for app development, #ubuntu-motu for packaging, etc)
[18:44] <bilal> on community support sites like Ask Ubuntu and Ubuntu Forums
[18:44] <bilal> and on mailing lists like ubuntu-devel@lists.ubuntu.com and ubuntu-motu@lists.ubuntu.com
[18:44] <ClassBot> raki1 asked: any gtk learning resources or guides?
[18:44] <bilal> The official GTK docs are great
[18:45] <bilal> http://developer.gnome.org/ has tutorials
[18:45] <ClassBot> helderc asked: Where Ubuntu (I mean Ubuntu not Kubuntu) uses Qt?
[18:45] <bilal> Unity 2d, for example, used Qt
[18:45] <bilal> Quite many applications use Qt
[18:45] <bilal> Ubuntu treats Qt as a first class citizen
[18:45] <bilal> http://www.markshuttleworth.com/archives/568
[18:46] <ClassBot> mesutcangurle asked: Why Ubuntu doesn't have a junior tasks for new comers or mentors for new comers.
[18:46] <bilal> Which is exactly what I'm getting to
[18:46] <bilal> Now, for the part about where you should start
[18:46] <bilal> Many of you wondered if development will be too hard or boring
[18:46] <bilal> there are multiple ways to help out
[18:47] <bilal> You can contribute to Ubuntu, by helping an upstream project in development. Like in the case of Nautilus the file manager. You can look at the list of bugs on Launchpad: http://launchpad.net/ubuntu/+source/nautilus/+bugs
[18:47] <bilal> download the source code, fix it and submit a patch upstream
[18:48] <bilal> more info on that, on tumbleweed's session tomorrow
[18:48] <bilal> Or you can help triage bug reports. triaging is basically reviewing bug reports from users
[18:49] <bilal> finding duplicates , asking users for more information, etc
[18:49] <bilal> moreinfo on http://wiki.ubuntu.com/Bugs
[18:49] <bilal> or you can help in translation
[18:49] <bilal> you can help in translating Ubuntu to another language
[18:50] <bilal> https://wiki.ubuntu.com/Translations
[18:50] <bilal> Or you can test newer Ubuntu releases in development, report bugs, etc
[18:50] <ClassBot> There are 10 minutes remaining in the current session.
[18:50] <bilal> You can write documentation too
[18:51] <bilal> or help new users out at Ubuntu, on sites like AskUbuntu, Ubuntu Forums, IRC (#ubuntu), etc
[18:51] <bilal> If you're stuck with anything, the mailing lists and IRC are always on your side
[18:51] <bilal> questions time!
[18:52] <bilal> Okay, so I'll answer some FAQs I often get from prospective young developers
[18:53] <bilal> First one is, do you get paid to contribute to Ubuntu?
[18:53] <bilal> I answer that with: "You get paid, not in money, but in knowledge"
[18:53] <bilal> Second is, how do you get upload rights to Ubuntu
[18:54] <bilal> There are many different types of Ubuntu developers
[18:54] <bilal> https://wiki.ubuntu.com/UbuntuDevelopers
[18:54] <bilal> each have upload rights to a specific part of the Ubuntu archive
[18:54] <bilal> once you have a history of strong contributions, you can apply for upload rights
[18:55] <bilal> one thing which I missed above, in the ways to help Ubuntu, was packaging
[18:55] <bilal> you can help to create packages out of upstream packages
[18:55] <bilal> this was explained in Daniel's session on intro to ubuntu development
[18:55] <ClassBot> There are 5 minutes remaining in the current session.
[18:55] <bilal> you can learn packaging from developers.ubuntu.com
[18:56] <ClassBot> FlowRiser asked: How can i develop greeters for Ubuntu ?
[18:56] <bilal> Umm, you mean lightdm greeters?
[18:56] <bilal> Consult the lightdm documentation
[18:56] <bilal> I don't know much about that, sorry
[18:56] <ClassBot> ajitesh asked: which is better pyhton or c++ for ubuntu dev?
[18:56] <bilal> C/c++ is more powerful, Python is easier to learn
[18:57] <bilal> really depends on what you're writing
[18:57] <bilal> for a user-facing application, Python is usually better
[18:57] <bilal> for low-level drivers, etc, C is better
[18:57] <ClassBot> _ericcc asked: Do ubuntu loco teams have access to a list of projects they can under take to help out?
[18:57] <bilal> Many LoCo team actively maintain projects
[18:58] <bilal> Some even maintain development
[18:58] <bilal> others just help in translation
[18:58] <bilal> It depends for each LoCo
[18:58] <bilal> so contact your LoCo team.
[18:58] <bilal> As with the case with all open source projects, everyone is allowed to help out
[18:58] <ClassBot> mesutcangurle asked: why ruby is not used commonly like Python?
[18:59] <bilal> Ruby has picked up more traction on the web
[18:59] <bilal> There's no way to answer "why" it isn't common
[18:59] <bilal> but that's just the way it is
[18:59] <bilal> on Ubuntu, that is
[18:59] <bilal> so, that's it!
[18:59] <bilal> I hope you liked the session
[19:00] <bilal> the logs will be available soon, on irclogs.ubuntu.com
[19:00] <bilal> in case you missed part of this session
[19:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.
[19:01] <barry> hello everyone.  i'm barry warsaw and today i'll be giving a talk on python 3
[19:02] <barry> this is a broad topic, and there's way too much to cover in one hour so i'll probably be going fairly quickly to cover as much as possible
[19:02] <barry> it will really help if you at least already know pytho n2
[19:02] <barry> *python 2
[19:02] <barry> please join #ubuntu-classroom-chat and ask questions at any time!
[19:03] <barry> i'll be covering some of the new features in python 3, as well as porting strategies
[19:03] <barry> but i won't be talking much about porting c extensions or deb/ubu packaging (unless there's time)
[19:04] <barry> i probably won't be covering much of the py3 features that are already available in py2, except to the extent that it helps with explaining how best to port stuff
[19:04] <barry> i'll be providing lots of links with other resources you can read for much more detail
[19:05] <ClassBot> ben72 asked: ​ is there a way to run both python 2 and 3 in the same ubuntu system?
[19:06] <barry> ben72: yes.  running 'python' (aka /usr/bin/python) on any ubuntu system will run the latest version of python 2, which for ubuntu 12.04 onward is python 2.7
[19:07] <barry> to run python 3 apps you need to explicitly run 'python3' or /usr/bin/python3
[19:07] <barry> same for #! lines
[19:07] <barry> i can talk about the difference between python 3.2, the default in ubuntu currently and python 3.3 later if you're interested
[19:08] <barry> hopefully, this will get you excited about python 3 -- it's fun!
[19:08] <ClassBot> NickE68 asked: ​ Will Quantal be using Python 3.3?
[19:09] <barry> NickE68: no, python 3.2 will be the default python 3 version because 3.3 was not ready in time for feature freeze.  3.3 will likely be the default in 13.04
[19:09] <barry> quantal does have 3.3 available though: apt-get install python3.3
[19:09] <barry> and invoked via 'python3.3'
[19:09] <barry> so you can play with the newest features easily
[19:10] <barry> also, i fully expect that 12.10 will get a ffe for the final release of 3.3 when it comes out
[19:10] <barry> so, to summarize: quantal will have 2.7, 3.2 and 3.3 with the former two as the defaults
[19:10] <barry> so, why port to python 3?
[19:11] <barry> there will never be a python 2.8.  i can pretty much guarantee that :)
[19:11] <barry> which implies that py2 will never get any new features
[19:11] <barry> and diminishing bug fixes, though the official maintenance policy is longer than usual
[19:12] <barry> eventually 2.7 will only get security fixes, but i suspect upstream devs will become less interested in maintaining 2.7 as time goes on
[19:12] <barry> modules will rust
[19:12] <barry> py2 also has many warts, some big some small
[19:12] <barry> and, most importantly imo: py3 fixes the whole bytes vs text problem
[19:12] <barry> (mostly :)
[19:13] <barry> meaning, we have potential to make much more robust py3 apps for non-english locales
[19:13] <barry> i will talk more about bytes v. strings later
[19:13] <barry> what are ubuntu's py3 plans?
[19:14] <barry> we are on a long journey to deprecate python2.  we had hoped to port everything on the install images to py3 for 12.10, but we've hit a few big blockers so that won't happen in 12.10
[19:14] <barry> maybe for 13.04, definitely for the next lts
[19:15] <barry> py2.7 will never be *removed* from the archive, but it will likely only be in universe for 14.04 if we can get away with it
[19:16] <barry> if there are no questions related to ubuntu's py3 plans, let's talk about porting
[19:16] <barry> let me give you a few links first
[19:16] <barry> this is one of the very best resources available for understanding how to port your py2 code to py3:
[19:16] <barry> http://python3porting.com/
[19:17] <ClassBot> coalitians asked: So since the development for 12.10 is freezed, there are no ongoing porting activities now?
[19:17] <barry> coalitians: we will definitely have a ffe for the gwibber backend service py3 port.  there may be a few others, but we're largely done with our porting efforts for 12.10.  from here on, it will be bug fixing
[19:18] <barry> the above link talks about strategies, gives code samples for conversion of common idioms, a little bit about c extensions, and much more
[19:18] <barry> i have written a number of blog posts that you might find helpful:
[19:18] <barry> http://tinyurl.com/7tb3jkn
[19:19] <barry> http://tinyurl.com/7famvx3
[19:19] <barry> http://tinyurl.com/6ufpvfq
[19:19] <barry> there's also a good page in the ubuntu wiki with specific porting help, including how to package python libraries and apps either for py3 alone, or for dual py2/py3 versions
[19:20] <barry> https://wiki.ubuntu.com/Python/3
[19:20] <barry> i will also give you this link to a talk from pycon 2012.  i highly recommend you watch this before you do any significant py3 work.  it is the single best description of the bytes vs. strings issue i've seen.  really a great talk:
[19:20] <barry> http://pyvideo.org/video/948/pragmatic-unicode-or-how-do-i-stop-the-pain
[19:21] <barry> okay, so let's talk for a moment about some porting strategies
[19:22] <barry> let me say first that if you are starting a brand new python project, i would suggest going straight to py3.  one caveat is that you need to make sure any dependencies (i.e. 3rd party libraries you might want to use) are already available for py3, in ubuntu
[19:22] <barry> we've worked hard these last few cycles to make sure upstreams w/ py3 support have been packaged for deb and ubu
[19:22] <barry> and we've done some upstream porting work ourselves (e.g. dbus-python)
[19:23] <barry> of course, not everything is available, but *a lot* is, so you're probably in great shape with quantal
[19:23] <ClassBot> roadmr asked: what's the recommended path if I want to port an application using gstreamer to Python3?
[19:24] <barry> roadmr: i don't have a lot of experience w/gstreamer unfortunately, so i'm not sure if a py3 version is available, and if so, where (upstream, debian, ubuntu)
[19:24] <barry> i *think* it's not yet, but don't quote me on that :)
[19:25] <barry> so that's for new code, what about porting existing code to py3?
[19:25] <barry> ask this question: do you need to keep py2 support, and if so, how far back do you need to support?
[19:25] <barry> i would *highly* recommend nothing older than py2.6 (which actually is no longer available in quantal anyway)
[19:25] <barry> and would recommend at least py2.7 for some very useful features (e.g. the new unittest library)
[19:26] <barry> the thing is: py2.7 and to some extent 2.6 has lots of backported features that can make porting, and supporting py2 and py3 much easier
[19:26] <barry> through things like "from __future__ import"s
[19:27] <barry> so, when starting a porting effort, the first thing to do is to run your code with 'python2.7 -3'
[19:27] <barry> that -3 flag will cause python to warn you about any idiom that cannot be easily ported with the 2to3 program (more on that later)
[19:27] <barry> if your py2 program runs cleanly with 'python2.7 -3' then you're in pretty good shape for starting your py3 port
[19:28] <barry> 2to3 is a code transformation framework that can take most common py2 idioms and convert them on the fly to py3
[19:28] <barry> my personal opinion is that its output is useful but shouldn't be used "in production".  it's a bit too slow in the dev cycle for me.
[19:28] <barry> but it's pretty flexible
[19:29] <barry> my own recommendation is to use a single code base and just be careful about how you code.  use from-future imports as much as possible
[19:29] <barry> also there's a third party 'six' library (apt-get install python-six i believe) that can make a single code base easier to maintain
[19:30] <barry> but here's the most important thing you need to do before you port, and it segues into my next topic:
[19:30] <barry> you must be *crystal clear* about the distinction in your data model between bytes (i.e. binary data) and strings (i.e. human readable text)
[19:31] <barry> if you are getting lots of UnicodeErrors in your py2 code, it's a sign that you are not crystal clear :)
[19:31] <barry> and that is one of the biggest benefits (and frankly headaches while porting) of py3.  the requirement to be clear means that once you've done so, your non-english users won't be getting UnicodeErrors
[19:32] <ClassBot> BlessJah asked: is it possible to write to write py3 code that would run also in py2 environment?
[19:32] <barry> BlessJah: that's not really much different than writing py2 code that runs in a py3 environment.  yes, its very definitely possible
[19:33] <barry> so, hopefully everyone understand the difference between bytes and strings
[19:33] <barry> bytes are binary data, e.g. possibly images, audio, stuff like that
[19:33] <barry> strings are human readable text
[19:33] <barry> in py2 you had two "string" types, str which were also called 8-bit strings and they served as ascii text and binary data
[19:34] <barry> and unicodes which are just that, unicode human readable text
[19:34] <barry> the big py2 problem was that python auto-coerced between the two, often in ways that were not correct, leading to dreaded UnicodeErrors
[19:34] <barry> in py3 you have bytes which are *only* binary data
[19:34] <barry> and str which are unicodes
[19:35] <barry> and there is no auto-conversion
[19:35] <barry> you cannot concatenate the two without explicitly converting
[19:35] <barry> so if you have a unicode string, you can encode it to bytes, but you must know the encoding (e.g. utf-8 usually, but maybe latin-1 or any of the other multitude of encodings available)
[19:36] <barry> to go from bytes to str, you must decode, again by being explicit about the encoding
[19:36] <barry> an important thing to remember now too is that in py3, by default open() will open a file in binary mode and you read bytes out of it, *not* text
[19:37] <barry> unlike in py2, py3's open() takes an encoding argument, so if you call it like so: open('myfile', encoding='utf-8')
[19:37] <barry> you will be reading unicode strings from the file
[19:37] <barry> which is very nice (assuming of course that the contents of your file is utf-8 encoded strings :)
[19:38] <barry> in py3, there is no more u'' prefix for strings.  unadorned string literals are unicodes
[19:38] <barry> (aside: the u'' prefix is reintroduced in py3.3 but essentially noops)
[19:38] <barry> to write bytes literals, you use the b'' prefix
[19:38] <barry> e.g. this is bytes: b'foo'
[19:38] <barry> and this is str: 'foo'
[19:39] <barry> one other quick note about this: you can now safely use the gettext module in py3 since it always returns unicodes from catalog lookups :)
[19:39] <barry> are there any questions about bytes vs strings before i move on?
[19:40] <ClassBot> NickE68 asked: ​ What if you don't know the encoding used for some file? Is there lib that can produce a 'best guess'?
[19:41] <barry> NickE68: there is, but i'm blanking on the name of it.  i believe it comes out of mozilla.  in general, it's much safer to know
[19:41] <barry> you can also try some of the most common ones, e.g. utf-8 first, then latin-1
[19:41] <barry> then ascii
[19:41] <ClassBot> roadmr asked: gettext, "it always returns unicodes". Do you mean "strings" here, as opposed to "bytes"?
[19:42] <barry> roadmr: yes.  in py2 unfortunately, gettext.gettext('foo') always returned an 8-bit string, which really causes problems, and the api for getting (py2) unicodes is pretty well hidden and not the default
[19:42] <barry> in py3, gettext.gettext('foo') always returns a str, aka a unicode
[19:43] <barry> jtaylor: reminds me that it's python-chardet.  thanks!
[19:43] <barry> cool. so, in the remaining 17m or so, i'm going to give a whirlwind tour of some of the changes and new features in py3 to be aware of
[19:43] <barry> this is by no means exhaustive!
[19:44] <barry> there are "what's new" documents out there for each individual version of python 3, but afaik, no overarching list of differences b/w say py2.7 and py3.2
[19:44] <barry> though the pythonporting url i gave above comes pretty close
[19:45] <barry> so, let's begin, and please ask about further details at any point
[19:45] <barry> many parts of the stdlib have been reorganized
[19:45] <barry> this means that some old, unsupported modules have been removed
[19:46] <barry> probably nothing you care about unless you're doing image processing on irix and then why are you here? :)
[19:46] <barry> many modules have been moved around, some placed inside of packages
[19:46] <barry> e.g. the very common 'urlparse()' function now lives in urllib.parse.urlparse()
[19:47] <barry> http://docs.python.org/py3k/library/ is your best friend
[19:47] <barry> some builtins have been removed or moved
[19:47] <barry> e.g. the reload() builtin has been moved to imp.reload()
[19:48] <barry> for the builtins that have been removed, there's usually a good alternative
[19:48] <barry> e.g. callable() is gone, but you can test for callability either by just calling it <wink> or through the inspect module
[19:49] <barry> one big change that gave me much finger pain until i re-taught the muscle memory (and started using "from __future__ import print_function" in my py2 code)
[19:49] <barry> is that the print statement has become a function
[19:49] <barry> e.g. print('hello world')
[19:49] <barry> this was very jarring, but it makes great sense, and eventually you'll come to appreciate this change :)
[19:50] <barry> you know how python2 has essentially two types of classes?  classic classes and "new style" classes?
[19:50] <ClassBot> There are 10 minutes remaining in the current session.
[19:50] <barry> py3 gets rid of classic classes.  all classes in py3 are "new style"
[19:50] <barry> so that means you no longer have to inherit from object
[19:51] <barry> or use the "__metaclass__ = type" trick to get all the great features of "new style" classes
[19:51] <barry> i guess that means we have to stop calling them "new style" :)
[19:51] <barry> py2 has two types of integer, int and long
[19:51] <barry> py3 does away with this and has only one integer type, int
[19:52] <barry> it automatically knows to use the more efficient internal representation for smaller ints and the expensive representation for bigger ints
[19:52] <barry> there is no more 'L' suffix on int literals
[19:52] <ClassBot> jsjgruber-l82-p asked: Any high precision float types in py3?
[19:53] <barry> jsjgruber-x-p_: i think so, but i do so little math in python, i can't help much with that
[19:53] <barry> i know there's a decimal type (though it's not built-in)
[19:54] <barry> the dict.iter*() methods are gone in py3. i.e. no more .iterkeys(), .itervalues(), or .iteritems()
[19:54] <barry> just use .keys() et al, and remember that they return iterators in py3 *not* concrete lists
[19:54] <barry> you might need to wrap the return value in list(dict.values()) for example
[19:55] <barry> the syntax for catching exceptions has changed (though also available in py2.6 and 2.7)
[19:55] <barry> gone is "except Foo, e"
[19:55] <barry> use
[19:55] <barry> "except Foo as e" instead
[19:55] <barry> instead of the exec statement, use the exec() function
[19:55] <ClassBot> There are 5 minutes remaining in the current session.
[19:55] <barry> file() builtin is gone, use open()
[19:56] <barry> no more xrange().  go back to range() which now returns an iterator
[19:56] <barry> as does filter() and map()
[19:56] <barry> (again, you might need to wrap them in list() to get a concrete list)
[19:56] <barry> absolute imports are the default, you must be explicit about relative imports
[19:57] <barry> okay, there's no way i'm going to finish. so are there any last minute questions?
[19:57] <barry> :)
[19:57] <barry> i'll just keep typing until classbot shuts me up
[19:57] <barry> 1 / 2 returns 0.5 now
[19:57] <barry> use 1//2 to get the old floor division behavior
[19:57] <ClassBot> coalitians asked: Barry, How and where should we get started to be part of ubuntu python community?
[19:58] <barry> coalitians: i would highly suggest joining the debian python community over on OFTC #debian-python.  #ubuntu-devel is good too, as is #python on freenode
[19:58] <barry> there isn't a dedicated ubuntu python forum though.  maybe there should be!
[19:59] <ClassBot> NickE68 asked: ​ Is there a place listing packages for which porting help is required (for 13.04 now, I guess)?
[19:59] <barry> NickE68: yes:
[19:59] <barry> https://docs.google.com/a/canonical.com/spreadsheet/ccc?key=0AiT4gOXSkmapdFA1anRkWERsaXgtWnllUG9QWXhDVWc&pli=1#gid=0
[19:59] <barry> https://blueprints.launchpad.net/ubuntu/+spec/foundations-q-python-versions
[19:59] <barry> https://wiki.ubuntu.com/Python/FoundationsQPythonVersions
[20:00] <barry> please ping me in #ubuntu-devel for more info.  we'd *love* the help!
[20:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html
[20:18] <cc_INC> I'm probably too late...
[20:18] <pleia2> !logs
[20:18] <ClassBot> Logs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/
[20:18] <pleia2> :)
[20:19] <cc_INC> Hey that's great pleia2, thanks!!!
[20:19] <pleia2> sure
[20:19] <cc_INC> You're a star...cheers...
[20:19] <BlessJah> k 11
[20:37] <DarkStorm_> Hello, people! I would have joined yesterday but Hurricane(?) Isaac killed my power :<
[20:43] <netzvieh> hi DarkStorm_
[20:44] <DarkStorm_> hello
[21:00] <chilicuil> otro gran cambio, que me trajo muchos problemas, al menos hasta que aprendi la nueva forma (y despues de empezar a usar "from __future__ import print_function" en mi codigo py2)