=== Alan_ is now known as Guest67250
=== cyrex is now known as luisalvarado
cc11rocksI 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:05
tsimpsoncc11rocks: everything in this channel is logged, so you'll find the complete log on irclogs.ubuntu.com06:06
cc11rocksOkay, thanks06:06
cc11rocksWill the meeting be very detailed or more of an overview?06:07
tsimpsonat a guess, I'd say more of an overview, but there'll likely be pointers to more information on the web etc06:10
cc11rocksAlrightly, thank you06:15
tsimpsonno problem :)06:16
=== davlefou_ is now known as davlefou
=== mat_benjut is now known as bukan_mamat
=== bukan_mamat is now known as quixotden
=== quixotden is now known as quixotedon_shema
=== quixotedon_shema is now known as quixotedon_cute
=== quixotedon_cute is now known as quixotedon_macho
=== Madmike is now known as PJaros
=== raj is now known as virtuaposta
ge0rgeless than 4 hours left :)11:07
shabiitdwatz the starting time in GMT??11:13
tsimpsonshabiitd: 15:0011:15
=== D is now known as Guest19467
=== JW is now known as Guest66570
=== tho is now known as Guest10955
=== chb is now known as Guest30755
Guest30755when it starts?14:35
raju25 min more14:35
PaoloRotoloHi all!14:52
jokerdinohi PaoloRotolo14:52
neotericsssh... settle in your seat, it will be starting soon :)14:53
arvislacis1Any way how to turn off notifications for logging in and out users?14:55
arvislacis1Or nice IRC client for doing that?14:55
thotphi everyone :))14:55
=== Madmike is now known as PJaros
arvislacis1dholbach: Thanks14:56
mirbahola gente14:56
galacticboyI'm excited open Linux Classroom!14:56
mirbahello averybody14:56
dholbacharvislacis1, without the leading space14:56
smartboyhwSit back and enjoy:)14:56
neotericdholbach: how do you "unignore" or does it just reset when you leave and rejoin?14:58
dholbachneoteric, I guess it resets14:58
KaceIt doesn't work14:58
dholbachsome clients might not support it14:58
KaceWhat client are you using?14:58
thotpit's time14:59
PaoloRotoloSmuxi :)14:59
nohtypeXchat, right click on #ubuntu-classroom (left menu), Settings, mark Hide Join/Part Messages14:59
dholbach H E L L O   M Y   F R I E N D S !15:00
dholbachWelcome to another Ubuntu Developer Week!15:00
exodusdholbach, o/15:00
conner_bwThanks nohtype!15:00
bilalwait, isn't it moderated?15:00
conner_bwWas just about to ask.15:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Introduction to Ubuntu development - Instructors: dholbach
dholbachHere we go!15:00
dholbachBefore we start off, here just a few pointers which should generally help you through the event.15:01
dholbachFirst of all: make sure you also join #ubuntu-classroom-chat15:01
dholbach#ubuntu-classroom is just for the session itself, all the chat, discussion and questions happen in #ubuntu-classroom-chat15:01
dholbachif you have a question you want to be answered in the session, please prefix it with QUESTION:15:01
dholbachie, QUESTION: Can you recommend any good music for a late-night hacking session?15:02
dholbachalso have a look at https://wiki.ubuntu.com/UbuntuDeveloperWeek because all the session information is on there15:02
dholbachTwo questions which come up frequently are: will there be logs?15:02
dholbachyes, we will also put them up on https://wiki.ubuntu.com/UbuntuDeveloperWeek/15:03
dholbachand the second one is "how can I ignore all the joins/parts of people?"15:03
dholbachwithout the " obviously15:03
dholbachsome IRC clients might not support this though15:04
dholbachalright - that's everything organisational from me for now15:04
dholbachLet's start the first session!15:04
=== zen is now known as Guest54747
dholbachMy name is Daniel Holbach, I've been working on Ubuntu for almost all of its life and always loved our Developer community15:04
dholbachfor a years I've been working for Canonical now, first working on the Desktop, then moving on to work with our Developer community15:05
=== prashanthsunder9 is now known as prashanth
dholbachin this first session I want to give you an overview over how Ubuntu development generally works15:05
dholbachthere 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
dholbachin this first session I just want to give you a broad overview, so you at least heard all the most important things once15:06
dholbachand to answer as many questions as we possibly can :)15:06
dholbachIf I'm too fast or don't make sense, please speak up. :)15:07
dholbachUbuntu is made up of thousands of different components, written in many different programming languages. Every component - be it a software library, a tool or a graphical application - is available as a source package.15:07
dholbachSource 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:07
dholbachOnce this source package is compiled, the build process provides binary packages, which are the .deb files users can install.15:08
dholbachEvery time a new version of an application is released, or when someone makes a change to the source code that goes into Ubuntu, the source package must be uploaded to Launchpad’s build machines to be compiled.15:08
dholbachThe 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
dholbachvery 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:09
dholbachAlso 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
dholbachUbuntu’s development is very much dependent on the current stage of the release cycle.15:11
dholbachWe release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.15:11
dholbachWith every freeze date that is reached developers are expected to make fewer, less intrusive changes.15:11
dholbachIf 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
dholbachYou can see that we just went past Feature Freeze.15:12
dholbachFeature 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
dholbachThe rest of the cycle is supposed to be focused on fixing bugs.15:12
=== jeff_ is now known as Guest22207
dholbachAfter 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
dholbachFrom the beta release onwards, only critical bugs get fixed and a release candidate release is made and if it does not contain any serious problems, it becomes the final release.15:13
dholbachAny questions so far?15:13
dholbachCome on, don't be shy. :)15:13
ClassBotmarcos asked: QA in this context is Question and Answer?15:14
dholbachmarcos, sorry, I could have made it clearer - no, QA in the sentence above meant "Quality Assurance"15:15
dholbacheverything that goes from pro-active testing (test suites run automatically and manual testing) to work on bug reports, testing CD images, etc.15:15
dholbachQA is what makes Ubuntu not good, but great :)15:16
ClassBotconner_bw asked: What is the criteria for " it does not contain any serious problems"15:16
dholbachconner_bw, that's not always a clear-cut decision, but data-loss, critical program crashes and things like that certainly count as show-stoppers15:17
ClassBotagmenor_ asked: As an app developer, which version should  I be running ? When ?15:17
dholbachClassBot, 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 machine15:17
dholbachyou need to be able to test the changes you want to introduce into Ubuntu in a live environment15:18
ClassBotpaulo_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
dholbachClassBot, 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 freeze15:18
dholbachbut the later in the cycle, the harder it will be to get it past the release team15:18
dholbachbut for a good reason: we need to have time to test things15:19
dholbach(I'll talk more about this later on.)15:19
ClassBotconner_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:19
=== nick is now known as Guest24273
dholbachconner_bw, sometimes a decision must be made to keep the release rolling out on the right day - it's not always easy15:20
ClassBotLiverpudlian asked: Is developing apps different when it comes to LTS versions?15:20
=== arvislacis is now known as Guest35542
dholbachLiverpudlian, 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
ClassBotobounaim asked: What is the URL of QA?15:21
dholbachobounaim, https://wiki.ubuntu.com/QATeam/ might work as a good introduction into everything the team does.15:21
ClassBotdsp__ asked: how to stop all these logs, i just wanna see your chat msgs.... its confusing15:21
ClassBotC1sM0 asked: Are .deb files created automatically once the source code has been send up?15:22
dholbachC1sM0, 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 hour15:23
ClassBotnja asked: ​ Why does the Work Item Iteration on the Quantal Release Schedule show A-2 at the top instead of A-1?15:23
dholbachnja, I assume you are talking about http://status.ubuntu.com/ubuntu-quantal/? I'm not quite sure about this to be honest.15:24
dholbachMaybe because Alpha 2 was the last milestone?15:24
dholbachSorry, don't know.15:24
ClassBotmarcos asked: App Showdown accept closed source and pay applications too?15:24
dholbachmarcos, not as far as I know, no15:24
=== piro is now known as Guest22304
dholbachmaybe 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 well15: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 sbuild15:25
ClassBotziviani 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
dholbachziviani, if features can't get done in the cycle, they are dropped and left for next cycle to be implemented.15:26
dholbachThe decision is made by the release team and the respective team leads.15:26
ClassBotnja asked: ​ Why does Lernid have a "Terminal" tab?15:26
dholbachnja, when we get to a live demo part you can try out what the presenter is saying live on your system15:27
ClassBotsmartboyhw asked: Then what about software packaging?15:27
dholbachsmartboyhw, 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
ClassBotmarcos asked: Update releases (like 12.04.1) accept new features?15:28
dholbachmarcos, no, it will largely "just" include security and stability fixes, updated translations and the like15:28
dholbachit's just impossible to direct your attention to developing two releases (12.04 and 12.10 for example) at the same time15:29
ClassBotHenrich asked: how many buildds are there? can we see the list?15:29
dholbachHenrich, yes - it's available here: https://launchpad.net/builders/15:29
dholbachAlright - that was a true avalanche of questions - thanks everyone! :)15:30
dholbachMy fingers are aching, but not bleeding yet, so let's keep going.15:30
dholbachThousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality.15:30
dholbachAt 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:30
dholbachEvery feature is discussed by its stakeholders and a specification is written that contains detailed information about its assumptions, implementation, the necessary changes in other places, how to test it and so on.15:31
dholbachThis 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
dholbachAs 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:31
dholbachNot every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects.15:32
=== Zubozrout is now known as zubozrout
dholbachThat 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
dholbachFor more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.15:32
dholbachAnother important tool regarding communication is bug reports. Whenever a defect is found in a package or piece of infrastructure, a bug report is filed in Launchpad.15:33
dholbachAll information is collected in that report and its importance, status and assignee updated when necessary. This makes it an effective tool to stay on top of bugs in a package or project and organise the workload.15:33
dholbachMost of the software available through Ubuntu is not written by Ubuntu developers themselves. Most of it is written by developers of other Open Source projects and then integrated into Ubuntu.15:33
dholbachThese projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.15:33
dholbachThe relationship to Upstreams is critically important to Ubuntu. It is not just code that Ubuntu gets from Upstreams, but it is also that Upstreams get users, bug reports and patches from Ubuntu (and other distributions).15:34
dholbachThe most important Upstream for Ubuntu is Debian. Debian is the distribution that Ubuntu is based on and many of the design decisions regarding the packaging infrastructure are made there.15:34
dholbachTraditionally, Debian has always had dedicated maintainers for every single package or dedicated maintenance teams. In Ubuntu there are teams that have an interest in a subset of packages too, and naturally every developer has a special area of expertise, but participation (and upload rights) generally is open to everyone who demonstrates ability and willingness.15:34
ClassBotaverage_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:34
dholbachaverage_drifter, Great. Just what I wanted to talk about next. :)15:35
ClassBotNickE asked: Does Launchpad host everything to do with a given project (unless it is upstream)?15:35
dholbachNickE, 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 Launchpad15:36
dholbachand if a project decides to not use Launchpad, you can easily set up a code mirror15:36
dholbachand daily builds and the like15:36
ClassBotraju asked: Whats the ground work have to do , to join in a current running project as  one of its the developer ?15:36
dholbachraju, I would always recommend to have a look out (and ask for) some simple bugs you can start working on.15:37
dholbachLuckily this week we'll have a session about fixing small bugs in Ubuntu and what to do about them.15:37
dholbachTomorrow, 17:00 UTC.15:37
dholbachAlright, since there's so much interest in fixing bugs and getting stuff into Ubuntu, let's talk a bit about it.15:38
dholbachGetting a change into Ubuntu as a new contributor is not as daunting as it seems and can be a very rewarding experience. It is not only about learning something new and exciting, but also about sharing the solution and solving a problem for millions of users out there.15:38
dholbachOpen Source Development happens in a distributed world with different goals and different areas of focus.15:38
dholbachFor 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:38
dholbachhat 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
dholbachIn 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:39
dholbachMore 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
dholbachAfter you have tested it, you can easily propose the change to be included in the current Ubuntu development release. A developer with upload rights will review it for you and then get it integrated into Ubuntu.15:40
dholbachIf 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
ClassBotraju 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:41
dholbachraju, 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
dholbachIt happens to me all the time. :)15:42
dholbachThe good thing is though that we picked a bunch of easy to fix tasks, which Stefano will talk about in his session tomorrow15:42
dholbachand which are mentioned in the docs I'll point out later on15:42
dholbachWhen trying to find a solution it is usually a good idea to check with Upstream and see if the problem (or a possible solution) is known already and, if not, do your best to make the solution a concerted effort.15:43
ClassBotprashanth asked: Where do you usually get the source code?15:43
dholbachprashanth: 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
dholbachWhen 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
dholbachThe 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:44
dholbachMore questions? :)15:45
ClassBotprashanth asked: where can we get a list of Upstreams?15:45
dholbachprashanth: 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/gedit15:46
dholbachIf you go to https://launchpad.net/gedit though (note the missing "ubuntu/+source"), you get the information about Upstream15:47
ClassBotgeekette86 asked: i wanna know more about  apport-retrace15:47
dholbachapport-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 on15:48
dholbachhttps://wiki.ubuntu.com/DebuggingProgramCrash has more info about this generally15:49
ClassBotHenrich asked: If you find same problem in upstream (e.g. Debian), do you report it to upstream bug tracker? if not, why?15:49
dholbachHenrich, 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 it15:49
ClassBotneoteric 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:49
dholbachneoteric, Unfortunately Launchpad can't push code to the Upstream project, so we need to forward patches 'manually'.15:50
ClassBotraju 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
ClassBotThere are 10 minutes remaining in the current session.15:50
dholbachOk, let's say you find a problem in gedit. It crashes for some reason.15:50
dholbachFirst 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
dholbachIf 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
dholbachIn that case you can then help out to test the fix and give valuable feedback.15:51
dholbachIf 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
ClassBoteklok 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 packages15:52
dholbachThe 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
dholbachOn 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
dholbachAlso 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
dholbachIf you ask me, it's best thing since sliced bread.15:53
ClassBotziviani 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:54
dholbachA 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
ClassBotexodus 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
ClassBotThere are 5 minutes remaining in the current session.15:55
dholbachexodus, 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:55
ClassBotnja asked: ​ Why are you not streaming this in a G+ hangout?15:56
dholbachIn 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
dholbachAnother 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
dholbachAlso an IRC log is searchable.15:56
dholbachThat said, I know that videos can be a bit more inviting and more personal than a text-based session.15:57
ClassBotluisalvarado asked: what tools do you recommend to start working on a bug fix?15:57
dholbachluisalvarado, more on that in the next session and Stefano's session tomorrow.15:57
dholbachLet's take 3 minutes break so we can all get another glass of water, a cup of tea or something else.15:58
dholbachThanks everyone and see you in 3. :)15:58
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Getting set up for Ubuntu development - Instructors: dholbach
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.16:00
=== cyrex_ is now known as luisalvarado
dholbachExcellent - welcome back to session number two at https://wiki.ubuntu.com/UbuntuDeveloperWeek :)16:01
dholbachfor those of you who joined in late, please also make sure you're in #ubuntu-classroom-chat so you can ask your questions there16:01
dholbachand please prefix them with QUESTION: so the bot will pick them up16:02
dholbachIn 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 involved16:02
dholbachif we get through everything quick enough we can even have a look at a package and what to do with it16:03
dholbachthis session will be practical, so you might want to open a terminal already16:03
dholbachThere are a number of things you need to do to get started developing for Ubuntu.16:03
dholbachWe'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
dholbachHere’s what we’ll do:16:03
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 Launchpad16: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
=== qwerty is now known as Guest18258
dholbachIt 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:04
dholbachThis means that you will need to run Ubuntu Quantal (12.10) in some form.16:05
dholbachDon'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
dholbachStill it's very important to test your fixes in a live environment.16:05
dholbachhttps://wiki.ubuntu.com/UsingDevelopmentReleases explains how to do it safely.16:05
dholbachIf you are now on 12.04, you're fine - you can still go through the instructions and repeat them later on.16:06
dholbachThere 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-dev16:06
dholbachThis will take a while, so just keep it running.16:07
dholbachThis 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:07
dholbach... and obviously many many many other good things we won't cover in this tutorial. :)16:08
dholbachAny questions so far?16:08
ClassBotNickE asked: ​ What VM does TestDrive use?16:08
dholbachNickE, I think it uses kvm.16:09
ClassBotnja asked: ​ Is it usual to get "apt-file update needed" after installing those packages?16:09
dholbachnja, not for now, I don't think16:09
ClassBotconner_bw asked: Is bzr etched in stone? Will git be supported someday?16:09
dholbachconner_bw, I don't know - you could try to ask in #launchpad though16:10
dholbachpersonally I love bzr because it's quite easy to learn, but I know others prefer git or some other version control system16:10
dholbachthe good thing is that Launchpad can import git branches and others as well, so you can work on them natively with bzr16:10
dholbachOk, let's crack on.16:11
dholbachThe 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
dholbachexport DEBFULLNAME="Bob Dobbs"16:11
dholbachexport DEBEMAIL="subgenius@example.com"16:12
dholbachPlease use YOUR email address and YOUR name. :)16:12
dholbachNow save the file and either restart your terminal or run:16:12
dholbach  source ~/.bashrc16:13
dholbach(If you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.)16:13
dholbachNow that this is done, the packaging tools will always use your name and email address by default.16:13
ClassBotnja asked: ​ Is bash the shell integrated in Lernid?16:14
dholbachnja, yes, lernid uses whatever shell you normally use - the default is bash16:14
dholbachNow that this is done, let's create GPG key.16:14
dholbachIf you have a key already, you're fine - you don't need another.16:14
dholbachGPG 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
dholbachIn 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
dholbachTo generate a new GPG key, run:16:15
dholbach  gpg --gen-key16:15
dholbachGPG 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
dholbachAfterwards, 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:15
=== patrick is now known as Guest90143
dholbachThe 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
dholbachAdding 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
dholbachNow 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
=== raiden is now known as Guest47874
dholbachMaybe we will just let it sit there for a bit and do its thing, while we take care of other business.16:16
dholbachLet's create our SSH key next.16:17
dholbachSSH 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
dholbachTo generate an SSH key, enter:16:17
dholbach  ssh-keygen -t rsa16:17
dholbachThe 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:18
ClassBotnja asked: ​ Can the passphrase be changed later?16:19
dholbachnja, yes16:19
dholbachNext, let's set up pbuilder.16:19
dholbachpbuilder 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:19
dholbach - There is no need to install all necessary build dependencies locally16:20
dholbach - You can set up multiple instances for various Ubuntu and Debian releases.16:20
dholbachSetting pbuilder up is very easy, simply run:16:20
dholbach  pbuilder-dist <release> create16:20
dholbachSo for quantal, you'd run:16:20
dholbach  pbuilder-dist quantal create16:20
dholbachYou 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
dholbachAre there any questions up until now?16:21
ClassBotjsjgruber-l82-p asked: Why might you need a .pbuilderrc file?16:22
dholbachin .pbuilderrc you could specify a lot of things: for example using additional mirrors, installing packages into the chroots by default, etc.16:22
dholbachpbuilder'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:22
ClassBotexodus 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:23
dholbachexodus, 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 216:24
dholbachin this case you can teach pbuilder to re-use packages you already built and to add them to its sources16:25
ClassBotlengau asked: Why does pbuilder require root permissions?16:25
dholbachlengau, because it uses chroot internally to create a completely separate minimal system in which it performs the build16:25
ClassBotTheLordOfTime asked: How do you teach pbuilder to use the already-built packages, in the hypothetical exodus presented?16:26
dholbachTheLordOfTime, https://wiki.ubuntu.com/PbuilderHowto is one I know about.16:26
dholbachIf it's outdated, I'd recommend to ask in #ubuntu-motu16:27
dholbachOk. I assume GPG finished creating the key for you already. Let's move on with the key then. :)16:27
dholbachYou might have gotten a message similar to this one:16:27
dholbachpub   4096R/43CDE61D 2010-12-0616:27
dholbach      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D16:27
dholbachuid                  Daniel Holbach <dh@mailempfang.de>16:27
dholbachsub   4096R/51FBE68C 2010-12-0616:27
dholbachIn this case 43CDE61D is the key ID.16:27
dholbachNext, 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
dholbachThis 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
ClassBotnja asked: ​ What are all these generated keys for?16:28
dholbachnja, if you upload a package to Launchpad (for instance to your personal package archive), it will check if the package was really done by you16:29
dholbachthe GPG key is used to sign a package and make sure it wasn't tampered with and that it originates from you16:29
dholbachthe 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 connection16:30
dholbachWith a basic local configuration in place, your next step will be to configure your system to work with Launchpad.16:30
dholbachLaunchpad 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:30
dholbachSponsoring 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
dholbachYou 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:31
dholbachBesides 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
dholbachIf 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
ClassBotTheLordOfTime asked: I've seen this thing about the Ubuntu Code of Conduct.  Do I need to sign that to develop for Ubuntu?16:32
dholbachTheLordOfTime, 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 it16:33
dholbachthere's no hidden clauses or anything crazy in there - you won't sign up for a washing machine you'll have to pay16:33
dholbachthe code of conduct basically says to us all: be excellent to each other16:33
dholbachand that's generally a good thing to comply with :)16:34
ClassBotman_let asked: can less intelligent people contribute?16:34
dholbachman_let, We have enough tasks for everyone in Ubuntu. No matter what your interest, ability or preference might be.16:34
ClassBotnja asked: ​ HELP! My LaunchPad password reset won't arrive!16:35
dholbachnja, I think somebody mentioned it in the chat window already, but you can ask in #launchpad for help.16:35
dholbachand you can follow the instructions from the log or the documentation later on16:35
dholbachLaunchpad’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
dholbachWhen 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
dholbachThe 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:36
dholbachYou 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
dholbachand it will print out something like:16:37
dholbachpub   4096R/43CDE61D 2010-12-0616:37
dholbach      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D16:37
dholbachuid                  Daniel Holbach <dh@mailempfang.de>16:37
dholbachsub   4096R/51FBE68C 2010-12-0616:37
dholbachHead 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
dholbachLaunchpad 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:37
dholbachBack on the Launchpad website, use the Confirm button and Launchpad will complete the import of your OpenPGP key.16:38
dholbachFind more information at https://help.launchpad.net/YourAccount/ImportingYourPGPKey16:38
dholbachAnd then you can do the same with your SSH key.16:38
dholbachOpen https://launchpad.net/~/+editsshkeys in a web browser, also open ~/.ssh/id_rsa.pub in a text editor.16:38
dholbachMake sure it's ~/.ssh/id_rsa.pub (public part) and not ~/.ssh/id_rsa (secret part)16:39
dholbachThis 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
dholbachFor more information on this process, visit the creating an SSH keypair page on Launchpad: https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair16:39
ClassBotthotp asked: might the GPG key changes when i re-install the operating system?16:39
dholbachthotp: it might be worth backing up the ~/.gnupg directory16:40
dholbachyou should be able to just copy it back16:40
dholbachThe 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
dholbachBazaar 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:40
dholbacho tell Bazaar who you are, simply run:16:41
dholbach  bzr whoami "Bob Dobbs <subgenius@example.com>"16:41
dholbach  bzr launchpad-login subgenius16:41
dholbachwhoami 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
dholbachAgain: 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:41
dholbachAnd that should be pretty much it.16:42
dholbachOne 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:42
dholbachor just make sure you have   deb-src   lines in /etc/apt/sources.list16:43
ClassBoteklok 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 fail16:43
dholbacheklok, 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 there16:43
dholbachalso do I learn something new all the time, which is great16:43
dholbachof course it can be hard to solve a problem, but you can always ask for help16:44
ClassBotman_let asked: what if 2 ppl have the same public key?16:44
dholbachman_let, there have been collisions of gpg keys already, but they are very rare - can somebody dig out a link about this?16:44
ClassBotnja asked: ​ What can I do if I have 2 subkeys.  How do I know which one to delete?16:44
dholbachI hope http://www.gnupg.org/gph/en/manual.html#AEN282 can help you with it16:45
dholbachAny more questions? :)16:45
ClassBotnja asked: ​ Can I not see what one was created most recently?16:46
dholbachIf 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
dholbachIf you followed all the instructions, the following example should work:16:47
dholbachPlease run:16:47
dholbach  bzr branch ubuntu:hello16:47
dholbachThis will give you a Bazaar branch of the "hello world" package in Ubuntu and all its revisions in Ubuntu.16:47
dholbachthen please:16:47
dholbach  cd hello16:47
dholbach  bzr bd -- -S16:48
dholbachwhich 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:48
dholbachif you type    ls ..    it should show you something like this:16:49
dholbachhello_2.8-2.debian.tar.gz  hello_2.8-2_source.changes16:49
dholbachhello_2.8-2.dsc            hello_2.8.orig.tar.gz16:49
dholbachnow please run:16:49
dholbach  pbuilder-dist quantal build ../hello_2.8-2.dsc16:50
dholbachThis will build the package from the source in our shiny new pbuilder instance.16:50
dholbachIt will first download relevant build-dependencies (so packages required to build the package), then perform the build.16:50
ClassBotThere are 10 minutes remaining in the current session.16:50
dholbachThe resulting package then should be available in ~/pbuilder/quantal_result/16:51
ClassBotnja asked: ​ When running bzr bd -- -s: Help - http://paste.ubuntu.com/1172150/16:51
dholbachYes, that's a warning which is safe to ignore:16:51
dholbachgpg: skipped "Santiago Vila <sanvila@debian.org>": secret key not available16:51
dholbachgpg: /tmp/debsign.16cckC0A/hello_2.8-2.dsc: clearsign failed: secret key not available16:51
dholbachIt 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
dholbachWe could have added "-us -uc" to the "bzr bd -- -S" command which would have avoided this16:52
=== prashanth92 is now known as prashanth
dholbachbut it's safe to ignore.16:52
dholbachIn 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) packages16:53
dholbachThis 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
dholbachJust do me one favour: bookmark http://developer.ubuntu.com/packaging/html/16:54
dholbachand stay up to date by following @ubuntudev on identi.ca/twitter.com/facebook.com/gplus.to16:55
ClassBotmarcosb asked: -us -uc is not for pubilder? or really is for bzr?16:55
ClassBotThere are 5 minutes remaining in the current session.16:55
dholbachmarcosb, yes, not for pbuilder, but for bzr bd (everything behind the '--' is passed to debuild/dpkg-buildpackage internally)16:55
dholbachI hope you give Ubuntu development a go, learn a lot, make the world a better place and make a bunch of friends. :)16:56
dholbachAny last 2-3 questions before Oliver "ogra" Grawert takes over to talk about ARM?16:57
ClassBotnja asked: ​ After running "bzr bd -- -S -us -uc" now what?  I'm really behind now.16:57
dholbachnja, pbuilder-dist quantal build ../hello_2.8-2.dsc16:57
dholbachbut you should be able to find this in the docs (http://developer.ubuntu.com/packaging/html/) as well16:58
dholbachand in the logs which will go up on https://wiki.ubuntu.com/UbuntuDeveloperWeek later on16:58
ClassBotmarcosb asked: another session to create patches for hello package? :)16:58
dholbachmarcosb, yes it would have been too much to squeeze into 2 hours :)16:58
ClassBotalucardni asked: how can I tell to bzr bd to use pbuilder to build a binary package?16:58
dholbachalucardni, it's two separate commands - a pbuilder plugin for bzr might be a good idea :)16:59
dholbachbut I don't know if it exists :)16:59
dholbachAll the best everyone! Hope to see more of you soon!17:00
dholbachogra_, your stage :)17:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Something about ARM - Instructors: ogra
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.17:00
* ogra_ waves17:01
ogra_hello everybody17:01
ogra_soo, i'm here to tell something about arm :)17:02
ogra_arm is the most recent addition to the supported arhitectures in ubuntu17: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:02
=== someone is now known as Guest98978
ogra_so about 4 years ago there was the ubuntu-mobile team ... originally founded for building ubuntu on MID devices17:03
ogra_(MID means mobile internet devices, i.e. tablet)17:03
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 ARM17:04
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 ram17:05
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 builds17:06
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 architectures17:07
ogra_so we can get the most out of the HW17:07
ogra_originally the debian port is buiolt for the ARMv5 architecture, which in the intel world would probably comparable to 48617:07
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 68617:08
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 pandaboard17:09
ogra_even though the contract ran out today, we still work closely together17:10
ogra_around the same time linaro was founded by canonical and arm ... to actually solve the huge fragmentation in the arm market17:10
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 architecture17:11
ogra_this we did until precisee ...17:11
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 status17:12
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 testing17:13
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:14
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_whoops, seems tehere are issues with Classbot17:17
=== ogra_ is now known as ogra
ClassBotprashanth 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
ograsorry :)17:18
ograthat looks like a leftover from dholbach :)17:18
ClassBotnetzvieh asked: So there won't be any ARMv6-Supoort?17:19
ograwe currently build armhf and armel architectures, while the former is still there it isnt actually actively cared for or actively supported17:20
ograbut with the begin of the quantal cycle armel was switched to build for ARMv517:20
ograsadly it isnt clear yet if the armel port will stay around at all17:20
ograso for now onl yarmhf and the ARMv7 build is supported17:21
ClassBotFlowRiser asked: What does the "intel world" reference thingy mean ?17:21
ograwell, i try to make people that never got in touch with arm understand the differences17:21
ograyou surely dont want to run ubuntu on a 486 machine nowadays :)17:22
ograand this is similar to running ubuntu on an ARMv5 system17:22
ClassBotFlowRiser asked: Does Ubuntu support ARMv8 ?17:23
ogralinaro works on the v8 port and their achievements will immediately land in ubuntu once they are done17:23
ClassBotLetozaf__ 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:23
ograCPUs have floating point units (thats what the f in armhf stands for) ...17:24
ograolder ARM ports used a software emulated floating point unitt (softfp)17:25
ograso does for example ARMv517:25
ograwith newer hardware actual floating point unity in hardware shoed up17:26
ograthats usually the case for ARMv6 and newer17:26
ograwith 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 armhf17:27
ograthats why we currently have two arm ports (but only one supported one of which we build actual distro images)17:28
ClassBotajitesh asked: As android kernel code has been merged with linux, will ubuntu desktops will be able to run .apk files without an emulator?17:28
ograi 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 arm17:29
ograon the distro side nobody is actively working on it to my knowledge though (patches accepted indeed :) )17:29
ClassBotajitesh asked: Wat about android application support in ubuntu for mobiles?17:30
ograwell, the same applies i think :)17:30
ograi know there are community projects for this but i doubt anyone ever worked on ubuntu integration for it17:30
ograthe 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 properly17:31
ClassBotmarcosb asked: ubuntu mobile isn't a environment to use ubuntu as desktop with a dock?17:31
ograno, ubuntu-mobile is long dead ... even predates the android hype :)17:32
ograubuntu-mobile was actually focusing on creating a desktop for touch on MID devices17:32
ograi think what you are talking about is ubuntu-on-android17:33
ograabout which i sadly dont have any infos, it is developed by a different team i dont work much with17:33
ClassBotmarcosb asked: s/'ubuntu mobile'/'ubuntu for smartphones'/g17:33
ograright, thats ubuntu-for-android then17:34
ograto 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 abut17:34
ograi 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 vendor17:35
ograso we had the past of arm and a bunch of questions ... lets take a look at the precence :)17:35
ograup to quantal ubuntu arm was proivided on images that were actually speficially focusing on the target hardware with their installation ...17:36
ograthey were so special that they always needed handholding if minor HW aspewcts of an arm board changed ... not so great as you can imagine17:37
ograso 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:38
ograwe 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 images17:39
ograthe graphics driver situation on arm is way worse than i.e. nvidia or fglrx on x8617:40
ograluckily TI managed to get us a distributable version of the driver for the pandaboard17:40
ograwith 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 installed17:41
ograso 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
ograthe different sources for info about the different images are on the ubuntu wiki17:43
ogranamely: 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 images17:44
ograeven though there is no dedicated arm team anymore, all people with interest in ubuntu-arm usually hang around in #ubuntu-arm on freenode17:45
ograso 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 there17:45
ograit doesnt look like there are many more questions17:46
ograand i dont really have much more to say :)17:46
=== itnet7_ is now known as itnet7
ogra♩  ♪ ♬ ♫17:48
ogra(TheLordOfTime suggested i shoudl sing )17:48
ClassBotFlowRiser asked: ARM vs x86;17:49
ograeasy answer: http://www.googlefight.com/index.php?lang=en_GB&word1=arm&word2=x8617:49
ClassBotTheLordOfTime asked: What's the advantages/disadvantages between ARM and x86? (FlowRiser)17:50
ograARM draws abouth a thenth of the power of an x86 machine17:50
ogra(even the lowest end atom draws lots and lots more still)17:50
ClassBotThere are 10 minutes remaining in the current session.17:50
ograthat 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 machines17:51
ograthe 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
ClassBotgoddard asked: what sorts of stuff do you do with ARM?17:52
ografor ubuntu i just care that the images work :)17:53
ograprivately my heatinf and solar system of my house completely run under ubuntu arm driver beagleboards :)17:53
ograand http://www.grawert.net:81/rooms17:53
ClassBotpaulo_gomes asked: i dont understand, so there's no arm team, who takes care of development and integration?17:54
ograeverybody !17:54
ograthe desktop team takes care for all desktop issues on x86, amd64 and arm ... server for all server issues, foundations for the plumbing etc etc17:54
ograthe work and responsibility is actually on all teams, not on a single arm team anymore17:55
ClassBotThere are 5 minutes remaining in the current session.17:55
ClassBotgoddard asked: What sorts of work does orgra personally do ?17:55
ograwell, taking care for the arm images, helping colleagues to get their arm systems set up, so they can fix unizty bugs etc ;)17:56
ClassBotFlowRiser asked: How can we find arm compatible hw, what do we look for ?17:56
ograif you want the best ubuntu support, go to pandaboard.org17:56
ClassBotpaulo_gomes asked: any links of use of ARM in home automation?17:56
ograi think i linked the stuff i used from the pages above (on grawert,net)17:57
ograthere are also some infos on http://ograblog.wordpress.com/, i usually blog about changes to my home automation thingies :)17:57
ogra(and usually also link to the SW i use)17:58
ograk, seems the time is up, thanks for participating everyone !17:58
bilalThanks to you too, ogra, that was an informative session17:58
ograif you have any more questions etc, i'm available in #ubuntu-arm around european business hours usually17:59
ograand many thanks to the organizers of this event, you guys do an awesome job !17:59
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Ubuntu Development for the Youth - Instructors: bilal
ClassBotLogs 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
bilalHello everyone! Welcome to the session about Ubuntu development for the youth!18:00
=== ogra is now known as ogra_
bilalI'm Bilal Akhtar, and I've been involved in the Ubuntu community for two years now18:01
bilalAs 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:02
bilalDuring the course of this session, if you have any questions, feel free to ask them on #ubuntu-classroom-chat, in this format:18:03
bilalQUESTION: Why is Ubuntu so awesome?18:03
bilaland then I'll answer them in this channel18:03
bilalSo, let me start by giving a summary of what Ubuntu development actually is18:04
bilalDaniel Holbach's session earlier today, titled "Introduction to Ubuntu Development" was a detailed 1-hour session just about this18:04
=== pundiramit is now known as pundiramit-afk
bilalI'll only briefly explain it, for more details you can read the IRC logs of that session18:05
bilalUbuntu is a complete operating system, but it is built out of small segments called packages18:05
bilalEvery package is written in a particular programming language, then compiled to create a binary package18:07
bilalthe Ubuntu Installer, which you used to install your system, did little more than extract several binary packages18:07
bilalA 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:08
bilalMost 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 C18:09
bilalDesktop packages, which form the front-end of Ubuntu, are written in different languages. Most are written in either C, C++ or Python18:10
bilalWhich is why I suggest anyone interested in learning to help in Ubuntu development to learn Python18:11
bilalSome 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), etc18:12
bilalI 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 C18:12
ClassBotFlowRiser asked: Any tips on where to start looking for python/cpp tutorials ?18:13
bilalGreat question18:13
bilalFor Python, I'd suggest you learn using the official Python docs and tutorials18:13
bilalThe tutorial is at http://docs.python.org/tutorial/index.html18:14
bilalFor C++, there are hundreds of tutorials. cprogramming.com and cplusplus.com are the popular ones18:15
bilalThere are many others a Google away in case you don't like these18:15
ClassBotcoalitians asked: Is it true java is not favoured(used) in the ubuntu community?18:15
bilalJava is used quite a bit, but not as much compared to C or Python18:16
bilalAs an example, LibreOffice is written in Java18:16
bilalThere are many examples of Java software in the Ubuntu community18:16
bilalAnother 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 VM18:18
bilalIf you know Java already, I'd suggest you to learn C too, since Java and C are very similar18:18
bilaland C is widely used in the Ubuntu community18:18
ClassBotCuppaT asked: Could you suggest a python IDE please?18:19
bilalPersonally, I like Vim. But it has a learning curve which many of you might not like18:19
bilalSo I'd suggest Gedit, which comes pre-installed and is easy to use18:20
bilalGeany is also a great light-weight IDE18:21
bilalGo with either of the two, and you'll be fine18:21
ClassBotcoalitians asked: Are python application in Ubuntu(linux) are being migrated to 3.x versions?18:21
bilalYes, and no. Python 3.x is backward incompatible with 2.x code, which is why some applications haven't moved over18:21
bilalIf you're starting from scratch, I'd recommend you to learn Python318:22
bilalVery soon, we hope to get everything on the Ubuntu CD moved over to Python 3 so Python 2 can be dropped18:23
bilalMost libraries have different versions of Python 2 and Python 3 already18:23
ClassBotthotp asked: what are the main differences between c/c++ programming on ubuntu and windows?18:23
bilalUbuntu 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 WinForms18:24
bilalBut the base syntax is the same18:24
bilaland GTK+ and Qt applications can work on Windows to18:24
bilalOn a side note, if you want to know more about Python 3, attend barry's session right after this18:25
bilalback 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 side18:25
bilalpreferably learn it on Ubuntu, since that's the platform you'll be coding for418:26
ClassBotkamilnadeem asked: For someone who is starting in CS, where to begin from?18:26
bilalYou'll likely be learning multiple programming languages at college/univ18:27
bilalThey will be teaching you C for sure18:27
bilalI'll answer the rest of your question later on, as I explain "where to start"18:28
ClassBoteklok asked: what makes a good programmer in ubuntu? how many hours per day do you have to invest?18:28
bilalIt has nothing to do with the number of hours18:28
bilalQuantity != quality18:28
bilalMany of you have tight schedules18:29
bilalI myself spend more than half of my day at shcool18:29
bilalI, for example, can get many contributions done within an hour18:29
bilalOthers may take longer18:29
bilalSo, 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" part18:30
bilalon where you should start your journey in the Ubuntu communtiy18:30
* bilal is really making too many typos today18:30
ClassBotthotp asked: so what is the best c/c++ IDE in ubuntu?18:30
bilalGeany and/or Gedit.18:30
ClassBotFlowRiser asked: Regarding to developing cpp applications for ubuntu,do you recommend any good books/tutorials ? (regarding to best practices, GUI, etc)18:31
bilalGood question18:31
bilalAs for tutorials, you can learn graphical programming from Gtk's online docs18:31
bilalor bare-bones C++ programming, which you should learn before GTK, from cplusplus.com18:31
bilalI prefer online tutorials over books18:32
bilalMany of you will be learning programming in school/college/university18:32
bilalso that's a good starting point18:32
bilalin the Ubuntu community, you'll "learn by doing"18:33
bilalwhich will be way more helpful than anything school or college can teach you.18:33
ClassBotkamilnadeem asked: Not at school or college but learning it by oneself? I am pursuing a course under Hardware and Networking BTW. :-)18:34
bilalIn that case, you can just learn from an online tutorial, like I mentioned above18:34
ClassBotkamilnadeem 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
bilalIf you're starting from scratch, learn Python, then C, then C++18:34
bilalthen other languages18:34
bilalif you know one language already, like many high school students and university students learn Java early18:34
bilalthen Java -> C -> Python18:34
ClassBotraki1 asked: GTK+ or QT be better in ubuntu?18:35
bilalBoth are equally good, to be honest18:35
bilalQt is superior in some ways, GTK+ is easier to learn in my opinion18:35
bilalpick your favourite18:35
ClassBotSamTate asked: Do you think that Vala is the next thing to do after learning some JS and basic PHP?18:35
bilalVala is a clean language indeed18:36
bilalBut I'd suggest new programmers to give it lower priority than the others, since Vala simply isn't very commonly used18:36
bilalAfter JS and PHP, C would be the logical way forward18:37
bilalTime to move on18:37
bilalNow, for the "why" aspect. Why, as youth, should you be interested in Ubuntu development?18:37
bilalThere are numerous reasons18:37
bilalFirst, like I mentioned in an answer to a question above, you'll learn by doing18:38
bilalwhich will help you in programming way more than any other school/university course will18:38
bilalYou'll learn to solve critical problems18:38
bilalYou'll get the assistance of thousands of talented Ubuntu developers around the world18:39
bilalYou'll learn to collaborate with a team18:39
bilaland you'll get to meet new people18:39
bilalAs an added bonus, it will look good on your resume, if you're going in the CS/engineering field18:40
bilaland it will give you experience in programming, and make you a better programmer18:41
bilalIt will set you apart from your peers in school or college18:41
bilaland contributing to Ubuntu is a really, really good way to spend time18:41
bilalspare time, that is18:42
bilalSome of you might think that it might be too much of a time waste18:42
bilalwell, the good thing here is, that it's totally up to you to contribute18:42
bilalyou can spend as much or as little time as you want18:43
bilalwhenever you want18:43
bilaland if you're stuck, there are people out here to help you18:43
bilalon IRC (#ubuntu-devel for Ubuntu development, #ubuntu-app-devel for app development, #ubuntu-motu for packaging, etc)18:44
bilalon community support sites like Ask Ubuntu and Ubuntu Forums18:44
bilaland on mailing lists like ubuntu-devel@lists.ubuntu.com and ubuntu-motu@lists.ubuntu.com18:44
ClassBotraki1 asked: any gtk learning resources or guides?18:44
bilalThe official GTK docs are great18:44
bilalhttp://developer.gnome.org/ has tutorials18:45
ClassBothelderc asked: Where Ubuntu (I mean Ubuntu not Kubuntu) uses Qt?18:45
bilalUnity 2d, for example, used Qt18:45
bilalQuite many applications use Qt18:45
bilalUbuntu treats Qt as a first class citizen18:45
=== raindog is now known as Guest42319
ClassBotmesutcangurle asked: Why Ubuntu doesn't have a junior tasks for new comers or mentors for new comers.18:46
bilalWhich is exactly what I'm getting to18:46
bilalNow, for the part about where you should start18:46
bilalMany of you wondered if development will be too hard or boring18:46
bilalthere are multiple ways to help out18:46
bilalYou 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/+bugs18:47
bilaldownload the source code, fix it and submit a patch upstream18:47
bilalmore info on that, on tumbleweed's session tomorrow18:48
bilalOr you can help triage bug reports. triaging is basically reviewing bug reports from users18:48
bilalfinding duplicates , asking users for more information, etc18:49
bilalmoreinfo on http://wiki.ubuntu.com/Bugs18:49
bilalor you can help in translation18:49
bilalyou can help in translating Ubuntu to another language18:49
bilalOr you can test newer Ubuntu releases in development, report bugs, etc18:50
ClassBotThere are 10 minutes remaining in the current session.18:50
bilalYou can write documentation too18:50
bilalor help new users out at Ubuntu, on sites like AskUbuntu, Ubuntu Forums, IRC (#ubuntu), etc18:51
bilalIf you're stuck with anything, the mailing lists and IRC are always on your side18:51
bilalquestions time!18:51
bilalOkay, so I'll answer some FAQs I often get from prospective young developers18:52
bilalFirst one is, do you get paid to contribute to Ubuntu?18:53
bilalI answer that with: "You get paid, not in money, but in knowledge"18:53
bilalSecond is, how do you get upload rights to Ubuntu18:53
bilalThere are many different types of Ubuntu developers18:54
bilaleach have upload rights to a specific part of the Ubuntu archive18:54
bilalonce you have a history of strong contributions, you can apply for upload rights18:54
bilalone thing which I missed above, in the ways to help Ubuntu, was packaging18:55
bilalyou can help to create packages out of upstream packages18:55
bilalthis was explained in Daniel's session on intro to ubuntu development18:55
ClassBotThere are 5 minutes remaining in the current session.18:55
bilalyou can learn packaging from developers.ubuntu.com18:55
ClassBotFlowRiser asked: How can i develop greeters for Ubuntu ?18:56
bilalUmm, you mean lightdm greeters?18:56
bilalConsult the lightdm documentation18:56
bilalI don't know much about that, sorry18:56
ClassBotajitesh asked: which is better pyhton or c++ for ubuntu dev?18:56
bilalC/c++ is more powerful, Python is easier to learn18:56
bilalreally depends on what you're writing18:57
bilalfor a user-facing application, Python is usually better18:57
bilalfor low-level drivers, etc, C is better18:57
ClassBot_ericcc asked: Do ubuntu loco teams have access to a list of projects they can under take to help out?18:57
bilalMany LoCo team actively maintain projects18:57
bilalSome even maintain development18:58
bilalothers just help in translation18:58
bilalIt depends for each LoCo18:58
bilalso contact your LoCo team.18:58
bilalAs with the case with all open source projects, everyone is allowed to help out18:58
ClassBotmesutcangurle asked: why ruby is not used commonly like Python?18:58
bilalRuby has picked up more traction on the web18:59
bilalThere's no way to answer "why" it isn't common18:59
bilalbut that's just the way it is18:59
bilalon Ubuntu, that is18:59
bilalso, that's it!18:59
bilalI hope you liked the session18:59
bilalthe logs will be available soon, on irclogs.ubuntu.com19:00
bilalin case you missed part of this session19:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat || Event: Ubuntu Developer Week - Current Session: Using and porting to Python3 - Instructors: barry
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html following the conclusion of the session.19:00
barryhello everyone.  i'm barry warsaw and today i'll be giving a talk on python 319:01
barrythis 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 possible19:02
barryit will really help if you at least already know pytho n219:02
barry*python 219:02
barryplease join #ubuntu-classroom-chat and ask questions at any time!19:02
barryi'll be covering some of the new features in python 3, as well as porting strategies19:03
barrybut i won't be talking much about porting c extensions or deb/ubu packaging (unless there's time)19:03
barryi 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 stuff19:04
barryi'll be providing lots of links with other resources you can read for much more detail19:04
ClassBotben72 asked: ​ is there a way to run both python 2 and 3 in the same ubuntu system?19:05
barryben72: 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.719:06
barryto run python 3 apps you need to explicitly run 'python3' or /usr/bin/python319:07
barrysame for #! lines19:07
barryi can talk about the difference between python 3.2, the default in ubuntu currently and python 3.3 later if you're interested19:07
barryhopefully, this will get you excited about python 3 -- it's fun!19:08
ClassBotNickE68 asked: ​ Will Quantal be using Python 3.3?19:08
barryNickE68: 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.0419:09
barryquantal does have 3.3 available though: apt-get install python3.319:09
barryand invoked via 'python3.3'19:09
barryso you can play with the newest features easily19:09
barryalso, i fully expect that 12.10 will get a ffe for the final release of 3.3 when it comes out19:10
barryso, to summarize: quantal will have 2.7, 3.2 and 3.3 with the former two as the defaults19:10
barryso, why port to python 3?19:10
barrythere will never be a python 2.8.  i can pretty much guarantee that :)19:11
barrywhich implies that py2 will never get any new features19:11
barryand diminishing bug fixes, though the official maintenance policy is longer than usual19:11
barryeventually 2.7 will only get security fixes, but i suspect upstream devs will become less interested in maintaining 2.7 as time goes on19:12
barrymodules will rust19:12
barrypy2 also has many warts, some big some small19:12
barryand, most importantly imo: py3 fixes the whole bytes vs text problem19:12
barry(mostly :)19:12
barrymeaning, we have potential to make much more robust py3 apps for non-english locales19:13
barryi will talk more about bytes v. strings later19:13
barrywhat are ubuntu's py3 plans?19:13
=== Jameel is now known as Guest13536
barrywe 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.1019:14
barrymaybe for 13.04, definitely for the next lts19:14
barrypy2.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 it19:15
=== Guest13536 is now known as JameelA
barryif there are no questions related to ubuntu's py3 plans, let's talk about porting19:16
barrylet me give you a few links first19:16
barrythis is one of the very best resources available for understanding how to port your py2 code to py3:19:16
ClassBotcoalitians asked: So since the development for 12.10 is freezed, there are no ongoing porting activities now?19:17
barrycoalitians: 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 fixing19:17
barrythe above link talks about strategies, gives code samples for conversion of common idioms, a little bit about c extensions, and much more19:18
barryi have written a number of blog posts that you might find helpful:19:18
barrythere'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 versions19:19
barryi 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
barryokay, so let's talk for a moment about some porting strategies19:21
barrylet 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 ubuntu19:22
barrywe've worked hard these last few cycles to make sure upstreams w/ py3 support have been packaged for deb and ubu19:22
barryand we've done some upstream porting work ourselves (e.g. dbus-python)19:22
barryof course, not everything is available, but *a lot* is, so you're probably in great shape with quantal19:23
ClassBotroadmr asked: what's the recommended path if I want to port an application using gstreamer to Python3?19:23
barryroadmr: 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
barryi *think* it's not yet, but don't quote me on that :)19:24
barryso that's for new code, what about porting existing code to py3?19:25
barryask this question: do you need to keep py2 support, and if so, how far back do you need to support?19:25
barryi would *highly* recommend nothing older than py2.6 (which actually is no longer available in quantal anyway)19:25
barryand would recommend at least py2.7 for some very useful features (e.g. the new unittest library)19:25
barrythe 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 easier19:26
barrythrough things like "from __future__ import"s19:26
barryso, when starting a porting effort, the first thing to do is to run your code with 'python2.7 -3'19:27
barrythat -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
barryif your py2 program runs cleanly with 'python2.7 -3' then you're in pretty good shape for starting your py3 port19:27
barry2to3 is a code transformation framework that can take most common py2 idioms and convert them on the fly to py319:28
barrymy 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
barrybut it's pretty flexible19:28
barrymy own recommendation is to use a single code base and just be careful about how you code.  use from-future imports as much as possible19:29
barryalso there's a third party 'six' library (apt-get install python-six i believe) that can make a single code base easier to maintain19:29
barrybut here's the most important thing you need to do before you port, and it segues into my next topic:19:30
barryyou 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:30
barryif you are getting lots of UnicodeErrors in your py2 code, it's a sign that you are not crystal clear :)19:31
barryand 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 UnicodeErrors19:31
ClassBotBlessJah asked: is it possible to write to write py3 code that would run also in py2 environment?19:32
barryBlessJah: that's not really much different than writing py2 code that runs in a py3 environment.  yes, its very definitely possible19:32
barryso, hopefully everyone understand the difference between bytes and strings19:33
barrybytes are binary data, e.g. possibly images, audio, stuff like that19:33
barrystrings are human readable text19:33
barryin py2 you had two "string" types, str which were also called 8-bit strings and they served as ascii text and binary data19:33
barryand unicodes which are just that, unicode human readable text19:34
barrythe big py2 problem was that python auto-coerced between the two, often in ways that were not correct, leading to dreaded UnicodeErrors19:34
barryin py3 you have bytes which are *only* binary data19:34
barryand str which are unicodes19:34
barryand there is no auto-conversion19:35
barryyou cannot concatenate the two without explicitly converting19:35
barryso 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:35
barryto go from bytes to str, you must decode, again by being explicit about the encoding19:36
barryan 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* text19:36
barryunlike in py2, py3's open() takes an encoding argument, so if you call it like so: open('myfile', encoding='utf-8')19:37
barryyou will be reading unicode strings from the file19:37
barrywhich is very nice (assuming of course that the contents of your file is utf-8 encoded strings :)19:37
barryin py3, there is no more u'' prefix for strings.  unadorned string literals are unicodes19:38
=== keffie_jayx is now known as effiejayx
barry(aside: the u'' prefix is reintroduced in py3.3 but essentially noops)19:38
barryto write bytes literals, you use the b'' prefix19:38
barrye.g. this is bytes: b'foo'19:38
barryand this is str: 'foo'19:38
barryone 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
barryare there any questions about bytes vs strings before i move on?19:39
ClassBotNickE68 asked: ​ What if you don't know the encoding used for some file? Is there lib that can produce a 'best guess'?19:40
barryNickE68: 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 know19:41
barryyou can also try some of the most common ones, e.g. utf-8 first, then latin-119:41
barrythen ascii19:41
ClassBotroadmr asked: gettext, "it always returns unicodes". Do you mean "strings" here, as opposed to "bytes"?19:41
barryroadmr: 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 default19:42
barryin py3, gettext.gettext('foo') always returns a str, aka a unicode19:42
barryjtaylor: reminds me that it's python-chardet.  thanks!19:43
barrycool. 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 of19:43
barrythis is by no means exhaustive!19:43
barrythere 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.219:44
barrythough the pythonporting url i gave above comes pretty close19:44
barryso, let's begin, and please ask about further details at any point19:45
barrymany parts of the stdlib have been reorganized19:45
barrythis means that some old, unsupported modules have been removed19:45
barryprobably nothing you care about unless you're doing image processing on irix and then why are you here? :)19:46
barrymany modules have been moved around, some placed inside of packages19:46
barrye.g. the very common 'urlparse()' function now lives in urllib.parse.urlparse()19:46
barryhttp://docs.python.org/py3k/library/ is your best friend19:47
barrysome builtins have been removed or moved19:47
barrye.g. the reload() builtin has been moved to imp.reload()19:47
barryfor the builtins that have been removed, there's usually a good alternative19:48
barrye.g. callable() is gone, but you can test for callability either by just calling it <wink> or through the inspect module19:48
barryone 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
barryis that the print statement has become a function19:49
barrye.g. print('hello world')19:49
barrythis was very jarring, but it makes great sense, and eventually you'll come to appreciate this change :)19:49
barryyou know how python2 has essentially two types of classes?  classic classes and "new style" classes?19:50
ClassBotThere are 10 minutes remaining in the current session.19:50
barrypy3 gets rid of classic classes.  all classes in py3 are "new style"19:50
barryso that means you no longer have to inherit from object19:50
barryor use the "__metaclass__ = type" trick to get all the great features of "new style" classes19:51
barryi guess that means we have to stop calling them "new style" :)19:51
barrypy2 has two types of integer, int and long19:51
barrypy3 does away with this and has only one integer type, int19:51
barryit automatically knows to use the more efficient internal representation for smaller ints and the expensive representation for bigger ints19:52
barrythere is no more 'L' suffix on int literals19:52
ClassBotjsjgruber-l82-p asked: Any high precision float types in py3?19:52
barryjsjgruber-x-p_: i think so, but i do so little math in python, i can't help much with that19:53
barryi know there's a decimal type (though it's not built-in)19:53
barrythe dict.iter*() methods are gone in py3. i.e. no more .iterkeys(), .itervalues(), or .iteritems()19:54
barryjust use .keys() et al, and remember that they return iterators in py3 *not* concrete lists19:54
barryyou might need to wrap the return value in list(dict.values()) for example19:54
barrythe syntax for catching exceptions has changed (though also available in py2.6 and 2.7)19:55
barrygone is "except Foo, e"19:55
barry"except Foo as e" instead19:55
barryinstead of the exec statement, use the exec() function19:55
ClassBotThere are 5 minutes remaining in the current session.19:55
barryfile() builtin is gone, use open()19:55
barryno more xrange().  go back to range() which now returns an iterator19:56
barryas does filter() and map()19:56
barry(again, you might need to wrap them in list() to get a concrete list)19:56
barryabsolute imports are the default, you must be explicit about relative imports19:56
barryokay, there's no way i'm going to finish. so are there any last minute questions?19:57
barryi'll just keep typing until classbot shuts me up19:57
barry1 / 2 returns 0.5 now19:57
barryuse 1//2 to get the old floor division behavior19:57
ClassBotcoalitians asked: Barry, How and where should we get started to be part of ubuntu python community?19:57
barrycoalitians: i would highly suggest joining the debian python community over on OFTC #debian-python.  #ubuntu-devel is good too, as is #python on freenode19:58
barrythere isn't a dedicated ubuntu python forum though.  maybe there should be!19:58
ClassBotNickE68 asked: ​ Is there a place listing packages for which porting help is required (for 13.04 now, I guess)?19:59
barryNickE68: yes:19:59
barryplease ping me in #ubuntu-devel for more info.  we'd *love* the help!20:00
ClassBotLogs for this session will be available at http://irclogs.ubuntu.com/2012/08/28/%23ubuntu-classroom.html20:00
=== ChanServ changed the topic of #ubuntu-classroom to: Welcome to the Ubuntu Classroom - https://wiki.ubuntu.com/Classroom || Support in #ubuntu || Upcoming Schedule: http://is.gd/8rtIi || Questions in #ubuntu-classroom-chat ||
=== Viper is now known as Guest49451
cc_INCI'm probably too late...20:18
ClassBotLogs for all classroom sessions that take place in #ubuntu-classroom can be found on http://irclogs.ubuntu.com/20:18
cc_INCHey that's great pleia2, thanks!!!20:19
cc_INCYou're a star...cheers...20:19
BlessJahk 1120:19
DarkStorm_Hello, people! I would have joined yesterday but Hurricane(?) Isaac killed my power :<20:37
netzviehhi DarkStorm_20:43
chilicuilotro 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)21:00

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