[01:09] <royd> help load
[01:10] <royd> part
[01:34] <ingenium> re
[09:50] <superZoom> hi all
[09:50] <benonsoftware> Hello superZoom
[09:51] <superZoom> looking forward for this session
[09:51] <superZoom> excited!!! what about you ???
[09:51] <benonsoftware> sadly I will not be able to attend
[09:51]  * benonsoftware is running a session :P
[09:52] <superZoom> how silly i am ;-)
[09:52] <benonsoftware> What?
[09:53] <superZoom> i mean your running a session and I am asking you about attaining  it
[09:55] <benonsoftware> :P
[09:57] <superZoom> is this session going to be IRC only??? I mean no screen share or Remote Desktop view ??
[09:57] <superZoom> or Voice ??
[09:57] <benonsoftware> No sorry
[10:56] <calmpitbull> Hi all
[11:13] <Gligorijan> hello ubuntu!
[11:16] <stas> stas2
[11:21] <tehr> when does the next session start?
[11:22] <dholbach> tehr, https://wiki.ubuntu.com/UbuntuDeveloperWeek → 15:00 UTC
[11:22] <dholbach> which is in roughly 3h30m
[11:22] <tehr> thnx dholbach
[11:23] <simmel> dholbach: You are *too* nice = )
[11:23] <dholbach> no, I'm not :)
[11:23] <tsega> @dholbach great didn't miss it
[11:23] <meetingology> tsega: Error: "dholbach" is not a valid command.
[11:23] <tsega> great didn't miss it
[12:23] <jrzabott> hellow...
[12:25] <jrzabott> Someone, please, can help me, how did the development week works?
[12:26] <aquarius> jrzabott, heya. Developer Week is a series of online talks, done in this channel, starting later on today.
[12:26] <aquarius> jrzabott, you should join both this channel and #ubuntu-classroom-chat
[12:26] <aquarius> Once Developer Week starts, only the speaker is allowed to talk in here, but anyone can talk, ask questions, or discuss the talk in #ubuntu-classroom-chat
[12:27] <aquarius> the text of each of the talks is also published after the week is over, if you miss any talks.
[12:27] <aquarius> jrzabott, the person running Developer Week is dholbach, who is lovely and helpful.
[12:28] <jrzabott> Cool!!! Thanks everybody... i'm using the ircII, and i'm a little bit lost...  How can I join the other channel? just /join #channel
[12:29] <dholbach> check out https://wiki.ubuntu.com/UbuntuDeveloperWeek and the links in there
[12:29] <jrzabott> I never used Irc in linux before... LOL... don't know any client.
[12:29] <dholbach> yeah, just /join #ubuntu-classroom-chat
[12:51] <mohitkumar> why does sometime shared drive feature does not work ?
[12:54] <aquarius> mohitkumar, the best place to ask technical questions is in #ubuntu -- this channel is really for giving talks about Ubuntu at specific times, so there aren't many people in it who could help.
[13:49] <medberry> dholbach, are the back to back 30 minute sessions really the same content (or is it more like an hour long session?)
[13:49] <dholbach> medberry, an hour long
[13:49] <medberry> thanks.
[13:54] <ET1> hello
[13:57] <umituzun> Hi there
[13:58] <amigokaran> What time is the first session starting?
[13:58] <Atlantic777> 15:00 UTC
[13:58] <Palmwedler> 15:00 UTC
[13:58] <fecub> 15
[13:58] <dholbach> in around one hour
[13:59] <amigokaran> Awesome, thanks!
[13:59] <dholbach> if you type    date; date -u    in a terminal, you will get your current time and UTC time
[13:59] <umituzun> thanks too
[14:02] <palladin35y> i'm early right ?
[14:03] <dragly> palladin35y, sorry, no - all the good cookies are already eaten
[14:03] <umituzun> yeah right
[14:03] <dragly> palladin35y, but the session hasn't started yet, no ;)
[14:04] <palladin35y> oh man no cookies
[14:04] <palladin35y> thanks  dragly
[14:05] <toni> 1 more hour. I suggest new commers (like me) to read this: https://wiki.ubuntu.com/IRC/Guidelines?action=show&redirect=IrcGuidelines
[14:06] <galileo_> exit
[14:10] <zgr> hey guys shows start in 48 min?
[14:11] <Rbitch> when the class is supposed to start?
[14:11] <LyzardKing> 50 minutes
[14:11] <LyzardKing> more or less
[14:12] <Rbitch> thank ya :)
[14:13] <yuanfei> Too late for me in China...
[14:14] <kai1> exit
[14:18] <devkorcvince> a big classroom we have here hope i can see my seatmate lol [kablam coffee mode]...
[14:31] <jrzabott> da;date -u
[14:31] <konor> date -u
[14:31] <konor> da;date -u
[14:31] <konor> :)\
[14:32] <dholbach> konor, jrzabott: open a terminal window, then type it in there
[14:32] <jrzabott> kkk
[14:32] <jrzabott> i've opened... bt te focus hasn't changed.
[14:32] <jrzabott> sometimes it happens here. LOL
[14:33] <jrzabott> sorry everybody.
[14:33] <palladin35y> np man
[14:51] <amigokaran> Hey, can anyone give an brief description of how this class will be conducted on IRC?
[14:52] <tejaswidp> check the wiki?
[14:52] <kbmonkey> ttps://wiki.ubuntu.com/UbuntuDeveloperWeek/JoiningIn
[14:53] <dholbach> amigokaran, I'll give a quick introduction when we start
[14:54] <amigokaran> Ok awesome that will help
[15:00] <dholbach> WELCOME EVERYBODY TO UBUNTU DEVELOPER WEEK!
[15:01] <dholbach> First of all a few introductory and organisational bits before we get started with out first session.
[15:01] <Sherlock_> 212
[15:01] <dholbach> Here's how this whole event is going to work:
[15:01] <dholbach> in #ubuntu-classroom the presenter will hold the session, explain and demo everything
[15:01] <dholbach> in #ubuntu-classroom-chat we all can chat and ask questions
[15:02] <dholbach> so if you haven't joined #ubuntu-classroom-chat yet, please do so
[15:02] <dholbach> also if you ask questions, please make sure you prefix them with QUESTION:
[15:03] <dholbach> QUESTION: What music do you like?
[15:03] <dholbach> etc. :)
[15:04] <dholbach> also if you have any problems following the session, you can ask in #ubuntu-classroom-chat where we have lots of experience and helpful people who will sort you out :)
[15:04] <dholbach> Alright, here we go with Session 1!
[15:05] <dholbach> My name is Daniel Holbach, I have been involved in Ubuntu since the second release and always loved the community, with a particular focus on development things.
[15:05] <dholbach> In the next hour I'll give you a first introduction to Ubuntu development
[15:05] <dholbach> and in the following session, also an hour, I'll help you set up a development environment on your machine
[15:05] <dholbach> if you have any questions, please ask in #ubuntu-classroom-chat
[15:06] <dholbach> also tell me if something was unclear or if I'm going too fast :)
[15:06] <dholbach> something I forgot earlier which is asked very often: yes, we will post the logs on https://wiki.ubuntu.com/UbuntuDeveloperWeek once the sessions are over, so if you can't make it to a session, you can still read it later on :)
 dholbach: would training here be relevant for linux-mint?? since its built on ubuntu?
[15:07] <dholbach> bjhaid, yes, the vast majority of the content of the sessions will be applicable to all Debian and Ubuntu derivatives
[15:07] <dholbach> some of the infrastructure bits will likely be different
[15:08] <dholbach> Let's get cracking. :-)
[15:08] <dholbach> Ubuntu is made up of thousands of different components, written in many different programming languages.
[15:08] <dholbach> very component - be it a software library, a tool or a graphical application - is available as a source package.
[15:08] <dholbach> Source packages in most cases consist of two parts: the actual source code and metadata. Metadata includes the dependencies of the package, copyright and licensing information, and instructions on how to build the package.
[15:08] <dholbach> Once this source package is compiled, the build process provides binary packages, which are the .deb files users can install.
[15:09] <dholbach> This means we never deal with binary or compiled code, this is "open source" software after all. :)
[15:09] <dholbach> Every time a new version of an application is released, or when someone makes a change to the source code that goes into Ubuntu, the source package must be uploaded to Launchpad’s build machines to be compiled.
[15:10] <dholbach> The resulting binary packages then are distributed to the archive and its mirrors in different countries. The URLs in /etc/apt/sources.list point to an archive or mirror.
[15:10] <dholbach> Every day CD images are built for a selection of different Ubuntu flavours. Ubuntu Desktop, Ubuntu Server, Kubuntu and others specify a list of required packages that get on the CD. These CD images are then used for installation tests and provide the feedback for further release planning.
 QUESTION: how important/useful is Python for Ubuntu development? It is a language that I decided to dedicate all my skills and learning.
[15:11] <dholbach> jrzabott, It is important and is used a lot. Still there are many other languages used, C, C++, Perl and others for example.
[15:11] <dholbach> Any more questions up until here?
[15:12] <dholbach> Alright, let's move on then - I'll talk a bit about release cycle now.
[15:12] <dholbach> Ubuntu’s development is very much dependent on the current stage of the release cycle.
[15:12] <dholbach> We release a new version of Ubuntu every six months, which is only possible because we have established strict freeze dates.
[15:12] <dholbach> With every freeze date that is reached developers are expected to make fewer, less intrusive changes.
[15:12] <dholbach> If you have a look at https://wiki.ubuntu.com/PrecisePangolin/ReleaseSchedule you can see the release schedule for the 12.04 (precise) cycle.
[15:13] <dholbach> Feature Freeze is the first big freeze date after the first half of the cycle has passed.
[15:13] <dholbach> We are still roughly 2 weeks away from it.
[15:13] <dholbach> At this stage features must be largely implemented. The rest of the cycle is supposed to be focused on fixing bugs.
[15:13] <dholbach> After that the user interface, then the documentation, the kernel, etc. are frozen, then the beta release is put out which receives a lot of testing.
[15:13] <dholbach> From the beta release onwards, only critical bugs get fixed and a release candidate release is made and if it does not contain any serious problems, it becomes the final release.
[15:14] <ClassBot> i_can_bot_maybe_ asked: when I install an application from the software center are the sources downloaded and then built or are they built and then downloaded?
[15:14] <dholbach> i_can_bot_maybe_, no, if you install a package in software-center, it's only the .deb (binary) packages installed
[15:14] <dholbach> the source still is available from Launchpad and mirrors as well
[15:15] <dholbach> I'll cover in the second session how to get the source for packages
[15:15] <ClassBot> jrzabott asked: can we abandon C, with the Cpython use?
[15:15] <dholbach> jrzabott, I doubt it - I doubt the kernel developers (among others) would be happy to switch. ;-)
[15:15] <ClassBot> kbmonkey asked: For Debian-based distros, who don't rely on Launchpad, the source goes into the deb mirrors instead?
[15:16] <dholbach> kbmonkey, exactly - Debian for example uses ftp.<countrycode>.debian.org mirrors
[15:16] <ClassBot> kyoushuu asked: ​ Are translations affected by the Feature Freeze?
[15:16] <dholbach> kyoushuu, no - strings for translations are subject of release freezes a bit later
[15:17] <dholbach> luckily we'll have a session about internationalisation (i18n) later this week! :-)
[15:17] <dholbach> ... with more juicy details
[15:17] <ClassBot> se4n_ asked: Why store binaries in .debs for all platforms when the source could be put in a .deb and compiled on the end users machine?
[15:18] <dholbach> se4n_, the problem is that you would have to 1) install all the source headers and development tools on all the machines in the world and 2) with some packaging taking several hours to build it's just not practicable
[15:18] <ClassBot> vikram360 asked: I was reading online that since ubuntu is supported largely by a corporation, developers are pressured into meeting deadlines i.e the dates are adhered to extremely strongly, and this sometimes leads to a somewhat shaky codebase, could someone please comment on this
[15:19] <dholbach> vikram360, that's not quite accurate :-)
[15:19] <dholbach> vikram360, as I mentioned before, we have freeze dates and they are agreed on a long time in advance already
[15:19] <dholbach> so if you have a look at the Ubuntu wiki you will find preliminary freeze/release dates for the next few releases already
[15:20] <dholbach> also it doesn't make a difference if you work for Canonical or not, these freeze dates are what counts
[15:20] <dholbach> if you have good enough reasons to have to get an exception the release team might give you one
[15:20] <dholbach> also there's a release team meeting every single week
[15:20] <dholbach> so these things should not come "out of the blue" to you
[15:21] <ClassBot> ashickur-noor asked: i18n, is this is a new method? I know 10n
[15:21] <dholbach> ashickur-noor, i18n is just short for internationalisation
[15:21] <ClassBot> yak12 asked: ​ Why does ubuntu have such a short release schedule?
[15:21] <dholbach> yak12, personally I feel Ubuntu has proven in the last few years (with just one slipped release date), that 6 months work out quite well
[15:22] <dholbach> it's a good compromise between allowing time for new features, but also making sure that there's focus on getting a product out there
[15:22] <dholbach> alright, let's crack on :)
[15:22] <dholbach> Thousands of source packages, billions of lines of code, hundreds of contributors require a lot of communication and planning to maintain high standards of quality.
[15:22] <dholbach> At the beginning of each release cycle we have the Ubuntu Developer Summit where developers and contributors come together to plan the features of the next releases.
[15:22] <dholbach> Every feature is discussed by its stakeholders and a specification is written that contains detailed information about its assumptions, implementation, the necessary changes in other places, how to test it and so on.
[15:23] <dholbach> This is all done in an open and transparent fashion, so even if you can not attend the event in person, you can participate remotely and listen to a streamcast, chat with attendants and subscribe to changes of specifications, so you are always up to date.
[15:23] <dholbach> Not every single change can be discussed in a meeting though, particularly because Ubuntu relies on changes that are done in other projects.
[15:23] <dholbach> That is why contributors to Ubuntu constantly stay in touch.
[15:23] <dholbach> Most teams or projects use dedicated mailing lists to avoid too much unrelated noise.
[15:23] <dholbach> For more immediate coordination, developers and contributors use Internet Relay Chat (IRC). All discussions are open and public.
[15:24] <ClassBot> UbuntuFlo asked: ​ is there any chance to see ubuntu becoming a rolling-release-distribution – or at least a dedicated derivat
[15:25] <dholbach> UbuntuFlo, I have no idea how that's supposed to work - the 1 million dollar question is: how do you both do great feature development and give it good testing - also: you'll have to shove out terrabytes of updates to millions of users
[15:25] <dholbach> it sounds like an interesting theoretical experiment, but maybe I haven't read a practical proposal yet :)
[15:25] <ClassBot> kyoushuu asked: ​ How can we participate remotely to the Ubuntu Dev Summit?
[15:26] <dholbach> kyoushuu, http://uds.ubuntu.com/participate/remote/ (there's IRC rooms, voice feeds, mail updates, and the like)
[15:26] <dholbach> Another important tool regarding communication is bug reports. Whenever a defect is found in a package or piece of infrastructure, a bug report is filed in Launchpad.
[15:27] <dholbach> All information is collected in that report and its importance, status and assignee updated when necessary. This makes it an effective tool to stay on top of bugs in a package or project and organise the workload.
[15:27] <dholbach> And we will have lots of sessions this week about how to deal with bug reports and how to fix them. It's going to be awesome!
[15:27] <dholbach> Most of the software available through Ubuntu is not written by Ubuntu developers themselves. Most of it is written by developers of other Open Source projects and then integrated into Ubuntu.
[15:28] <dholbach> These projects are called “Upstreams”, because their source code flows into Ubuntu, where we “just” integrate it.
[15:28] <dholbach> The relationship to Upstreams is critically important to Ubuntu. It is not just code that Ubuntu gets from Upstreams, but it is also that Upstreams get users, bug reports and patches from Ubuntu (and other distributions).
[15:28] <dholbach> The most important Upstream for Ubuntu is Debian. Debian is the distribution that Ubuntu is based on and many of the design decisions regarding the packaging infrastructure are made there.
[15:28] <dholbach> Traditionally, Debian has always had dedicated maintainers for every single package or dedicated maintenance teams. In Ubuntu there are teams that have an interest in a subset of packages too, and naturally every developer has a special area of expertise, but participation (and upload rights) generally is open to everyone who demonstrates ability and willingness.
[15:29] <dholbach> The great thing is: we will also have sessions about how to work with and work in Debian this week. So you'll be covered there as well! :)
[15:30] <ClassBot> ashickur-noor asked: Is there any chance that Ubuntu become Commercial like RHL?
[15:30] <dholbach> ashickur-noor, There is commercial support for Ubuntu, yes. But if ask if Ubuntu will one day cost money so you can use it, no.
[15:30] <ClassBot> pawel_st asked: ​ Since you have to support ~3 past releases (and not only the current one), how do you keep track of what needs to be updated & where (and who is doing this?). This seems like a HUGE task. I suppose you have to track CVEs, debian bug database etc..
[15:31] <dholbach> without taking too much content away from other sessions: the great thing about launchpad is: it can track bugs in multiple places
[15:31] <dholbach> so let's say we just find out that an application has been broken in a seldom used use cases since the last 3 releases and that it's also broken in Debian and upstream
[15:32] <dholbach> Launchpad can track cases like this easily and also will give us updates about bug reports in Debian (or other distros) and upstream :)
[15:32] <dholbach> but I agree with you: it's quite a bit of work to maintain stable releases
[15:32] <ClassBot> _rahmat_ asked: i'm new in ubuntu development where should I start?
[15:32] <dholbach> _rahmat_, I hope that by the end of Ubuntu Developer Week you should have a good idea of what you can do, how it works and how you can help out
[15:32] <dholbach> I'll also share some more links by the end of my session :)
[15:33] <ClassBot> tejaswidp asked: how different is debian sid from ubuntu?
[15:33] <dholbach> a great question :)
[15:34] <dholbach> if you go back to the release cycle overview I gave earlier
[15:34] <dholbach> up until Debian Import Freeze we automatically sync code from unstable (given that we are working on an LTS release now, we sync from testing instead)
[15:34] <dholbach> this is done as a measure to let the code solidify
[15:34] <dholbach> also in other parts you will notice that Ubuntu is "ahead of Debian" in terms of newer versions
[15:35] <dholbach> it always depends on the development focuses of the two, when they plan to release, what the release goals are, etc
[15:35] <dholbach> so I can't give you concrete numbers, but I feel we're doing a much much better job at staying in sync
[15:35] <ClassBot> Aj2012 asked: For upstream project, how bug reports are reported to original authors. Who fixes them?
[15:36] <dholbach> Aj2012, bug reports are forwarded to upstream projects manually, after we collected all the necessary information
[15:36] <dholbach> sometimes you will find that Ubuntu contributors forward patches to upstream, sometimes you will see that they are fixed upstream first
[15:36] <ClassBot> ashickur-noor asked: I want to be a developer, from where I can start?
[15:36] <dholbach> ashickur-noor, you're exactly right here - more links later
[15:36] <ClassBot> raywang asked: could we have a pdf document like to track all of these, so that we can review and learn from it.
[15:36] <dholbach> raywang, yes, I'll give out some links later on
[15:37] <ClassBot> jincreator asked: If Debian is one upstream of Ubuntu, can some packages in Ubuntu be upstream of Debian?
[15:38] <dholbach> jincreator, yes, this has happened a couple of times already - something originated in Ubuntu, then was forwarded to Debian and got maintained there or Ubuntu stayed upstream
[15:38] <ClassBot> vikram360 asked: why did ubuntu choose to go with launchpad and bazaar rather than something like bugzilla and git/mercurial?
[15:38] <dholbach> vikram360, Launchpad gives us many many benefits (like the automatic bug tracking in other bugzillas), a close integration with our build services, etc
[15:38] <dholbach> I hope by the end of my 2 sessions it will be a bit clearer what our infrastructure can do for you
[15:39] <ClassBot> burli_ asked: ​ what is the preferred language/toolkit, especially if I want to develop lenses or apps for Ubuntu TV/Tablet/Phone? I guess, Python is not the best choice for ARM devices?
[15:39] <dholbach> burli_, I would suggest you wait until the session about Unity Lenses later on to get a specific answer for the question :)
[15:39] <dholbach> but yes, python is absolutely acceptable, even on ARM devices
[15:40] <ClassBot> jincreator asked: Is it possible to get new one from upstream to even "released" Ubuntu? I only see new version of Firefox is landing... If then, what kind of process is needed?
[15:40] <dholbach> jincreator, yes, it's possible - there's either the "stable release update" process or the "backport" process
[15:40] <dholbach> you should find explanation for both on the Ubuntu wiki
[15:40] <ClassBot> Valentin asked: ​ Will something like this be realistic someday? http://nrutledge.blogspot.com/p/ubuntu-laptop-concept.html
[15:41] <dholbach> I'm sorry - I don't have the time to read the blog post now - I still have a bunch of things to go through
[15:41] <dholbach> maybe I can suggest #ubuntu-design to discuss the question in the meantime
[15:41] <ClassBot> Aj2012 asked: I have small app. I want to learn packaging to make it available via launchpad. Could you please share beginners guide to learn packaging
[15:41] <dholbach> Aj2012, yes, I'll share some links about this topic after the session :)
[15:41] <ClassBot> Niagr asked: Why can't ubuntu receive feature updates?
[15:42] <dholbach> Niagr, I think I alluded to this earlier already: you have to strike a balance between stability and testing vs. new features - supporting stable releases is hard work when it comes to testing, code review and other things -- it's very expensive to hack on multiple releases at the same time
[15:42] <dholbach> alright
[15:43] <dholbach> let's talk a bit about how we would go about getting changes into Ubuntu
[15:43] <dholbach> Getting a change into Ubuntu as a new contributor is not as daunting as it seems and can be a very rewarding experience. It is not only about learning something new and exciting, but also about sharing the solution and solving a problem for millions of users out there.
[15:43] <dholbach> Open Source Development happens in a distributed world with different goals and different areas of focus. For example there might be the case that a particular Upstream might be interested in working on a new big feature while Ubuntu, because of the tight release schedule, might be interested in shipping a solid version with just an additional bug fix.
[15:43] <dholbach> That is why we make use of “Distributed Development”, where code is being worked on in various branches that are merged with each other after code reviews and sufficient discussion.
[15:44] <dholbach> That's why for example Ubuntu might decide to ship version 1.0 of a particular package, while upstream is working on 2.0 - and just to fix a couple of bugs ship additional patches from the 2.0 works.
[15:44] <dholbach> you can see how this quickly gets complicated with thousands of packages, thousands of people interacting and each project maintaining multiple releases
[15:45] <dholbach> The goal always is: finding a solution which everybody benefits from, but that can be hard.
[15:45] <dholbach> Let's say you wanted to get a fix into Ubuntu - what would you do?
[15:45] <dholbach> To fix a bug in Ubuntu, you would first get the source code for the package, then work on the fix, document it so it is easy to understand for other developers and users, then build the package to test it.
[15:46] <dholbach> After you have tested it, you can easily propose the change to be included in the current Ubuntu development release. A developer with upload rights will review it for you and then get it integrated into Ubuntu.
[15:46] <dholbach> When trying to find a solution it is usually a good idea to check with Upstream and see if the problem (or a possible solution) is known already and, if not, do your best to make the solution a concerted effort.
[15:46] <dholbach> Additional steps might involve getting the change backported to an older, still supported version of Ubuntu and forwarding it to Upstream.
[15:46] <dholbach> Any questions about this in particular? :)
[15:47] <ClassBot> kbmonkey asked: so if I patch a UI bug in say vlc, it would reach Ubuntu in a timely fashion. How can I propose this patch be pushed downstream before that time?
[15:47] <dholbach> kbmonkey, the short answer is: get the code of the package in Ubuntu, apply the patch, push it to Launchpad, propose it for merge into Ubuntu
[15:48] <dholbach> we'll have several sessions this week just about this topic, so you can easily find out the specific commands
[15:48] <dholbach> but yes, in general it's totally possible to get the fix into Ubuntu before an upstream release is made
[15:48] <dholbach> we have a patch pilots for every day who go and review code contributions
[15:48] <ClassBot> jrzabott asked: May we have some idea of numbers about the development... For example in the release of 11.04 with unity, i've tried since alpha, and had a lot of bugs... and how many people officially act writing and correct this kind of 'modules' from ubuntu? I'm not sure if i made myself clear.
[15:49] <dholbach> jrzabott, there's hundreds of people directly uploading and proposing changes for Ubuntu
[15:49] <dholbach> but there's even more people who work on modules (other open source projects and their software authors)
[15:50] <dholbach> so it's not quite easy to give a good number which explains everything :)
[15:50] <ClassBot> s9iper1 asked: bilal is here..can you tell me the merging process when the bug got fixed and than we have to merge the branches is there any guide in ubuntu  fro that or anything?
[15:50] <ClassBot> There are 10 minutes remaining in the current session.
[15:51] <dholbach> s9iper1, hey Bilal - yes, I'll share the links later on - basically you want to: bzr branch <branch>; <edit and fix>; bzr commit -m <message>; bzr push <location>; bzr lp-open; <click on "propose for merging">
[15:51] <dholbach> but as I said: we'll have more sessions about this
[15:51] <dholbach> AND I'll share links later on :)
[15:51] <ClassBot> jacopoL asked: How can I decide when it is better to propose a patch upstream and when to propose it to Ubuntu?
[15:51] <dholbach> jacopoL, great question!
[15:52] <dholbach> for example if you have a typo fix somewhere - as it's not something critical, you can just forward the fix to the upstream authors and trust that Ubuntu will get the fix with the next release "for free"
[15:52] <dholbach> if we have a crash in an important application just a few weeks before release: get it into Ubuntu (and then forward the fix upstream)
[15:53] <dholbach> severity of the problem and time in the release process are guiding factors I would say
[15:53] <ClassBot> fecub_ asked: where can i do all this things, in the launchpad? a developer with upload rights where i can find them?
[15:53] <dholbach> fecub_, if you use the method I described earlier (push change to Launchpad, propose for merging), developers with upload rights will be notified and the fix will end up in a review queue
[15:54] <dholbach> but as I said: more links later and we'll have separate sessions about Ubuntu Distributed Development (UDD) and bug fixing, bug fixing, bug fixing :)
[15:54] <ClassBot> _rahmat_ asked: is this session logged? where is the log located? thanks
[15:54] <dholbach> _rahmat_, yes - the logs will be put up later on at https://wiki.ubuntu.com/UbuntuDeveloperWeek
[15:54] <dholbach> but also you can find them on irclogs.ubuntu.com
[15:55] <dholbach> alright, to conclude this first session, here's what it takes to get involved with Ubuntu development
[15:55] <dholbach> The most important requirements for success in Ubuntu development are: having a knack for “making things work again,” not being afraid to read documentation and ask questions, being a team player and enjoying some detective work.
[15:55] <ClassBot> There are 5 minutes remaining in the current session.
[15:55] <dholbach> You don't need to be a C/Perl/Java/C++/Python hero. If you have some of the qualities above, you're right here. :-)
[15:55] <dholbach> Good places to ask your questions are ubuntu-motu@lists.ubuntu.com and #ubuntu-motu on irc.freenode.net. You will easily find a lot of new friends and people with the same passion that you have: making the world a better place by making better Open Source software.
[15:56] <ClassBot> tejaswidp asked: Why was such a drastic change made to the ui by bringing in unity? (I don't know if)
[15:56] <dholbach> tejaswidp, Unity suits a lot of use-cases on a variety of devices.
[15:56] <dholbach> and I don't feel this session is the best place to debate about it
[15:57] <dholbach> instead I would propose we take 3 minutes break and get back fresh for session 2 :)
[15:57] <dholbach> thanks everyone - see you in 3 minutes with fresh tea, water or whatever else you might prefer. :)
[16:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[16:01] <dholbach> alright my friends
[16:01] <dholbach> welcome back to session 2 at UDW
[16:01] <dholbach> for those of you who just joined: please make sure you also join #ubuntu-classroom-chat so you can ask questions there
[16:01] <dholbach> also make sure you prefix them with QUESTIONS:, ie:
[16:01] <dholbach> QUESTION: What kind of music do you like?
[16:02] <dholbach> This session will be about getting your development environment set up.
[16:02] <dholbach> but let's first clear out our queue of questions from the last session
[16:02] <dholbach> ok, it seems ClassBot forgot the questions - let me get them from the backlog - one sec
 QUESTION: ​ dholbach: what version of ubuntu are you working with (private/job)? are you always using the actual development-version?
[16:03] <dholbach> UbuntuFlo, I usually upgrade to the development version early on.
[16:03] <dholbach> Incidentally we have a session this week about how you can easily install the dev version without having to break your current system - so stay tuned for that :)
 QUESTION: Ubuntu ships with few default set of libraries. Where can I find the recommendation about them? I feel that if my application rely more those, then ultimately it would result in fewer dependency and less more packages to download while installing my app.
[16:04] <dholbach> Aj2012, we will have a session later today with an Ubuntu Technology overview which should answer a lot of this question already
[16:04] <dholbach> additionally I could suggest to check out developer.ubuntu.com with documentation about libraries you can most easily use
 QUESTION: what's the best way of requesting a mentor? I tried motu-mentoring-reception@reponses.net but didn't get a reply
[16:05] <dholbach> alco, unfortunately our mentoring team is defunct at the moment - we got more requests in than we could handle
[16:05] <dholbach> that's the bad news
[16:05] <dholbach> the good news is: we have better documentation than ever (links later on)
[16:05] <dholbach> AND:
[16:05] <dholbach> you can join #ubuntu-motu where we have lots of very helpful people who can get you started
 QUESTION: anything wrong with using netbeans?
[16:06] <dholbach> kanliot, nothing wrong at all - the Java bits might require some specific packaging and the user to install Java libraries afterwards (if you want to package your Java application)
[16:06] <dholbach> but if Java is what you are comfortable with: use it :)
[16:07] <dholbach> Ok, I hope I got all questions in the queue, so let's get cracking getting our development environment set up.
[16:08] <ClassBot> Ceno asked: Where can I read a log of the 3 o'clock session?
[16:08] <dholbach> Ceno, we will put up the logs later on at https://wiki.ubuntu.com/UbuntuDeveloperWeek
[16:08] <dholbach> if you need them earlier, check out irclogs.ubuntu.com
[16:08] <dholbach> There are a number of things you need to do to get started developing for Ubuntu. This article is designed to get your computer set up so that you can start working with packages, and upload your packages to Ubuntu’s hosting platform, Launchpad.
[16:08] <dholbach> Here’s what we’ll cover:
[16:08] <dholbach>  - Installing packaging-related software. This includes:
[16:09] <dholbach>   - Ubuntu-specific packaging utilities
[16:09] <dholbach>   - Encryption software so your work can be verified as being done by you
[16:09] <dholbach>   - Additional encryption software so you can securely transfer files
[16:09] <dholbach>  - Creating and configuring your account on Launchpad
[16:09] <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:09] <dholbach> So as I mentioned earlier: it's advisable to run the current development release if that's what you are working on
[16:09] <dholbach> but if you don't have it running right now: no big deal
[16:10] <dholbach> you can easily just retrace your steps later on
[16:10] <dholbach> and as I said: there's a session about running the development release later this week
[16:10] <dholbach> There are a number of tools that will make your life as an Ubuntu developer much easier.
[16:11] <dholbach> If you run 11.10 or 12.04, run this command:
[16:11] <dholbach>   sudo apt-get install packaging-dev
[16:11] <dholbach> If you run an older release, run this command instead:
[16:11] <dholbach>   sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file
[16:11] <dholbach> This will obviously take some time, but I'll just keep on talking :)
[16:11] <dholbach> This command will install the following software:
[16:12] <dholbach>  - gnupg – GNU Privacy Guard contains tools you will need to create a cryptographic key with which you will sign files you want to upload to Launchpad.
[16:12] <dholbach>  - pbuilder – a tool to do a reproducible builds of a package in a clean and isolated environment.
[16:12] <dholbach>  - ubuntu-dev-tools (and devscripts, a direct dependency) – a collection of tools that make many packaging tasks easier.
[16:12] <dholbach>  - bzr-builddeb (and bzr, a dependency) – distributed version control with Bazaar, a new way of working with packages for Ubuntu that will make it easy for many developers to collaborate and work on the same code while keeping it trivial to merge each others work.
[16:12] <dholbach>  - apt-file provides an easy way to find the binary package that contains a given file.
[16:12] <ClassBot> google_ asked: can we use ubuntu in virtual box for ubuntu development?
[16:13] <dholbach> google_, yes, definitely - it's one of the "safe" ways to run the development release
[16:13] <dholbach> Tomorrow 18:00 UTC will be a session called "Running the development release"
[16:13] <ClassBot> lukestuts asked: Can you recommend a good introduction to packaging and setting up your own PPA?
[16:13] <dholbach> lukestuts, yes - I'll share some links at the end of the session
[16:13] <ClassBot> Kvrmurthy asked: What topics are covered till now?
[16:14] <dholbach> Kvrmurthy, in the session I did before I covered the basics of Ubuntu development (an overview over all the moving parts) and now we'll set up our development environment
[16:14] <ClassBot> dnewkirk asked: While we need to be testing packages and fixes in the actual release, how valuable is this before, say, beta? The toolchain changes of course, but it seems problematic as the alphas have a lot of turmoil especially for non-LTS releases...
[16:15] <dholbach> dnewkirk, testing all the time is super important - of course I wouldn't ask my dad, mom, sister or brother to do it - they have other things to do and want a stable system
[16:15] <dholbach> but for those of us who enjoy Ubuntu and want to spare some time contributing to it, it makes sense to go and test as early as possible :)
[16:15] <dholbach> ... in a safe way, like a VM, as I mentioned earlier
[16:15] <ClassBot> kbmonkey asked: I run 11.04, but enabled backports and installed packaging-dev. This will do just the same?
[16:16] <dholbach> kbmonkey, if there's a package called packaging-dev and  you can install it, you should be all set
[16:16] <ClassBot> fantasti1001 asked: can anyone who doesn't use ubuntu be ubuntu developer?
[16:16] <dholbach> fantasti1001, it's a bit tough to develop Ubuntu if you don't use it - I'd say that if you use a VM to develop, you are an Ubuntu user though
[16:16] <dholbach> alright, let's crack on :)
[16:17] <dholbach> = Create your GPG key =
[16:17] <dholbach> If you have a GPG key already created, skip these instructions, you just need one.
[16:17] <dholbach> GPG stands for GNU Privacy Guard and it implements the OpenPGP standard which allows you to sign and encrypt messages and files. This is useful for a number of purposes. In our case it is important that you can sign files with your key so they can be identified as something that you worked on. If you upload a source package to Launchpad, it will only accept the package if it can absolutely determine who uploaded the package.
[16:17] <dholbach> To generate a new GPG key, run:
[16:17] <dholbach>   gpg --gen-key
[16:18] <dholbach> GPG will first ask you which kind of key you want to generate. Choosing the default (RSA and DSA) is fine. Next it will ask you about the keysize. The default (currently 2048) is fine, but 4096 is more secure.
[16:18] <dholbach> Afterward, 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. The last questions will be about your name and email address.
[16:18] <dholbach> Just pick the ones you are going to use for Ubuntu development here, you can add additional email addresses later on. Adding a comment is not necessary. Then you will have to set a passphrase, choose a safe one (a passphrase is just a password which is allowed to include spaces).
[16:18] <dholbach> Now GPG will create a key for you, which can take a little bit of time; it needs random bytes, so if you give the system some work to do it will be just fine. Move the cursor around, type some paragraphs of random text, load some web page.
[16:19] <dholbach> ... or just continue listening to this session - just leave the terminal sitting there and doing its thing. :)
[16:19] <dholbach> = Create your SSH key =
[16:19] <dholbach> Again: if you have a SSH key already generated, skip these instructions. :)
[16:19] <dholbach> SSH stands for Secure Shell, and it is a protocol that allows you to exchange data in a secure way over a network. It is common to use SSH to access and open a shell on another computer, and to use it to securely transfer files. For our purposes, we will mainly be using SSH to securely upload source packages to Launchpad.
[16:20] <dholbach> If gpg is still sitting there creating your GPG key, just open another terminal window or tab.
[16:20] <dholbach> To generate an SSH key, enter:
[16:20] <dholbach>   ssh-keygen -t rsa
[16:20] <dholbach> The default file name usually makes sense, so you can just leave it as it is. For security purposes, it is recommended that you use a passphrase.
[16:21] <dholbach> Any questions so far?
[16:22] <ClassBot> kanliot asked: WHY DOES ssh need a key?  what does it protect?
[16:22] <dholbach> kanliot, to establish a safe connection (like SSH does), you need a public and private key to do proper encryption
[16:22] <dholbach> ssh is for example used if you push branches to Launchpad
[16:23] <dholbach> Alright... everything clear so far? All going according to plan?
[16:23] <dholbach> If not, hop into #ubuntu-classroom-chat and ask your question there. :)
[16:23] <ClassBot> jacopoL asked: Are there any requirements about using your real name instead of a nickname when uploading to Launchpad?
[16:24] <dholbach> jacopoL, I believe there's no strict requirement for using your real name, but it's what very close 100% in Ubuntu development do
[16:24] <ClassBot> gaurav__ asked: Can I change my GPG key in future if I want to?
[16:24] <dholbach> gaurav__, yes, you can add email address IDs to it, you can revoke it, add a new one, etc
[16:25] <dholbach> ah, coming back to the real name question:
[16:25] <dholbach> I think it's usually good and natural to publish good work you do under your own name - for example can it be a great referral when looking for jobs, etc
[16:26] <dholbach> Moving on...
[16:26] <dholbach> = Set up pbuilder =
[16:26] <dholbach> pbuilder allows you to build packages locally on your machine. It serves a couple of purposes:
[16:26] <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:26] <dholbach>  - There is no need to install all necessary build dependencies locally
[16:26] <dholbach>  - You can set up multiple instances for various Ubuntu and Debian releases
[16:26] <dholbach> Setting pbuilder up is very easy, just run:
[16:26] <dholbach>   pbuilder-dist <release> create
[16:26] <dholbach> in our case:
[16:27] <dholbach>   pbuilder-dist precise create
[16:27] <dholbach> This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.
[16:27] <dholbach> so again: if you have pbuilder already installed, skip this part - also: if it takes longer, just leave the terminal open and the tool doings its thing
[16:28] <dholbach> The great thing is: we are going to have a session about pbuilder later this week: Thu 2nd Feb - 16:30 UTC - "Building locally with pbuilder"
[16:28] <ClassBot> arcimboldo asked: is it possible to use pbuilder on a debian to compile ubuntu packages?
[16:28] <dholbach> arcimboldo, yes and vice versa
[16:29] <dholbach> Let's go back to
[16:29] <dholbach> = Your GPG key =
[16:30] <dholbach> Once the command is done, you will get a message similar to this one:
[16:30] <dholbach> pub   4096R/43CDE61D 2010-12-06
[16:30] <dholbach>       Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
[16:30] <dholbach> uid                  Daniel Holbach <dh@mailempfang.de>
[16:30] <dholbach> sub   4096R/51FBE68C 2010-12-06
[16:30] <dholbach> In the case above 43CDE61D is the key ID.
[16:30] <dholbach> Next, you need to upload the public part of your key to a keyserver so the world can identify messages and files as yours. To do so, enter:
[16:30] <dholbach>   gpg --send-keys <KEY ID>
[16:31] <dholbach> If you get an error message about no specified keyserver, do this instead:
[16:31] <dholbach>   gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>
[16:31] <dholbach> This will send your key to one keyserver, but a network of keyservers will automatically sync the key between themselves. Once this syncing is complete, your signed public key will be ready to verify your contributions around the world.
[16:31] <ClassBot> laza36 asked: ​ Are there gpg keys that are too old? I have one that was certified, but it's from 1999
[16:32] <dholbach> laza36, the encryption used 1999 might be a bit weak by now - I would suggest some reading on the internets
[16:33] <ClassBot> Ceno asked: can one person registered in launchpad have multiple GPG keys associated with him?
[16:33] <dholbach> Ceno, yes :)
[16:33] <dholbach> which leads us to our next topic :)
[16:34] <dholbach> = Get set up to work with Launchpad =
[16:34] <dholbach> With a basic local configuration in place, your next step will be to configure your system to work with Launchpad. Here's what we will do:
[16:34] <dholbach>  - Find out what Launchpad is and create a Launchpad account
[16:34] <dholbach>  - Upload your GPG and SSH keys to Launchpad
[16:34] <dholbach>  - Configure Bazaar to work with Launchpad
[16:34] <dholbach>  - Configure Bash to work with Bazaar
[16:35] <dholbach> Launchpad is the central piece of infrastructure we use in Ubuntu. It not only stores our packages and our code, but also things like translations, bug reports, and information about the people who work on Ubuntu and their team memberships. You will also use Launchpad to publish your proposed fixes, and get other Ubuntu developers to review and sponsor them.
[16:35] <dholbach> ... where "sponsor" means: upload packages in your stead, until you have upload rights yourself :)
[16:35] <dholbach> You will need to register with Launchpad and provide a minimal amount of information. This will allow you to download and upload code, submit bug reports, and more.
[16:35] <dholbach> Besides hosting Ubuntu, Launchpad can host any Free Software project.
[16:36] <ClassBot> vikram360 asked: how do i get past the postfix configuration window when installing pbuilder, neither the keyboard not the mouse seem to be working for me.
[16:36] <dholbach> vikram360, hum, I didn't have that happening to me - can you just press Enter to continue with the installation - can anyone help vikram360 in #ubuntu-classroom-chat?
[16:36] <ClassBot> burli_13 asked: ​ how I should handle keys in general? I have several computers an I make a fresh installation every release. Should I create new keys for each computer? Or can I use one key everywhere?
[16:37] <dholbach> burli_13, GPG key I copy over (just copy ~/.gnupg/) for SSH I create ssh keys for every machine
[16:37] <dholbach> Launchpad can easily deal with multiple SSH and GPG keys though
[16:37] <ClassBot> nava asked: what is best programming language for writting app for ubuntu ? (which do you suggest ?)
[16:37] <dholbach> nava, I personally use Python for almost everything
[16:38] <dholbach> but it depends - if you want something dealing very closely with hardware, you might want to use C
[16:38] <dholbach> for web apps, you might want to use PHP (Python is possible there too)
[16:38] <dholbach> there's many options
[16:38] <dholbach> developers.ubuntu.com might help also :)
[16:38] <ClassBot> nava asked: i hear canonical is writing a sdk for ubuntu tablet,tv, phone and also desktop is it true ? if yes what is ubuntu sdk language ?
[16:38] <dholbach> nava, you know much more than I do :)
[16:39] <dholbach> I don't know what's in the cards - the only thing I do now, is that developer.ubuntu.com is a beautiful site with lots of good docs about writing apps for Ubuntu :)
[16:39] <dholbach> and it's up and running NOW :)
[16:40] <ClassBot> alco asked: which is the most appropriate Python version for Ubuntu devel today? 2.7? 3.x?
[16:40] <dholbach> alco, 3.x and 3.7 are both installed on a default system, with 2.7 still being used in lots of places, the future is 3.x though
[16:40] <dholbach> alright, let's crack on :)
[16:41] <dholbach> If you haven't set up an Launchpad account yet, go to https://launchpad.net/+login
[16:41] <dholbach> Launchpad’s registration process will ask you to choose a display name. It is encouraged for you to use your real name here so that your Ubuntu developer colleagues will be able to get to know you better.
[16:41] <dholbach> When you register a new account, Launchpad will send you an email with a link you need to open in your browser in order to verify your email address. If you don’t receive it, check in your spam folder.
[16:41] <dholbach> I doubt we have the time to go through all the steps now, but here's where you can upload your GPG and SSH keys once you have your account set up:
[16:42] <dholbach> https://launchpad.net/~/+editpgpkeys
[16:42] <dholbach> https://launchpad.net/~/+editsshkeys
[16:42] <dholbach> (it's all rather self-explanatory and will just take a few minutes all in all)
[16:42] <dholbach> Bazaar is the tool we use to store code changes in a logical way, to exchange proposed changes and merge them, even if development is done concurrently. It is used for the new Ubuntu Distributed Development method of working with Ubuntu packages.
[16:42] <dholbach> To tell Bazaar who you are, simply run:
[16:42] <dholbach>   bzr whoami "Bob Dobbs <subgenius@example.com>"
[16:43] <dholbach>   bzr launchpad-login subgenius
[16:43] <dholbach> whoami will tell Bazaar which name and email address it should use for your commit messages. With launchpad-login you set your Launchpad ID. This way code that you publish in Launchpad will be associated with you.
[16:43] <dholbach> Note: 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:43] <ClassBot> vrubium asked: how can i guarante that an app for ubuntu is compatible wiht debian?
[16:44] <dholbach> vrubium, if you have written the app already, you can set up a debian virtual machine and test it in there
[16:44] <dholbach> if you plan to write it, it might make sense to check that all the libraries and modules you use are in Debian as well
[16:45] <dholbach> Now let's go and configure our shell
[16:45] <dholbach> Similar to Bazaar, the Debian/Ubuntu packaging tools need to learn about you as well. Simply open your ~/.bashrc in a text editor and add something like this to the bottom of it:
[16:45] <dholbach> export DEBFULLNAME="Bob Dobbs"
[16:45] <dholbach> export DEBEMAIL="subgenius@example.com"
[16:45] <dholbach> Now save the file and either restart your terminal or run:
[16:45] <dholbach>   source ~/.bashrc
[16:45] <dholbach> (If you do not use the default shell, which is bash, please edit the configuration file for that shell accordingly.)
[16:46] <dholbach> If all the steps above succeeded, you're done and you're up and running.
[16:46] <dholbach> :-)
[16:47] <dholbach> Any questions up until now?
[16:48] <ClassBot> Kvrmurthy asked: in bzr whoam i @example means "@launchpad" or my email "@gmail"?
[16:48] <dholbach> ClassBot, the email address you want to use for Ubuntu development
[16:48] <ClassBot> jrzabott asked: Do you have a tutorial in somewhere in the web, to configure the softwares, the enviromente, launchpad bazaar and etc, and a tutorial, right?
[16:49] <dholbach> yes, finally: links to docs!
[16:49] <dholbach> there's one link you need: http://developer.ubuntu.com/packaging/
[16:49] <dholbach> also if you want to stay on top of what's going on in the Ubuntu development world, follow:
[16:49] <dholbach> http://twitter.com/ubuntudev http://identi.ca/ubuntudev http://facebook.com/ubuntudev http://gplus.to/ubuntudev
[16:50] <dholbach> (one of them should be enough ;-))
[16:50] <ClassBot> kanliot asked: is there a specific ubuntu wiki page for this lecture?
[16:50] <dholbach> kanliot, the link above should get you all set
[16:50] <ClassBot> Ceno asked: bazaar is version control , similar do git right? Imagining we already have a software project using git what would be the best approach? ditch git and use bazaar instead? put our project in github and treat it as an upstream project?
[16:50] <ClassBot> There are 10 minutes remaining in the current session.
[16:51] <dholbach> Ceno, yes, bazaar is a version control system like git and many others - one of the great advantages of it (and I'm talking here as a almost 100% user of Bazaar, so take it with a grain of salt): its ease of use and its tight integration with Launchpad
[16:52] <dholbach> if you're happy with what you're using right now for your software development, keep on using it - there's no obligation to switch
[16:52] <dholbach> but try it out and see for yourself - I never felt like I was missing anything :-)
[16:52] <dholbach> In addition to the links above, I would like to mention #ubuntu-motu and ubuntu-motu@lists.ubuntu.com again
[16:53] <dholbach> these are places where you can very easily find helpful and clever people and after a while: good friends
[16:53] <dholbach> don't hesitate to ask your questions
[16:53] <dholbach> Any more questions before I turn the mic over to mhall119? :)
[16:54] <ClassBot> Atlantic777 asked: what about building .deb packages if we don't use debian-like distro? Should we just install an Ubuntu-dev into VM and make the package there?
[16:55] <dholbach> Atlantic777, a virtual machine is probably the easiest approach, a chroot might work for mere package building too
[16:55] <ClassBot> laza36 asked: ​ How can/is there some way/need that I test my SSH and gpg key that I just imported into launchpad?
[16:55] <ClassBot> There are 5 minutes remaining in the current session.
[16:55] <dholbach> laza36, ssh <launchpad id>@bazaar.launchpad.net
[16:56] <ClassBot> Kvrmurthy asked: export DEBFULLNAME="Bob Dobbs"
[16:56] <dholbach> Kvrmurthy, hum
[16:56] <dholbach> it was part of the commands supposed to be added to the bottom of your ~/.bashrc file
[16:56] <ClassBot> Ceno asked: this session has covered how to set up the environment. will there be a session explaining how to make a source package from our code and then send it to launchpad?
[16:57] <dholbach> Ceno, yes, there'll be Ubuntu Distributed Development tomorrow at 19:00 UTC
[16:57] <dholbach> there will also be many session about fixing bugs in Ubuntu this week, where it will also be used
[16:57] <ClassBot> jincreator asked: If I submit bug, request merge, ... and no answers from everyone for long time, what can I do?
[16:57] <dholbach> jincreator, join in #ubuntu-motu and ask
[16:58] <ClassBot> Kvrmurthy asked: export DEBFULLNAME="Bob Dobbs" export DEBEMAIL="subgenius@example.com" is this part of installation in ubuntu?  or answer to somebody's question?
[16:58] <dholbach> Kvrmurthy, ah yes - it's supposed to go at the bottom of your ~/.bashrc file
[16:58] <dholbach> alright my friends
[16:58] <dholbach> you all are awesome
[16:58] <dholbach> thanks a lot for joining Ubuntu Developer Week
[16:59] <dholbach> Bookmark http://developer.ubuntu.com/packaging/ - follow @ubuntudev - join #ubuntu-motu - let's help making Ubuntu better and the world a better place.
[16:59] <dholbach> Next up is Michael "mhall119" Hall who will give you the "Ubuntu Technology overview".
[17:00] <mhall119> hi everybody!
[17:00] <mhall119> so this is going to be a short session, only 30 minutes
[17:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[17:00] <mhall119> Most of what I'll be talking about here will be covered in more detail in other sessions
[17:01] <mhall119> so Ubuntu as a development platform provide a number of unique features that, as an application developer, you will probably want to work with
[17:02] <mhall119> I'm sure you all know Unity, the default desktop shell since Ubuntu 11.04
[17:02] <mhall119> but Unity is more than just a desktop, it's also a development platform that your apps can integrate with
[17:03] <mhall119> The launcher will use normal .desktop files, but you can also add what are called "QuickLists", a set of options for your application that are made available through the Unity interface
[17:03] <mhall119> your app doesn't even nee to be running
[17:04] <mhall119> for example, Thunderbird has QuickList items for composing a new email, or opening the address book
[17:05] <mhall119> in the Dash we have Lenses which let users quickly find content, both on their computer and off the internet
[17:06] <mhall119> we ship a set of default lenses, but it's easy to add your own, or even provide an additional "scope" to feed content from your application into any of the existing lenses
[17:06] <mhall119> there are currently over 50 lenses and scopes being developed for Unity
[17:07] <mhall119> Like QuickLists, your lenses and scopes will be available to users even when your application isn't running
[17:07] <mhall119> it's all integrated into the desktop
[17:07] <mhall119> in the top panel of Unity we have application indicators
[17:08] <mhall119> Indicators provide a more useful and user-friendly interface to application that are running, but may not have an active window
[17:08] <mhall119> they also let us group similar functionality and information
[17:09] <mhall119> for example, all your message notifications are available in the messaging indicator
[17:09] <mhall119> and you can control your speaker volume and music playback from the sound indicator
[17:09] <mhall119> all of these provide APIs that your application can use
[17:10] <ClassBot> pawel_st asked: ​ If I'm not mistaken, the current lens architecture & API assume all lenses are daemons. This has implications when more and more lenses are added to the system. What was the rationale for this architecture? Is there an alternate approach?
[17:10] <mhall119> so the rationale for keeping them separate is that we don't want a problem in one of them to crash everything else
[17:11] <mhall119> right now if a lens or scope crashes, everything else keeps working, and Unity will reload the daemon process for that one lens and try it again
[17:11] <mhall119> join #ubuntu-unity if you want to discuss more technical details about the implementation
[17:12] <ClassBot> satanselbow asked: Is this section about developing for Ubuntu or Unity?
[17:12] <mhall119> this session is giving an overview of Ubuntu's technologies (of which Unity is a big one), that you are likely to encounter during the rest of the week
[17:12] <ClassBot> jincreator asked: Why indicator-applet need whitelist? It's really hard for people to add their applications at indicator.
[17:13] <mhall119> we want to move everything to using application indicators, but some apps haven't yet upgraded and are still using the gnome systray icons
[17:14] <mhall119> for those that need a systray icon, you can whitelist them so they are displayed in Unity
[17:14] <mhall119> !q
[17:14] <ClassBot> laza36 asked: ​ What's an example for a scope that gets installed as a default?
[17:14] <mhall119> the default lenses are for Applications, Files and Music
[17:15] <mhall119> the Music lens will show both local music, and things available for purchase through the U1 music store
[17:15] <mhall119> there are also scopes written by community members that will feed music options from services like Spotify into the Music lens
[17:16] <mhall119> One of the main advantages of lenses is that they allow other people to write scopes to feed results into them
[17:16] <ClassBot> Kvrmurthy asked: What are lens and scopes?
[17:17] <mhall119> https://wiki.ubuntu.com/Unity/Lenses and https://wiki.ubuntu.com/Unity/Lenses/Guidelines give a pretty detailed description
[17:17] <mhall119> but the short answer is that Lenses display content, and Scopes supply content
[17:18] <mhall119> lenses will be discussed in much more detail at 1900
[17:18] <mhall119> I encourage you to stick around for that
[17:18] <mhall119> Many of you have probably seen the new HUD prototype
[17:19] <mhall119> Since Unity is exporting application menus over DBus to display them in the top panel, that also means we can use that data for other interesting things
[17:19] <mhall119> which is what the HUD does, allowing you to search for menu action without having to know where they are
[17:19] <ClassBot> calmpitbull asked: just got in :) what is the best way to start programing my own lens, and where to start
[17:20] <mhall119> calmpitbull: stick around for the 1900 UTC session and they will cover all of that
[17:20] <mhall119> outside of Unity we also have the Ubuntu One cloud syncing service
[17:20] <ClassBot> There are 10 minutes remaining in the current session.
[17:20] <mhall119> Ubuntu One lets users sync files between multiple computers, but it also provide an API for application developers to use
[17:21] <mhall119> for example, the Tomboy notes application uses Ubuntu One to sync it's note data
[17:21] <mhall119> and there is a new API in the works for syncing key-value data, called the U1DB
[17:21] <mhall119> there will be a session on Thursday covering both of those
[17:22] <mhall119> then we have the Software Center and http://developer.ubuntu.com, which provide application developers an easier way of distributing their application on Ubuntu
[17:22] <mhall119> there is even support for selling commercial applications through the Software Center
[17:23] <mhall119> and we have a dedicated Application Review Board (ARB) that will help you with that process
[17:23] <ClassBot> nava asked: we know unity is API for all (tablet,tv,phone) and also we know all mobile OS have a sdk , what about ubuntu ?
[17:24] <mhall119> So this collection of technologies, together with the foundation of Ubuntu itself, will essentially be your SDK
[17:25] <mhall119> we have tools such as Quickly that will get you started and automate a lot of the work around packaging
[17:25] <mhall119> Ubuntu does not force you into specific programming languages or toolkits though, you can use whatever you're comfortable with as long as it's available on Ubuntu
[17:25] <ClassBot> There are 5 minutes remaining in the current session.
[17:26] <mhall119> and best of all, All of these APIs are going to be the same, whether it's Ubuntu on desktop, TV, tablet or phone, you don't need to learn different technology
[17:26] <ClassBot> jrzabott asked: I used both synapse, like the unity menu... but i still have the feeling that synapse is more efective for the commom and home user... it have more speed, and it is lighter... If we put more daemons, lens, scopes and etc... i'm affraid it get worse... what do ya think?
[17:26] <mhall119> I'm not familiar with synapse, so I don't really have an opinion
[17:26] <ClassBot> rich3 asked: You mentioned Dbus.  what is dbus?
[17:27] <mhall119> DBus is a low-level messaging system, it allow different processes to communicate with eachother, without being tied to eachother
[17:27] <mhall119> For example, Scopes and Lenses get a DBus message from the Dash when you enter a search, and then they send DBus messages back to the Dash with their results
[17:27] <ClassBot> pawel_st asked: ​ is lens/scopes api stable/going to be stabilized with 12.04; will backwards compatibility be maintained from now, or is it still a moving target?
[17:28] <mhall119> the lens API had to be changed between Oneiric (11.10) and Precise (12.04), because the original way of doing thing wasn't going to be efficient enough
[17:28] <mhall119> but the new API should be all but set in stone
[17:28] <mhall119> the changes to the API, by the way, were not very drastic
[17:29] <mhall119> I was able to update my code in just a couple of hours
[17:29] <ClassBot> nava asked: we have tv with unity 2d (Qt) ,is Qt main language for also mobile and tablet ? or sth. else
[17:29] <mhall119> Both Qt and GTK are first-class toolkits in Ubuntu
[17:30] <mhall119> The TV demo was done in Qt and Unity-2d, but that won't matter from the perspective of an application or lense developer
[17:30] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[17:31] <highvoltage> thanks mhall119!
[17:31] <highvoltage> I'll be talking a little bit about Unity lenses as well
[17:31] <highvoltage> Welcome everyone to the "What's new in Edubuntu" session!
[17:31] <highvoltage> I'd like to give a really quick intro to what Edubuntu is
[17:32] <highvoltage> since many people are unfamiliar with the project
[17:32] <highvoltage> Firstly, there's the DVD that we produce every six months with some customizations and additional software that might be relevant in Education.
[17:32] <highvoltage> It follows the Ubuntu release cycle and we're very committed to doing things the Ubuntu way
[17:32] <highvoltage> One of our main goals is to produce a system that's easy to install and maintain in environments where people don't necessarily have lots of system administration skills available.
[17:33] <highvoltage> my involvement in Edubuntu came about installing computer labs in South Africa a few years back
[17:33] <highvoltage> we were using K12LTSP (a Fedora-based distribution) that had similar goals that Edubuntu has today
[17:34] <highvoltage> seeing what a turn-key system could do in schools was amazing. If a teacher can install their own system and have it up and running within minutes, it makes a *huge* difference
[17:34] <highvoltage> On the Edubuntu DVD we include LTSP (a thin client implementation for Linux), educational suites like gcompris, kde-edu, tux4kids and more.
[17:34] <highvoltage> We also include some system administration tools that make managing a classroom or educational environment easier.
[17:34] <highvoltage> Secondly, Edubuntu is also a project that's bigger than that. We aim to get software packaged into Ubuntu and also help maintain it.
[17:35] <highvoltage> There are also other Ubuntu projects that work and help us out on this
[17:35] <highvoltage> Most notably, the Kubuntu team who maintains the kde-edu suite and also the MOTU team who helps maintain educational software and games in Universe.
[17:35] <highvoltage> It's also worth mentioning Debian- that's where most of our packages come from. Recently we've also been collaborating more and more with Debian-Edu, they are doing some really great work.
[17:35] <highvoltage> The Edubuntu team is small, at any time we have around 2-8 contributors with varying involvement.
[17:36] <highvoltage> Some people are only around for about a month a year, but we value their contribution while we have it. We value any contributions even if it's just once-off.
[17:36] <highvoltage> So, I hope that gives you somewhat of an idea of the Edubuntu project
[17:36] <highvoltage> so on to the topic of what's new?
[17:37] <highvoltage> wubi - install Edubuntu from Windows
[17:37] <highvoltage> this is a somewhat old Ubuntu feature that we're getting now
[17:37] <highvoltage> we couldn't use it before since we used the text-based installer
[17:37] <highvoltage> it basically allows you to install Edubuntu from an existing Windows system.
[17:37] <highvoltage> since it's not that exciting I'll swiftly move on :)
[17:38] <highvoltage> installer - sssd integration
[17:38] <highvoltage> One of the biggest things we'd like to achieve in Edubuntu is make it as easy and as turn-key as possible in any environment.
[17:38] <highvoltage> One of the ways we do this is by adding to the default installer so that users have some specific control and out of the box configuration for some things.
[17:38] <highvoltage> In this release cycle, we're adding an installation step for SSSD. SSSD stands for Systems Security Services Daemon. What it allows you to do is integrate easily with an existing LDAP or Active Directory (AD) solution.
[17:39] <highvoltage> This would make Edubuntu really easy to integrate into existing schools which already has centralized authentication.
[17:39] <ClassBot> burli_ asked: ​ which DE is used by Edubuntu?
[17:40] <highvoltage> so the Desktop Environment
[17:40] <highvoltage> we offer both Unity and Gnome Fallback (or sometimes called classic Gnome)
[17:40] <highvoltage> Unity is great and has some features I'm going to discuss a little bit later
[17:41] <highvoltage> we need Gnome Fallback for thin client setups since most of the other alternatives are very resource hungry on the network
[17:41] <highvoltage> some older machines also don't work with Unity yet
[17:41] <highvoltage> that actually brings me to my next point...
[17:41] <highvoltage> unity lenses - something we want to do more of
[17:42] <highvoltage> one of our goals for 12.04 is also to figure out how we can better use unity lenses
[17:42] <highvoltage> I didn't realise I'd be following a session on it :)
[17:42] <highvoltage> if you missed the previous session, check out this page:
[17:42] <highvoltage> http://askubuntu.com/questions/38772/what-lenses-for-unity-are-available
[17:42] <highvoltage> it gives a nice overview of what Unity lenses are and which ones are available.
[17:43] <highvoltage> we want to get in touch with educators and find out what kind of functionality could be useful to them
[17:43] <highvoltage> and then adapt it to unity lenses
[17:43] <highvoltage> having quick and easy access to information and activities could work tremendously well
[17:44] <highvoltage> we'll soon be doing a call for ideas for that on the edubuntu blog and try to reach out to educators via other means
[17:44] <highvoltage> if you'd like to get involved and even want to help work on the lenses themselves, please get in touch!
[17:44] <ClassBot> kbmonkey asked: Was there ever talk of merging Edubuntu and Skolelinux, the Debian Edu distro?
[17:45] <highvoltage> Not specifically. There are some very similar goals between the projects though.
[17:45] <highvoltage> Recently we've been collaborating more and more.
[17:45] <highvoltage> Skolelinus does some really great work on the server. They already have centralized auth.
[17:45] <highvoltage> In Edubuntu we abandoned the server part to focus more on the desktop
[17:46] <highvoltage> Remember the authentication improvements I mentioned earlier?
[17:46] <highvoltage> some of that also includes making Edubuntu easier to integrate in a debian-edu environment
[17:47] <highvoltage> we're looking at more ways to collaborate, and the debian-edu people are amazing. but I don't think it's even technically possible for a merge
[17:47] <highvoltage> so I doubt that would ever happen
[17:47] <highvoltage> weblive - try edubuntu online
[17:47] <highvoltage> we have a service called weblive, it allows you to try Edubuntu from within your browser:
[17:48] <highvoltage> http://edubuntu.org/weblive
[17:48] <highvoltage> recently it gained some new features
[17:48] <highvoltage> instead of loading a full-blown session, you can also launch specific apps to demo it
[17:48] <highvoltage> Edubuntu also has a great feature that other derivatives don't
[17:49] <highvoltage> in Software Center, when you have an apps page loaded, you can click on "try it" and it will automatically spawn a weblive session for you with that app
[17:49] <highvoltage> the weblive feature is really popular, we also have a user that uses it every single day since we launched it!
[17:50] <highvoltage> epoptes - classroom administration
[17:50] <highvoltage> epoptes is a new tool that helps you administrate a classroom.
[17:50] <highvoltage> That is, see what's going on on a user's desktop, blank all the screens, broadcast what's happening on the teacher desktop, etc.
[17:50] <highvoltage> it's really cool and I think it's an essential tool in any educational environment
[17:50] <ClassBot> There are 10 minutes remaining in the current session.
[17:51] <highvoltage> It's being integrated into Edubuntu 12.04. It's developed by alkisg,
[17:51] <highvoltage> one of the Edubuntu developers and is also used actively in schools in Greece already.
[17:51] <highvoltage> since I'm short on time I'll just post the link to it instead of babbling about it :)
[17:51] <highvoltage> You can read more about it at http://www.epoptes.org/
[17:52] <highvoltage> Edubuntu LTS
[17:52] <highvoltage> Edubuntu 12.04 will be the first Edubuntu with official LTS status. It will be supported for 5 years
[17:53] <highvoltage> We're also updating the LTSP installer and the ltsp live script to be more user friendly and support more languages
[17:53] <highvoltage> language support is really great in Edubuntu. AFAIK we're the only derivative to ship all the language packs.
[17:53] <highvoltage> On to the future
[17:54] <highvoltage> I've covered quite a bit of our current work
[17:54] <highvoltage> but I'd like to talk a bit about one of our goals past 12.04
[17:54] <highvoltage> Edubuntu on ARM
[17:54] <highvoltage> We want to have an ARM release for Edubuntu. Some people suggested the pandaboard - http://pandaboard.org/
[17:55] <highvoltage> unfortunately it's not really a consumer device
[17:55] <highvoltage> Personally, I'm more interested in targetting something like the Eee pad transformer: http://za.asus.com/Eee/
[17:55] <highvoltage> It's a beautiful and powerful tablet machine that comes with a keyboard dock turning it into a fully fledged laptop. it also ads more battery power. It's a great educational device.
[17:55] <ClassBot> There are 5 minutes remaining in the current session.
[17:55] <ClassBot> Saviq asked: have you thought about the raspberry pi? it's supposed to be very small and cheap
[17:55] <highvoltage> the raspberry pi looks really nice
[17:56] <highvoltage> but it can't really handle a fully fledged Ubuntu Desktop session
[17:56] <highvoltage> officially Ubuntu won't even be supporting the raspberry pi (unfortunately)
[17:56] <highvoltage> but it certainly has many possible educational uses
[17:57] <highvoltage> The challenge with the Eee transformer is that they are all bootloader locked
[17:57] <highvoltage> and very hard to unlock
[17:57] <highvoltage> so we'd have to somehow convince the manufacturers that we'd like it to be possible for someone to install Edubuntu on it
[17:58] <highvoltage> Since we're running out of time, I'd just like to remind everyone that we have Edubuntu meetings on the last Wednesday of every month in #ubuntu-meeting
[17:58] <highvoltage> you can check the Ubuntu website if you're unsure of the dates
[17:58] <ClassBot> burli asked: so you will bring Edubuntu to tablets?
[17:59] <highvoltage> burli_: yes. that's certainly the future goal
[17:59] <highvoltage> the work that's going into the Ubuntu touch framework and also Unity is gradually making it easier
[17:59] <highvoltage> tablets are *huge* in schools and we don't quite want to miss that
[18:00] <highvoltage> we'd also like to integrate what's happning on the tablet with Edubuntu Desktops
[18:00] <highvoltage> we have no idea how yet, but it's a dream we'll persue :)
[18:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[18:01] <Saviq> hello all, mhall119, here?
[18:01] <mhall119> yes
[18:01] <mhall119> hello again everybody!
[18:02] <mhall119> this session we're going to be talking about getting involved in the Ubuntu TV development
[18:02] <mhall119> there's been a lot of interest and talk going around since our demo at CES earlier in the month
[18:03] <mhall119> all of the code from the demo is available on Launchpad, but it's just that: a demo
[18:04] <mhall119> the task now is converting it from demo code into real code, and you can be involved in that
[18:04] <ClassBot> fantasti1001 asked: What's ubuntu TV ?
[18:04] <Saviq> maybe I can chip in here for a second
[18:04] <mhall119> sure
[18:05] <Saviq> I prepared a FAQ from all the questions I could find in my history of #ubuntu-tv and ubuntu-tv@lists.launchpad.net
[18:05] <Saviq> it's available on the Ubuntu wiki: https://wiki.ubuntu.com/UbuntuTV/Contributing#FAQ
[18:05] <Saviq> and we're here to answer anything not covered in there and help you guys with getting involved
[18:06] <Saviq> mhall119, back to you
[18:06] <mhall119> you can also learn about Ubuntu TV here: http://www.ubuntu.com/tv
[18:07] <mhall119> but the short answer is: It's the goal of making Ubuntu the best platform for TV manufacturers to use on the upcoming wave of Smart TVs
[18:07] <mhall119> it has a modified Unity interface that is designed to work when you're sitting 10 feet away, using a remote control
[18:08] <mhall119> but under the hood, it will be the same Ubuntu platform, with the same Unity APIs
[18:08] <mhall119> which means everything make for the desktop will be available to you
[18:09] <mhall119> it will also tie into moving streaming services and stores to let you rent or buy movies
[18:09] <mhall119> and work with PVR hardware and software to let you watch and record broadcast and cable television
[18:10] <ClassBot> fantasti1001 asked: How remote control works?
[18:10] <Saviq> that's my cue
[18:10] <Saviq> fantasti1001, we're not doing anything special for remotes
[18:10] <Saviq> we're supporting all the standard media keys some keyboards have
[18:11] <Saviq> but that also means you can easily use Bluetooth remotes
[18:11] <Saviq> or IR ones like MCE, by just plugging them in right now
[18:11] <Saviq> 'cause they generate standard key events now
[18:12] <mhall119> as a platform, we should support as many viable options as the hardware manufacturers may want to ship
[18:12] <Saviq> LIRC is the "old" or "advanced" way to handle remotes, and there's no plan to support that in Ubuntu TV right now
[18:12] <mhall119> ultimately the choice of specific hardware will be up to the OEMs
[18:12] <Saviq> but as mhall119 said - if that's what's going to be required - that's what we'll do
[18:13] <ClassBot> burli asked: so it will be posible to install any software?
[18:13] <Saviq> burli isn't here, but I'll answer anyway
[18:13] <Saviq> burli, oh yes he's here, xchat's playing games on me
[18:14] <Saviq> burli, that, again, depends on the way it's going to be deployed
[18:14] <Saviq> in theory any software can be installed as it's going to be standard Ubuntu
[18:14] <Saviq> but most GUI applications are not suitable for a 10-foot interface
[18:14] <ClassBot> ashickur-noor asked: What is difference between Ubuntu TV and Ubuntu Desktop?
[18:14] <Saviq> so it will only make sense to install those that are adapted to a TV interface
[18:15] <Saviq> ashickur-noor, the demo we showed at CES was straight Ubuntu 11.10 with a variant of Unity-2D adapted for TV
[18:15] <Saviq> ashickur-noor, but the target of Ubuntu TV is to be a platform, based on Ubuntu
[18:16] <mhall119> ideally there will be no difference other than the UI
[18:16] <Saviq> what will be the difference between a productized Ubuntu TV and Ubuntu Desktop, we'll have to wait and see
[18:16] <ClassBot> kichkasch asked: ​ what is the time line for development? When do you expect first devices ... ?
[18:16] <Saviq> kichkasch, no such decisions have been made yet
[18:17] <mhall119> so the purpose of the CES demo was to get hardware manufacturers interested
[18:17] <mhall119> now we are working on partnering with them to build actual products
[18:18] <mhall119> as with most business-to-business dealings, we won't really know until they're announced
[18:18] <ClassBot> popey asked: What spec machine do I need to try out Ubuntu TV?
[18:19] <Saviq> while developing we were using an Acer Revo
[18:19] <Saviq> which is an Atom + ION box
[18:19] <Saviq> but we were running happily on a Pandaboard, too
[18:19] <Saviq> as ARM is a definite target, that's very important for us
[18:19] <Saviq> hardware video acceleration is a must
[18:19] <ClassBot> hszu00 asked: ​ Will Ubuntu Tv use an onscreen keyboard or one that comes with the remote?
[18:20] <mhall119> trying to get through as many of these questions as we can before our time isup
[18:20] <Saviq> hszu00, with the UI we demo'ed search was a central feature
[18:20] <Saviq> so hardware keyboard on the remote is desirable
[18:20] <ClassBot> There are 10 minutes remaining in the current session.
[18:20] <Saviq> but OSK is a possible alternative
[18:21] <ClassBot> Cantide asked: So it would be possible to use your TV as a computer, essentially?
[18:21] <mhall119> possible, but probably not desirable
[18:22] <Saviq> Cantide, using a Ubuntu Desktop on your TV would not be easy
[18:22] <Saviq> the target is to provide a proper TV, 10-foot experience
[18:22] <mhall119> remember that even a large-screen TV isn't very big when viewed from across the room
[18:22] <ClassBot> TwoD asked: I feel the Dash is awkward to use as is, having to switch back and forth between keyboard and mouse, how will that improve if I only have a TV remote?
[18:23] <Saviq> TwoD, the whole Ubuntu TV is navigable with just 9 buttons
[18:23] <Saviq> usual directional ones, ok, back and three edge ones
[18:23] <Saviq> for quickly accessing the sidebar, top bar and launcher
[18:23] <ClassBot> calmpitbull asked: What is minimun requirement for Ubuntu TV to run smoothly
[18:24] <Saviq> calmpitbull, as replied earlier - any OpenGL-enabled GPU, preferably with hardware video acceleration
[18:24] <Saviq> and something like an Atom CPU will be enough
[18:24] <Saviq> on ARM a Pandaboard seems to cope quite nicely
[18:24] <ClassBot> s9iper1 asked: can you tell me the merging process when the bug got fixed and than we have to merge the branches is there any guide in ubuntu    or anything?
[18:25] <Saviq> s9iper1, it's the same as with unity-2d, add a merge request agains lp:ubuntutv
[18:25] <ClassBot> There are 5 minutes remaining in the current session.
[18:25] <mhall119> https://wiki.ubuntu.com/UbuntuTV/Contributing has information about how to make contributions of code
[18:26] <ClassBot> pawel_st asked: ​ rather than a new release that adds new features every 6 months, like regular unity does. How does it match the development model of normal unity? Is unity for tv going to have a separate development model and provide stripped down version of unity?
[18:26] <Saviq> pawel_st, that depends on the productized version, nothing I can say right now about that
[18:27] <ClassBot> BlueCase asked: What's with DRM and HD content? Any discussion on that?
[18:27] <Saviq> BlueCase, HD content with hardware acceleration is fine, DRM will have to be discussed with content providers that come on board
[18:28] <ClassBot> sankaranarayanan asked: So are you guys considering support for gesture based control too, for the TV?
[18:29] <Saviq> sankaranarayanan, there's definitely room for thought there, again - depends on what we will actually be delivering
[18:29] <ClassBot> pawel_st asked: ​ since smart TVs are network-capable, are you going to automatically install security updates on TVs (with all the associated risks)?
[18:29] <Saviq> pawel_st, that is a possibility, but will have to be carefully thought out
[18:29] <Saviq> and will depend on the requirements we need to fill
[18:30] <ClassBot> sirvinniei asked: How much customabily is possible with ubuntu tv?
[18:30] <Saviq> sirvinniei, it's open source, that's all the answer I can give you now
[18:30] <Saviq> wow it looks like half an hour is a very short period of time
[18:30] <mhall119> it sure is
[18:30] <Saviq> thanks you all for attending
[18:31] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[18:31] <greyback> Hey all, I'm Gerry Boland, team lead of the Unity 2D project.
[18:31] <greyback> For something like UbuntuTV to be a success, we need Unity2D to be rock solid!
[18:31] <greyback> So I'm here to give a short 30 minute session about something almost as exciting: automated testing for Qt apps (and Unity2D)! :D
[18:31] <greyback> Feel free to ask questions at any time, check the topic for instructions on how to do so.
[18:32] <greyback> In Unity 2D, we have just introduced an automated User Experience test system, based on a test framework called "Testability Driver" (I'll just call it 'Testability' from now on).
[18:32] <greyback> With this system, for every bux-fix and new feature, we:
[18:32] <greyback> 1) automatically verify that all existing tests pass, so nothing is broken and
[18:33] <greyback> 2) require that new tests are added to prevent regressions, thus in time developing a comprehensive test suite!
[18:33] <greyback> I want to go into more detail about "Testability" and how everyone can use it.
[18:33] <greyback> = What does Testability do? =
[18:34] <greyback> Testability is for Qt-based applications (and Unity 2D is written in Qt, yay!).
[18:34] <greyback> Its core feature is that it allows inspection of the tree of QObjects in a Qt application while it is running.
[18:34] <greyback> It can read and write object properties, call methods and slots, verify signals are emitted, as well as faking mouse/keyboard/gesture inputs, grabbing visual outputs, and measure performance.
[18:35] <greyback> And best of all, Testability is open source and maintained by Nokia!
[18:35] <greyback> That means everyone can run and contribute tests! :)
[18:36] <ClassBot> burli asked: is this built in Qt and language independend?
[18:36] <greyback> burli: yes, it's build into Qt, from version 4.6 I think
[18:37] <greyback> It works with C++ and QML. If it uses Qt bindings then it will work too
[18:37] <greyback> To show it off, here is a screengrab of the Testability Visualizer application which allows you to connect to a running application, dig into the QObject tree and investigate what's going on (here, the Unity 2D Launcher):
[18:37] <greyback> http://i.imgur.com/psi7m.png
[18:38] <greyback> On the left is an interactive snapshot of the UI, in the centre is the QObject tree which you can navigate, and on the right is the list of the selected QObject's properties, methods and signals you can interact with.
[18:38] <greyback> On display in that screengrab are some of the attributes of the QDeclarativeImage object which draws the Terminal icon in the launcher (this is defined in QML!) - you can read off the source of the image, the x,y coordinates, width & height, and a whole lot more.
[18:39] <greyback> All these properties, methods, signals, etc, are scriptable via Ruby. (I'll give a uber-simple example in a minute)
[18:39] <greyback> Thus we can emulate every interaction that a user can make with the application, and determine the reaction.
[18:39] <greyback> And all this power comes with almost no changes* to the source code!
[18:39] <greyback> (* = just need to add object names, see later)
[18:40] <greyback> This forms the foundation for the Unity 2D User Experience testing suite.
[18:40] <greyback> = How Testability works =
[18:41] <ClassBot> TwoD asked: Does Testability include tests for asserting the number of keystrokes/clicks required for completing user task "X" remains sane?
[18:42] <greyback> TwoD: you write a test, by providing every click and keystroke, and check the behaviour matches what you expect.
[18:42] <greyback> TwoD: you control the number of clicks
[18:42] <greyback> Testability works as follows (have a look at this image too, it might help http://tinyurl.com/7dj5jdw):
[18:42] <greyback> - *any* Qt application using Qt4.6+ can be tested by executing it with the "-testability" switch.
[18:43] <greyback> - a standalone server "qttasserver" runs in the background.
[18:43] <greyback> - With the -testability switch, the Qt library tries to load a "libtestability.so" plugin which establishes a connection between the application and qttasserver, giving qttasserver access to the root node of the QObject tree.
[18:43] <greyback> - qttasserver then climbs the QObject tree, reads all the info it can and converts it to an XML format. It also can receive commands and cause the application to react upon them (click here, type, etc..).
[18:44] <greyback> - A series of Ruby scripts connect to qttasserver, receive and parse this XML and allow us to script tests and interactions with the application.
[18:45] <greyback> Then we use Ruby's test runner systems (Test::Unit or Cucumber) to write and run tests
[18:45] <greyback> [The Unity 2D test framework also includes an extra helper library to control the X server, to control the mouse and keyboard, and to manipulate windows on the desktop. As far as X is concerned, a human is controlling it.]
[18:45] <greyback> With the ability to fake any form of user input, and directly read the output from the shell applications themselves, we can test almost every behaviour of the application. And as a result, the quality of the experience will only go up!
[18:46] <ClassBot> calmpitbull asked: What is the best way to get started with programing unity 2d, lenses and scopes
[18:46] <greyback> calmpitbull: there's a session on Unity and lenses shortly. Lenses are compatible with both Unity and Unity2D
[18:47] <greyback> calmpitbull: if youdd like to contribute to Unity 2D, please ping me after this presentation. We'd be delighted to have you!
[18:47] <ClassBot> ashickur-noor asked: What is the best language to put on the Back-end of QT
[18:48] <greyback> ashickur-noor: (you've gone?) Well I'm a fan of C++ and QML. QML makes UI design and creation really easy
[18:48] <ClassBot> pawel_st asked: ​ Testability seems to be well suited for scenarios where object attributes can be tested... Is there any way you can test if drawing errors etc. occur?
[18:49] <greyback> pawel_st: Testabiity has access to the QPainter, so whatever Qt thinks is being drawn to screen, Testability can grab. It can then perform visual comparison on images, to check for errors
[18:49] <greyback> = How to get & use Testability =
[18:49] <greyback> Unfortunately Testability is not available in Ubuntu's repos just yet, but I have it packaged in a PPA.
[18:49] <greyback> Installation takes a few steps, so I suggest that interested people consult this wiki page: https://wiki.ubuntu.com/Unity2DTestability
[18:50] <greyback> Tests are just Ruby scripts, so running tests is just a matter of running a Ruby script!
[18:50] <greyback> I think it easiest to show how to use Testability with an example ruby script: http://pastebin.com/AWWYYPN8
[18:50] <ClassBot> There are 10 minutes remaining in the current session.
[18:51] <greyback> That test checks
[18:51] <greyback> 1. the Launcher is 65 pixels wide
[18:51] <greyback> 2. that the Terminal tile has the correct icon
[18:51] <greyback> There is some boiler-plate code there, but the bits I want to point out are:
[18:51] <greyback> @app.LauncherView()['width']
[18:51] <greyback> This causes Testability to search for an object of type "LauncherView()" in the QObject tree, and if found reads its "width" property and returns it (throws exception if not).
[18:51] <greyback> Then in Ruby, we can check this value matches what we expect (65).
[18:52] <greyback> The second test does a similar operation, but needs a little more help.
[18:52] <greyback> As there are many tiles, we need to help Testability to find the exact tile we want. We do this by adding some object names ("main", "Terminal",..) to the C++/QML.
[18:52] <greyback> By consulting with http://i.imgur.com/psi7m.png, maybe you can see how Testability navigates the tree to find the icon source for the Terminal tile!
[18:52] <greyback> Once you can track down objects uniquely, you can then start interacting with them, send mouse clicks, set properties, call methods, etc.
[18:52] <greyback> This power gives you great flexibility in testing your application!
[18:53] <greyback> = Demo & conclusion =
[18:53] <greyback> As a demo, here is a video of a part of the Unity 2D test suite in action. On the right is Ubuntu Oneiric running inside VirtualBox, where the Launcher will be tested. On the left is my host machine terminal running the test suite.
[18:53] <greyback> https://wiki.ubuntu.com/Unity2DTestability?action=AttachFile&do=get&target=testability.ogv
[18:53] <greyback> Various hide/show tests are being performed, with windows in the way, mouse being controlled, keyboard shortcuts being pressed etc.
[18:54] <greyback> There's something very strange about watching a desktop doing things when nobody is controlling it!! :)
[18:54] <ClassBot> Atlantic777 asked: any documentation on how to write good test cases?
[18:54] <greyback> Atlantic777: there is some at Nokia's website on Testability(https://projects.developer.nokia.com/Testabilitydriver/wiki), and I plan to write my own shortly.
[18:55] <ClassBot> Saviq asked: there seems to be a split between the application and the tester, can this work across the network?
[18:55] <greyback> Saviq: yes. In that video above, all the communication between the application and the test machine is via TCP/IP
[18:56] <ClassBot> There are 5 minutes remaining in the current session.
[18:56] <ClassBot> Ceno asked: I see there's no support for 10.04 in the PPA.  Can this be arranged, or since the default 10.04 qt version is bellow 4.6 it doesn't even matter?
[18:56] <greyback> Ceno: it's my PPA, so if you need it, I can try. Version less than 4.6 can be tested too, they need a few extra lines of code in the application only.
[18:57] <ClassBot> bjhaid asked: can you please post link to sample test
[18:57] <greyback> bjhaid: http://pastebin.com/AWWYYPN8 for super-simple test
[18:58] <greyback> bjhaid: otherwise, check http://bazaar.launchpad.net/~unity-2d-team/unity-2d/trunk/files/head:/tests/
[18:58] <greyback> Our policy is that every new feature and bug fix in Unity 2D will have a test attached, to ensure no regressions.
[18:58] <greyback> This will ensure Unity 2D remains reliable, consistent and fast. Thanks to Testability!
[18:58] <greyback> Thanks for your attention everybody!
[18:59] <greyback> I've a minute for questions
[18:59] <ClassBot> pawel_st asked: ​ Can it run headless, e.g. for automated integration testing?
[18:59] <greyback> pawel_st: yes. It should run in Xvfb
[18:59] <ClassBot> bjhaid asked: any gem required to run the test or it runs on standard ruby modules?
[19:00] <greyback> bjhaid: just "gem require" is needed for some reason I'm unsure of
[19:00] <greyback> Ok I'm done. Thanks everyone
[19:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[19:01] <davidcalle> Hello everyone, I'm David Callé
[19:01] <mhr3> Hi there, i'm Michal Hruby
[19:02] <davidcalle> We are going to introduce you to Unity lenses, how they work, what they do.
[19:02] <davidcalle> And... most importantly, how to make them.
[19:02] <mhr3> so let's get to it
[19:03] <davidcalle> A lens is basically a plugin for the Dash. To display data to the user.
[19:04] <davidcalle> And scopes are search engines for the lens, to bring the data.
[19:04] <ClassBot> calmpitbull asked: What is the best way to get started with programing unity lenses and scopes
[19:05] <mhr3> calmpitbull, you're just about to learn that :)
[19:06] <davidcalle> A lens is mostly an architecture
[19:07] <davidcalle> Categories and filters, used to guide the user through the data
[19:07] <ClassBot> pawel_st asked: ​ I've asked this on one of the previous session, but maybe you can give a more detailed answer here... Why did you choose to have daemons for all lenses? Seems to lead to more and more resources usage as new lenses are added? Why not spawn lenses on demand, or do something similar to be more resource-friendly?
[19:08] <mhr3> pawel_st, the reason is to be able to easily add and remove lenses
[19:09] <mhr3> pawel_st, this way one can easily replace the default apps lens with something they like
[19:09] <mhr3> or any other of course
[19:09] <mhr3> and the default daemons are very light, so it shouldn't be an issue atm
[19:10] <ClassBot> gaberlunzie asked: ​ are there any obstacles to lens displaying online data? My askubuntu lens turns up empty except for the "Ask a question" action ...
[19:10] <davidcalle> There shouldn't be any obstacles. It just uses http calls.
[19:11] <mhr3> gaberlunzie, perhaps a bug in the lens :)
[19:11] <mhr3> feel free to file it
[19:11] <ClassBot> pawel_st asked: ​ There is a nice initiative for simplifying lens/scopes development - Singlet project. Are there plans to make it available by default in Ubuntu? Or anything similar?
[19:12] <mhr3> ok, so let's continue with the session
[19:12] <davidcalle> Singlet is currently being turned into a Quickly template
[19:13] <mhr3> once we have a lens that displays data in particular categories and provides filters, we implement scope(s) which provide data
[19:14] <mhr3> a couple of guidelines about when to implement lenses vs scopes can be found at https://wiki.ubuntu.com/Unity/Lenses/Guidelines
[19:14] <mhr3> but let's make this more fun and actually look at a sample lens and scope
[19:14] <mhr3> the unity-lens-sample project on Launchpad has a couple of these available (https://code.launchpad.net/unity-lens-sample/)
[19:15] <mhr3> so I suppose everyone likes python, so let's take a look at that one
[19:15] <mhr3> if you want to get it, run `bzr branch lp:~unity-team/unity-lens-sample/python-5.0`
[19:16] <mhr3> the 5.0 indicates that this lens is for libunity-5.0 (which is in precise)
[19:16] <mhr3> if you're on oneiric and dont have unity ppas enabled, 4.0 is for you
[19:17] <mhr3> so, http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-lens-sample is the lens code
[19:17] <mhr3> and david as the author will explain details :)
[19:18] <davidcalle> As you can see, the lens code is quite small.
[19:18] <ClassBot> fantasti1001 asked: what programming language do i need to know to make lenses?
[19:18] <davidcalle> The first important thing is to declare your lens:
[19:18] <davidcalle> BUS_NAME = "net.launchpad.lens.sample"
[19:19] <mhr3> fantasti1001, you can pick python / c / vala (or javascript experimentally)
[19:19] <davidcalle> The name is rather arbitrary, but it illustrates the purpose of the lens
[19:19] <davidcalle> fantasti1001, Python, C, Vala, and even Javascript now (which is rather experimental)
[19:20] <davidcalle> Then, we define a few constants for the lens:
[19:20] <ClassBot> AlanBell asked: will there be an "accounts" dialog or something for lenses that require authentication credentials to be entered (a bit like Empathy or Gwibber has)
[19:20] <davidcalle> It's dbus path : self._lens = Unity.Lens.new ("/net/launchpad/lens/sample", "sample")
[19:21] <davidcalle> We also want to define the search hint (the text in the empty search bar)
[19:21] <davidcalle> self._lens.props.search_hint = "Search"
[19:21] <mhr3> AlanBell, that's up to the individual apps right now, ideally they'd integrate with the system's "online account"
[19:22] <davidcalle> We can also choose to have the lens icon visible in the search bar. If not, it will still be available via its shortcut.
[19:22] <davidcalle> self._lens.props.visible = True;
[19:22] <davidcalle> Then, one of the most important thing is to have the lens visible in the Home Dash.
[19:22] <davidcalle> Or not.
[19:22] <davidcalle> 		self._lens.props.search_in_global = True;
[19:23] <davidcalle> If you are looking at the code right now (http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-lens-sample)
[19:23] <davidcalle> You can see, that we also define the categories, which have a name, an icon, and a renderer.
[19:24] <davidcalle> The renderer is the way the Dash will display the results.
[19:24] <mhr3> you can see all the properties here http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.Lens
[19:25] <davidcalle> Two renderers are currently available : the "vertical" and the "horizontal", they both display an icon, and a text for each result. But the horizontal can also dsiaply a second text called the comment.
[19:26] <davidcalle> Here, I've defined two categories, using a different renderer.
[19:26] <davidcalle> The filters are next on our list of things to define. You can find a list in the code.
[19:27] <davidcalle> http://imagebin.org/index.php?mode=image&id=196573
[19:27] <mhr3> there you can see the various renderers in action ^^
[19:27] <davidcalle> Here is a screenshot of our sample lens, using the two renderers (the second one is hidden at the bottom)
[19:29] <davidcalle> Now that we have a lens. We need a scope to provide the data.
[19:29] <mhr3> right, but before that, please notice some of the system necessities for getting lens running
[19:30] <mhr3> at the bottom of the lens sample you can see requesting DBus name
[19:30] <mhr3> you need to do this, so unity can talk to the lens
[19:30] <mhr3> and the name need to be equal to what you .lens file says
[19:30] <mhr3> more details on that can be found at https://wiki.ubuntu.com/Unity/Lenses
[19:30] <mhr3> or https://wiki.ubuntu.com/mhr3/Lenses (for the latest 5.0 version)
[19:31] <mhr3> and now, let's take a look at the scope
[19:31] <mhr3> so here we have it > http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia
[19:32] <mhr3> this is an example of remote scope, that doesn't live directly inside the lens, but is an external process
[19:32] <mhr3> you can create scope for any existing lens by just adding your .scope file into the lens directory
[19:32] <mhr3> more on that again at the wiki mentioned earlier
[19:32] <mhr3> but let's look at the code
[19:33] <mhr3> commonality is again the requesting of dbus name, which is necessary for remote scopes
[19:33] <mhr3> but doesn't need to be there for internal lens scopes
[19:34] <mhr3> and then you just create a Scope instance ->
[19:34] <mhr3> self.scope = Unity.Scope.new ("/net/launchpad/scope/information/wikipedia")
[19:34] <mhr3> you specify a few properties again
[19:34] <mhr3> like the search-in-global etc
[19:34] <mhr3> (full list http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.Scope)
[19:35] <mhr3> and most importantly you connect to the search-changed signal
[19:35] <mhr3> self.scope.connect ("search-changed", self.on_search_changed)
[19:35] <mhr3> this mean that everytime the user changes the search string this method will be invoked
[19:35] <mhr3> and it's where you should do the actual search
[19:36] <mhr3> the signal has a couple of parameters:
[19:36] <mhr3> def on_search_changed (self, scope, search, search_type, cancellable):
[19:36] <mhr3> important is the search, which is a LensSearch instance
[19:36] <mhr3> http://developer.ubuntu.com/api/ubuntu-12.04/python/Unity-5.0.html#Unity.LensSearch
[19:37] <mhr3> and this holds the data about the search
[19:37] <mhr3> like the actual search_string
[19:37] <mhr3> the scopes have a two results models which you need to update during the search
[19:38] <mhr3> the correct results model is always stored in search.results_model
[19:38] <mhr3> as you can see in http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L33
[19:38] <ClassBot> pawel_st asked: ​ Is caching results of lens search possible via the framework, or is this something one needs to implement for his lens?
[19:39] <mhr3> depends what you want to do
[19:39] <mhr3> results from previous search are always available in the model
[19:40] <mhr3> that's why you see model.clear() call here http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L35
[19:40] <mhr3> so it's up to you how are you going to use that
[19:41] <mhr3> so once we get results for the query the user wants, we append those to the model
[19:41] <mhr3> as you can see in http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/unity-scope-wikipedia#L81
[19:42] <mhr3> the models we are talking about are part of the Dee library (see it's reference @ http://developer.ubuntu.com/api/ubuntu-12.04/python/Dee-1.0.html )
[19:42] <mhr3> and there's a specific data the model expects
[19:42] <mhr3> for results it's uri, icon, category id, mimetype, display name, comment and dnd_uri
[19:43] <mhr3> so you add results to the model and once you're done, you just call search.finished() on the LensSearch instance
[19:44] <mhr3> the user can then click on any of results
[19:44] <mhr3> and if you picked some standard uri (like http://...) unity can just launch it in the browser for example
[19:44] <mhr3> but if your lens is doing something special
[19:45] <mhr3> you can use your own uris, and if you connect to the activate_uri signal of the scope you'll be notified when the user activated them, so you can do whatever you want
[19:45] <mhr3> and that's the basics
[19:45] <mhr3> questions?
[19:46] <ClassBot> kanliot asked: do lenses require unity and ubuntu?
[19:46] <davidcalle> They do.
[19:46] <davidcalle> Not Ubuntu, but at least Unity.
[19:46] <mhr3> well unity is what controls them
[19:46] <mhr3> you could implement your own ui
[19:46] <mhr3> but there's nothing in existence that would do that
[19:47] <mhr3> not that i know of anyway :)
[19:47] <davidcalle> If you want to look at various code examples
[19:48] <davidcalle> https://code.launchpad.net/onehundredscopes
[19:48] <davidcalle> It's a lot of scopes and lenses branches, doing very different things, from talking to web API, to looking into user folders.
[19:48] <mhr3> if you're wondering about the changes that were made in latest Unity-5.0 (and therefore really advanced stuff) feel free to look at http://www.grillbar.org/wordpress/?p=585
[19:49] <ClassBot> Ceno asked: is there any difference in performance between the various languages we can program lens/scopes in?
[19:50] <ClassBot> There are 10 minutes remaining in the current session.
[19:51] <mhr3> Ceno, good question
[19:51] <mhr3> we dont really have any scientific data to suggest one way or the other
[19:52] <mhr3> of course theoretically languages that don't need garbage collector and such things ought to be faster :)
[19:52] <mhr3> but mostly the slowest part of lens is talking to a webservice which is slow anyway :)
[19:52] <mhr3> if they are talking to a webservice of course :)
[19:52] <ClassBot> mfisch asked: is there a recommended IRC channel where lens-writers can discuss things?
[19:53] <davidcalle> #ubuntu-unity is the place for that
[19:53] <mhr3> mfisch, ^^ thats the place
[19:53] <ClassBot> Ceno asked: I might have missed something, and if I did I apologize, but how do you go from these 2 pieces of code, one for lens one for scope, to actually testing the thing live in Unity?
[19:54] <mhr3> there's a README file in the directory ;)
[19:54] <mhr3> basically you copy the .lens and .scope files to specific directories and restart unity
[19:55] <mhr3> http://bazaar.launchpad.net/~unity-team/unity-lens-sample/python-5.0/view/head:/README
[19:55] <davidcalle> A lens daemon comes with a .lens files, the scope daemon with a .scope file. Their content is pretty much self explicit.
[19:55] <davidcalle> s/files/file
[19:55] <ClassBot> There are 5 minutes remaining in the current session.
[19:56] <davidcalle> They both need to go in /usr/share/unity/lenses/<lens name>
[19:56] <davidcalle> The daemons can be anywhere.
[19:56] <davidcalle> An important thing :
[19:57] <davidcalle> To start a new lens. You need to restart unity (unity --restart or setsid unity)
[19:57] <davidcalle> Just once, to make it learn about the new lens.
[19:58] <ClassBot> mhall119 asked: once I have a lens or scope, how do I get it into Software Center?
[19:58] <davidcalle> But for the scopes, you just need to restart the lens daemon.
[19:59] <mhr3> i'm afraid we won't cover software center in this session
[19:59] <ClassBot> jincreator asked: Is it possible to extract and use lens at user's home directory, not /usr/share/... ?
[19:59] <davidcalle> mhall119, you package your lens, then submit the package to https://myapps.developer.ubuntu.com
[20:00] <mhr3> jincreator, unfortunately not, unity only checks /usr/share/unity/lenses directory
[20:00] <mhr3> Ok, seems like we're out of time, thanks everyone for attending!
[20:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[20:00] <davidcalle> Thank you! And come see us if you have any questions
[20:01] <hggdh> hello. My name is Carlos de-Avillez, and I am a member of the Ubuntu QA team. You can reach me either on IRC (nick: hggdh) or via email to hggdh2@ubuntu.com.
[20:02] <hggdh> Since beginning of 2010 we have been working on test automation. This meant we had to create our own lab, and prepare it for all we need.
[20:02] <hggdh> this is, still a Work In Progress ;-)
[20:02] <hggdh> today I will talk about our usage of Jenkins
[20:02] <hggdh> http://jenkins-ci.org/
[20:03] <hggdh> we implemented (er, *are* implementing) Jenkins on two places: an internal one, where the tests are actually executed (in our lab),
[20:03] <hggdh> and an external one, where results of the tests are visible for all
[20:04] <hggdh> the internal Jenkins is access-controlled, and out of scope right now
[20:04] <hggdh> the external one can be reached at https://jenkins.qa.ubuntu.com/
[20:04] <hggdh> this is, pretty much, what we see internally, but read-only.
[20:05] <hggdh> We are adding tests as we go, and all Ubuntu development teams are collaborating in making the tests more (and more) inclusive
[20:06] <hggdh> Jenkins can be seen as a scheduler (it is not only a scheduler, but simpler to get acquainted to)
[20:07] <hggdh> if you look at the public instance, you will see it has a not-so-big-yet-but-growing list of tabs
[20:07] <hggdh> in each tab you will see the tests -- in Jenkins parlance, the *jobs* that we currently publish
[20:08] <hggdh> the very first tab -- "all" -- shows ALL the tests; each other tab gives us a view restricted to an area of interest
[20:09] <hggdh> so, for example, https://jenkins.qa.ubuntu.com/view/Precise/ shows all tests currently being run for the Precise Pangolin Ubuntu version
[20:10] <hggdh> (BTW, we will be relying on https://wiki.ubuntu.com/QATeam/AutomatedTesting, https://wiki.ubuntu.com/QATeam/AutomatedTesting/UnderstandingJenkins,
[20:10] <hggdh> and https://wiki.ubuntu.com/QATeam/AutomatedTesting/UnderstandingJenkinsResults for this talk)
[20:11] <hggdh> each Jenkins job can have one of four possible final states:
[20:11] <hggdh> 1 - successful -- represented by a green ball
[20:11] <hggdh> 2. failed -- represented by a red ball
[20:12] <hggdh> 3. unstable -- represented by an yellow ball
[20:12] <hggdh> 4. not-yet-run (or no record surviving in Jenkins) -- represented by a gray ball
[20:13] <hggdh> apologies for those of you that are -- as I am -- colour-confused
[20:13] <hggdh> tests are written in a mix of code (usually Python, or shell scripts) and Jenkins setup
[20:14] <hggdh> Pretty much all the code we use for the tests can be found at https://launchpad.net/ubuntu-server-iso-testing
[20:15] <hggdh> this is a bazaar branch; commit access to it is, as usual, restricted to members of the Ubuntu Server Iso Testing Developers, a team on Launchpad
[20:15] <hggdh> https://launchpad.net/~ubuntu-server-iso-testing-dev
[20:16] <hggdh> please do contribute. You can tweak the current code, and propose changes, via a bazaar merge request
[20:17] <hggdh> anyway
[20:17] <hggdh> if we look at the precise-desktop-amd64_default job (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/)
[20:17] <hggdh> we will see that it failed
[20:18] <hggdh> on the Build History (at the left) we can see the last runs, about 30 of them; we can also see that the last two runs failed
[20:19] <hggdh> run 223 was successful, and 222 was... unstable
[20:19] <hggdh> if we click on the last run -- 225, url https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/
[20:21] <hggdh> we will be able to see some more links to data. The most important, usually, is the rawe console output (link at the left). This will give us all output to stdout that was generated by the tests
[20:21] <hggdh> this does not mean *all* output of the job, just what was sent to stdout
[20:23] <hggdh> looking at it, we see that the first 130K of data was not shown, and the rest seems to be a system running and just -- pretty much -- renewing IP address via DHCP
[20:24] <hggdh> looking at near the end, we see this message:
[20:24] <hggdh> DEBUG:root:Test e40d4cb6-bc3d-4c6d-b618-a30826e5c26e failed to execute within 120 minutes
[20:24] <hggdh> so... the test fails
[20:25] <hggdh> (going back to run 225 summary)
[20:25] <hggdh> at the middle of this screen -- again, I am at https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/
[20:26] <hggdh> we see a "Build artifacts" link and, under it, a series of other links.
[20:26] <hggdh> what we are usually interested in is *not* these other links, but what is under the "Build artifacts"
[20:27] <hggdh> so, drilling down on it (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/artifact/)
[20:28] <hggdh> we see a 225/test-results link, and some others. It is the test-results we usually want...
[20:29] <hggdh> under it we only see a d-i-syslog.log.gz file (er, link). This sort of tells us that the test indeed failed ;-)
[20:30] <hggdh> (an example of a successful run is at https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/223/artifact/223/test-results/ )\
[20:31] <ClassBot> diwic asked: You asked for contributions, but assume I've made a change to the branch, how do I go ahead and test it locally before proposing it to be merged? Do I have to set up a local jenkins instance...etc?
[20:32] <hggdh> hum
[20:33] <hggdh> yes, you *might*. It would be better to, I mean. We are considering how to set up a test Jenkins, where code changes can be tested without needing the whole shebang
[20:34] <ClassBot> gang65 asked: How I could look at current job configuration? - I would like to see which scripts it is using...
[20:38] <hggdh> (sorry for the delay, was battling a login)
[20:39] <hggdh> yes, this is a good question. There is no way, right now, just tested it. You have to have access to the internal Jenkins to see the configuration. We will work on that
[20:39] <hggdh> sorry
[20:40] <hggdh> so, back to looking at errors
[20:40] <hggdh> the only way to find out what happened on run 225...
[20:42] <hggdh> go back to build 225 summary page (https://jenkins.qa.ubuntu.com/view/Precise/job/precise-desktop-amd64_default/225/ )
[20:43] <hggdh> and look at the 'default' link on the middle of the page, at the 'run_test' on the same page, and at the syslog output
[20:44] <hggdh> the 'default' shows you the actual test code that is (would) be executed
[20:44] <hggdh> the 'run_test' is the driver
[20:44] <hggdh> and the syslog is all that was sent to stdout.
[20:45] <hggdh> we know the test did not even execute, in this case
[20:45] <hggdh> so I would start with the syslog, looking for "abnormal" messages
[20:46] <hggdh> and in the syslog, around line 978, we see a python stacktrace
[20:47] <hggdh> it may be part of the problem. We would need to review all syslog, and talk with the developers to really find out
[20:48] <hggdh> an example of a *unstable* execution is in precise-server-i386_dns-server
[20:48] <hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76
[20:49] <hggdh> drilling down on the build artifacts, we see an interesting link:
[20:49] <hggdh> (actually two)
[20:49] <hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76/artifact/76/test-results/TEST-dns-server.xml
[20:49] <hggdh> and
[20:49] <hggdh> https://jenkins.qa.ubuntu.com/view/Precise/job/precise-server-i386_dns-server/76/artifact/76/test-results/dns-server.stderr
[20:50] <hggdh> the first one, the XML file, is the results Jenkins looks for to determine final status
[20:50] <ClassBot> There are 10 minutes remaining in the current session.
[20:50] <hggdh> looking at it, we find that the tests *did* run, but failed
[20:51] <hggdh> for example, <testcase classname="test.DnsServerTest" name="testResolveTcp" time="0.000">
Unable to perform external DNS resolution from the QA Lab&#xA;</skip>

[20:52] <hggdh> looking at the stderr one, we see that a 'netstat -ltnp' showed *NO* DNS server running
[20:52] <hggdh> ergo, DNS failed
[20:52] <hggdh> so we would need to look at the full syslog to try to find the error
[20:52] <hggdh> (I happen to know, it was a package install failure, already corrected)
[20:53] <hggdh> you can also subscribe to the mailing list that announces Jenkins job results
[20:54] <hggdh> https://lists.ubuntu.com/mailman/listinfo/ubuntu-testing-notifications
[20:54] <hggdh> you should receive an email of all Jenkins runs that caused a change of status *from* successful, and all failed runs
[20:55] <hggdh> this usually runs to about 30 emails per day; a really bad day may have around 100 of them
[20:55] <ClassBot> There are 5 minutes remaining in the current session.
[20:55] <hggdh> If you subscribe, I suggest filtering to what you want to know only (either procmail, or local email client filtering)
[20:56] <hggdh> but we are already out of time...
[20:57] <hggdh> so. Please go to #ubuntu-testing for any questions you may have, or email ubuntu-qa@lists.ubuntu.com. we all hang the the #ubuntu-testing channel, and we all subscribe to the ubuntu-qa ML
[20:57] <hggdh> thank you,
[20:57] <ClassBot> diwic asked: This all seems quite complex (inspecting log files etc). What are the advantages of Jenkins compared to other testing frameworks?
[20:58] <hggdh> jenkins allows us to set up different environments, from bare-metal to EC2 and KVMs, and gives us a consolidated view of all tests
[20:59] <hggdh> also, firing off tests can be automated -- checking a bzr branch and firing off on new code, firing off on availability of a new ISO, etc
[21:00] <hggdh> thank you all again
[21:00] <hggdh> ..
[21:00] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[21:01] <SpamapS> Hello! And welcome aspiring, current, and potential packagers!
[21:02] <SpamapS> The reason for this quick presentation is to disseminate some important Packaging Do's and Don'ts when working in Ubuntu, and when working things back upstream into Debian.
[21:03] <SpamapS> Some of these are just my opinion, or are the general way that things are done in Ubuntu, and may not be compatible with the policies in every package in Debian and/or Ubuntu, so please as always be courteous when carrying this message forward.
[21:03] <SpamapS> Also, some required reading, if you want to package software for Debian and/or Ubuntu:
[21:03] <SpamapS> http://wiki.debian.org/IntroDebianPackaging
[21:04] <SpamapS> There's also amazing information in here about ways to iterate and develop on packages in a clean and repeatable way:
[21:04] <SpamapS> http://wiki.debian.org/mk-sbuild
[21:04] <SpamapS> What not to do:
[21:04] <SpamapS> * Panic!
[21:04] <SpamapS> * Use CDBS for new things
[21:04] <SpamapS> * Use dpatch (or any other patch system other than quilt)
[21:05] <SpamapS> * Use svn for new things (bzr, git, hg, but please not svn)
[21:05] <SpamapS> * Create complicated rules files
[21:06] <SpamapS> CDBS is an old way of doing packages where you include hyper-genericised Makefile rules and then feed in variables to affect the behavior. You are much better off using debhelper.
[21:06] <SpamapS> You'll find if you use 'dh_make' to create a new package, whatever it uses is a safe and suggested practice.
[21:07] <SpamapS> dpatch has been deprecated for quilt. quilt is a patch maintenance system meant to help keep patches to upstream source code separate so they can be managed more easily.
[21:07] <SpamapS> There is some work being done on bzr to add the 'looms' feature so quitl wouldn't be necessary, but I don't know how far along that is.
[21:08] <SpamapS> I don't like svn, because if the server is down or you are not on the internet, you cannot do multiple changes, they end up stacking up as one giant diff.
[21:08] <SpamapS> Just recently somebody suggested that bzr-svn or git-svn can be used to talk to svn for push/pull but have a local git/bzr tree, so that may work if you must use SVN for package maintenance.
[21:08] <SpamapS> Now, WHAT TO DO:
[21:09] <SpamapS> * As little as possible
[21:09] <SpamapS> * use dh_make
[21:09] <SpamapS> * use quilt
[21:09] <SpamapS> * use VCS for packaging
[21:09] <SpamapS> * use UDD for Ubuntu specific packaging
[21:10] <SpamapS> What I mean by as little as possible, is that packaging shouldn't be about forcing your will on users, but rather on bringing upstream's software to users while remaining compliant with policy.
[21:11] <SpamapS> Sometimes that means patching and moving things around and having default configs, and all of that is good, but the best package gets smaller as upstream gets feedback from packagers.
[21:12] <SpamapS> skipping a bit.. about VCS ..
[21:12] <SpamapS> There are multiple ways to use VCS to maintain packaging.
[21:12] <SpamapS> in Ubuntu, all packages are (or at least should) be available via bzr by doing 'bzr branch ubuntu:packagename'
[21:13] <SpamapS> Many Debian teams prefer to keep just the debian/ directory in a VCS, be it git or svn or bzr. Check with the maintainer of the package to find out how it is maintained.
[21:14] <SpamapS> For UDD, the source and debian/ dir are kept together.
[21:14] <ClassBot> dnewkirk asked: How ought we label the version of a package? I know that it is partly based on the version of the package itself, as well as perhaps including the .git info if other patches are needed. Is there a defined practice for this? I've looked at the wiki, but did not see a general policy for this.
[21:15] <SpamapS> Package versions are made up of an upstream version, and a debian revision
[21:15] <SpamapS> The upstream version is generally up to the upstream, and you should try to keep that as consistent with them as possible. Everything after the last - in the version of the package is the Debian revision.
[21:16] <SpamapS> For Debian, it is just a montonically increasing counter.
[21:16] <SpamapS> For Ubuntu, we add 'ubuntu#' to note that our version has superseded the debian version
[21:16] <SpamapS> so if you are packaging foo version 1.2.3 for Debian, its   1.2.3-1  .. but if you are skipping Debian and adding it right into Ubuntu, it is 1.2.3-0ubuntu1
[21:17] <SpamapS> a debian revision can include many many changes, as long as they are all spelled out in debian/changelog
[21:17] <ClassBot> Ceno asked: What do VCS and UDD stand for?
[21:17] <SpamapS> Version Control System
[21:17] <SpamapS> Ubuntu Distributed Development
[21:18] <SpamapS> I should have included a link to UDD .. if somebody can fish it out in chat, I'll paste it here as well.
[21:18] <ClassBot> TiMiDo asked: do you need to have your GPG Sign by any devel Face to face, so they can verify you'r ID
[21:19] <SpamapS> For Ubuntu, no, we use Launchpad as our trust network, and in theory, you don't need your key to be signed by Ubuntu developers. They just need to trust that your launchpad account is secure and lists the GPG key that is "you"
[21:19] <SpamapS> For Debian, you do need to have your key signed by an existing Debian Developer, and most will insist on a face to face meeting.
[21:20] <SpamapS> But if you just do packaging casually, you can have a sponsor sign your packages and upload them for you, which can also help for learning.
[21:20] <SpamapS> http://developer.ubuntu.com/packaging/html/udd-intro.html
[21:20] <SpamapS> noneed4anick: yes, thanks!
[21:20] <ClassBot> There are 10 minutes remaining in the current session.
[21:21] <ClassBot> TiMiDo asked: so if i am an ubuntu member i can contribute via launchpad, and of course using bzr so i can update the branch is that it?
[21:21] <SpamapS> Being an Ubuntu member does not give you upload permissions or permissions to push to the bzr branches that host the packages. So no. You need to apply for those to the Developer Membership Board.
[21:22] <SpamapS> I wanted to share then, a few helpful tools that have made my life easier in packaging.
[21:23] <SpamapS> First is sbuild and mk-sbuild, which I mentioned earlier
[21:23] <SpamapS> these build a working chroot filesystem on your machine that you can use to build packages in an isolated and clean environment.
[21:23] <SpamapS> mk-sbuild in precise and later has a new flag, --eatmydata, which makes these even faster to use, as it disables the nasty dpkg habit of calling 'fsync' after every filesystem operation.
[21:24] <SpamapS> I recommend editting /etc/sbuild/sbuild.conf and setting   $purge_session="successful" so that your failed builds will stay around and you can rejoin them with 'schroot -c sessionid'
[21:24] <SpamapS> you can list the active sessions with 'schroot --all-sessions -l'
[21:25] <SpamapS> Another one is 'licensecheck2dep5'
[21:25] <ClassBot> There are 5 minutes remaining in the current session.
[21:25] <SpamapS> When you are creating a new package, or importing a new upstream version, you need to make sure the source code licensing is well documented.
[21:26] <SpamapS> you can run 'licensecheck --copyright -r .' in the root of the source and it will tell you all the copyright and licenses it can find (its VERY good at finding them)
[21:26] <SpamapS> In the cdbs package, there is a helper script, 'licensecheck2dep5' that will take the output of that command, and turn it into an almost-complete debian/copyright file for you.
[21:27] <ClassBot> jincreator asked: What's different between pbuilder and sbuild?
[21:27] <SpamapS> jincreator, I used to be a pbuilder user, and now I use sbuild. Their basic premise is the same.. a chroot which you build inside to make things cleaner.
[21:28] <SpamapS> jincreator: however, sbuild has a few advantages.. the biggest one being that it is what the Ubuntu buildds use, so you are closer to what Ubuntu will use to build your actual package.
[21:28] <SpamapS> jincreator: there is also the fact that sbuild can make use of btrfs and/or lvm snapshotting to make schroot cleanup faster and less of a disk hog.
[21:29] <SpamapS> Thats all I have today. If you want to get started packaging, I'd suggest coming to #ubuntu-devel, finding a bug, and working on it with us. Thanks for the excellent questions everyone!!
[21:29] <cyphermox> Thanks SpamapS :)
[21:30] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html following the conclusion of the session.
[21:31] <cyphermox> Hi and welcome to my session!
[21:31] <cyphermox> My name is Mathieu Trudel and I'm a developer in the Ubuntu Desktop team. Some of the things I'm known for touching are NetworkManager and Evolution :)
[21:31] <cyphermox> I'll be talking about incorporating upstream changes in Ubuntu. This is something we do relatively often in order to fix bugs that are discovered.
[21:32] <cyphermox> Since I'm part of the Ubuntu Desktop team, I'll focus on some of the ways we deal with such a task in the team. There are usually slightly different workflows depending on the teams, but most of it comes down to the same.
[21:32] <cyphermox> I'll go relatively quick for the first part, and answers questions at the end.
[21:32] <cyphermox> If you miss anything, don't worry, it's all right here: http://people.ubuntu.com/~mathieu-tl/presentations/incorporating_changes_into_Ubuntu.txt
[21:32] <cyphermox> There are at least three ways by which you can incorporate upstream changes in Ubuntu:
[21:33] <cyphermox> 1) Taking an brand new version (with a very different version number, or just a "bugfix" release)
[21:33] <cyphermox> I'll actually let coolbhavi talk about this; he has a session tomorrow, Wednesday Feb 2nd, at 16:00 UTC where he would be covering that. (It's called "How to update a package to the latest upstream version in the repositories")
[21:33] <cyphermox> In reality, it's the "simplest" way, where you'd upgrade the package to a newer upstream version directly, in the case where that fixes bugs and doesn't have too high a risk of introducing new ones.
[21:34] <cyphermox> 2) Taking a "snapshot" of an upstream source repository.
[21:34] <cyphermox> This is similar to taking a brand new version. In this case, you would use packaging tools to generate a new upstream tarball to be used as your "new upstream version". For instance, gnome-pkg-tools knows how to grab source from a git tree.
[21:34] <cyphermox> Some packages use this often, but as a general rule of thumb, we try to avoid it: using a snapshot of upstream code has a pretty high chance of also including bugs that haven't been discovered or fixed yet. The reason why is pretty simple: if it's not released yet, it's probably still a work in progress.
[21:34] <cyphermox> All in all though, the process is the same as for a new upstream release, with the added step that you need to make your own tarball.
[21:35] <cyphermox> and... Any questions so far?
[21:35] <cyphermox> I'll just assume not and carry on
[21:36] <cyphermox> 3) Cherry-picking patches from upstream.
[21:36] <ClassBot> TiMiDo asked: what's the difference between ubuntu-devel and ubuntu-motu teams?
[21:38] <cyphermox> TiMiDo: there isn't much of a difference, really. the Ubuntu-devel channel and the Ubuntu developers team in general is a superset of all the various development teams. Everybody is interested in development. Then the ubuntu-motu team and channel have a bit more of a specialist task, where they'd look after packages in universe, or unseeded packages, which is a whole lot of things we get from Debian but for which
[21:38] <cyphermox> there isn't necessarily someone looking after on a day to day basis
[21:38] <cyphermox> I guess this would be my response
[21:39] <cyphermox> MOTU is also a great place to ask for help if you're starting to learn about packaging
[21:39] <cyphermox> We now get to the main subject, a demo of how one would integrate upstream changes (in the form of a patch) into Ubuntu.
[21:40] <cyphermox> Patches can come from a variety of sources: you could write your own, get it from a bug report upstream, or from a bug report against Fedora, or from Debian. To demonstrate how we would do this, I've chosen an example task. We'll fix a small bug in Evolution, everybody's favorite mail client :)
[21:41] <cyphermox> I'll take that opportunity to plug the Operation Cleansweep, also know as the Ubuntu Review team. They look at the quality of patches attached to bugs in Launchpad. I haven't prepared anything about this really, but you're welcome to ask me about it. That's who looks at the patch, patch-submitted-upstream, etc. tags on bugs
[21:41] <cyphermox> back to preparing a patch...
[21:42] <cyphermox> there's a few key things you'll need first
[21:42] <cyphermox> - a system running Precise. sorry, I really planned my demo around this, though in reality it's really not a very different process
[21:43] <cyphermox> - the branch for Evolution (more on this in a minute)
[21:43] <cyphermox> - build-dependencies for evolution (I'll get to that as well, but if you want to get started: "sudo apt-get build-dep evolution")
[21:44] <cyphermox> - and you'll also need bazaar, and the builddeb plugin to bazaar ("sudo apt-get install bzr bzr-builddeb").
[21:44] <cyphermox> With a bit of luck I'm not forgetting any of the pieces :)
[21:44] <cyphermox> For this, you'll need to have a copy of the evolution packaging branch, which is maintained by the Ubuntu Desktop team. On a fast system, this only takes a few seconds:
[21:44] <cyphermox> bzr branch lp:~ubuntu-desktop/evolution/ubuntu evolution
[21:45] <cyphermox> This command basically downloads the source for the evolution package from Launchpad.
[21:45] <cyphermox> The next step is to get in that directory. You'll notice it only contains a debian/ directory, which is a slightly different, but similar process from using UDD branches (full package branches, coming from lp:ubuntu/package or ubuntu:package, when it's not maintained elsewhere).
[21:47] <cyphermox> For full package branches (UDD branches), barry will be doing a session about this tomorrow, Wed Feb 1, at 19:00 UTC
[21:47] <cyphermox> The process is pretty similar, with the difference that the branch contains both the debian/ directory and the full source code for the package
[21:47] <cyphermox> The way to know what branch to use is generally to rely on the Vcs-Bzr field in the debian/control file. Unfortunately, that field isn't always present or pointing to the right place, and isn't obvious to see before downloading the source anyway. Fortunately, the 'debcheckout' command helps with that.
[21:47] <cyphermox> debcheckout evolution
[21:48] <cyphermox> Would yield the same result as the previous command I suggested. If it's not done downloading, let it run, we'll look at other things in the meantime :)
[21:48] <cyphermox> As a next step, let's go see what kind of bug we could fix: https://bugs.launchpad.net/evolution/+bug/924356
[21:48] <cyphermox> everybody got this far?
[21:49] <cyphermox> I've opened this one myself. There's an associated upstream bug (https://bugzilla.gnome.org/show_bug.cgi?id=651221) which was opened by somebody else, and it's actually fixed in a commit upstream. We can then go take that patch and include it in the package.
[21:49] <cyphermox> Now, the bug report mentions two things: one is an actual patch that we could probably take immediately since it's most likely what was committed, as well as a commit ID. We can get to this commit id: http://git.gnome.org/browse/evolution/commit/?id=3dc8b0b
[21:49] <cyphermox> (I'm obviously talking about the Gnome Bug report here)
[21:50] <cyphermox> Looking back at the bug report however, it's mentioned being for 3.3.5 and above, in git branch "master"... This won't affect us now, but sometimes patches for different versions than what we're using could take substancial amounts of rework to apply properly.
[21:50] <ClassBot> There are 10 minutes remaining in the current session.
[21:50] <cyphermox> Save the patch (click "(patch)" near the top of the commit page, then Save As), with a name that will make sense to you and to others. The cool thing with this particular form of patch is that it already contains tags along the top that identify its provenance, and is already in the right format to be saved directly in the debian/patches/ directory. This is possible because the evolution package uses quilt to
[21:50] <cyphermox> maintain patches.
[21:51] <cyphermox> As a general rule I try to make it clear that a patch from a git tree comes from a git tree, and where exactly it comes from. This one, I'd name something like "git_edit_new_default_email_3dc8b0b.patch". Note the reuse of the commit ID, just so that it's as clear as possible where this comes from.
[21:51] <cyphermox> When comes time to update the package to a new version, it's (hopefully) easier to tell that a patch coming from git can probably be simply dropped, since it will already have been included in the new release.
[21:52] <cyphermox> Continuing... In an ideal world there isn't much left to do, but sometimes patches don't quite apply right, or need a bit of changes to do the right thing. Let's see how it goes and add its name to the end of the file 'debian/patches/series'. (Assuming you're in the package's directory)
[21:52] <cyphermox> echo "git_edit_new_default_email_3dc8b0b.patch" >> debian/patches/series
[21:52] <cyphermox> Because we're working in version control, we really also need to add the patch file to version control:
[21:52] <cyphermox> bzr add debian/patches/git_edit_new_default_email_3dc8b0b.patch
[21:52] <cyphermox> And we'll also add an entry to changelog to describe what we've been doing and to close the bug report. This is usually done using the 'dch' or 'debchange' command; and with the -i switch, which adds a new entry. If you try this now though, you'd see that it adds a new entry, however there's one under it marked UNRELEASED. This is because I had already started work on that package :)
[21:53] <cyphermox> Let's use "dch -a" instead. A new entry will be added under mine, normally with your name in brackets just above it.
[21:53] <cyphermox> Add the information about what we've done. We've added a file, so let's name it, and explain what it does and close the bug, all that beside the *:
[21:53] <cyphermox> debian/patches/git_edit_new_default_email_3dc8b0b.patch: use an account's
[21:53] <cyphermox> associated email address rather than the default address when editing new
[21:53] <cyphermox> messages. (LP: #924356)
[21:53] <cyphermox> Try your best to limit the lines to 80 characters and align the start with the other lines. With this done, let's try to test build the package (you need bzr-builddeb for that, and the build dependencies for evolution, so let's get all of this too)!
[21:54] <cyphermox> sudo apt-get install bzr-builddeb
[21:54] <cyphermox> sudo apt-get build-dep evolution
[21:54] <cyphermox> bzr bd
[21:54] <cyphermox> Bzr-builddeb will try to build the package, starting with getting the source tarball for you from the archive. If all goes well, you'd have a .deb package at the end of this to use to test your own work.
[21:55] <cyphermox> I'll take questions again. Don't forget to add QUESTION:  before it, it helps a lot to make sure I see it :
[21:55] <ClassBot> There are 5 minutes remaining in the current session.
[21:56] <cyphermox> Once this is done, you'd go ahead and test the same build in a pbuilder or schroot after building a source package (bzr bd -S); and if that goes well too you could commit your changes, release the package, and submit a merge proposal or upload.
[21:56] <cyphermox> debcommit       # commit my changes
[21:56] <cyphermox> dch -r          # release to precise (all this does is change UNRELEASED to precise and update the timestamp)
[21:56] <cyphermox> debcommit -r    # commit the release
[21:56] <cyphermox> These are the three steps condensed in commands
[21:57] <cyphermox> With this done, you could push the branch to your launchpad account (name it something that makes sense to you, but it should be under your launchpad ID, and in the evolution project):      bzr push lp:~yourname/evolution/lp924356
[21:57] <cyphermox> And propose a merge:         bzr lp-propose lp:~ubuntu-desktop/evolution/ubuntu
[21:57] <cyphermox> From there, a developer will be able to review your changes and upload them.
[21:58] <cyphermox> I can go in more details for anyone who asks, I don't think there's another session next :)
[22:00] <cyphermox> Thanks all for attending! :)
[22:01] <ClassBot> Logs for this session will be available at http://irclogs.ubuntu.com/2012/01/31/%23ubuntu-classroom.html
[22:20] <kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
[22:20] <kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
[22:20] <kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
[22:20] <kanliot>                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
[22:20] <kanliot>