Opportunistic Developers Week March 2010 - Welcome - Jono Bacon - Mar 1, 2010

(11:01:14 AM) jono: alright!
(11:01:22 AM) jono: lets just wait a min for late folks to join :)
(11:01:33 AM) jono: [SLIDE 1]
(11:01:59 AM) jono: Lernid folks, click on the Session tab to see the slides
(11:02:20 AM) jono: Lernid may go a little grey while it downloads the slides
(11:02:23 AM) jono: but it will come back :)
(11:03:08 AM) jono: ok, non Lernid folks can grab the slides at http://www.jonobacon.org/files/uodw-welcome.pdf
(11:03:20 AM) Guest6221 is now known as gooomba
(11:03:21 AM) jono: welcome everyone to Ubuntu Opportunistic Developer Week! woooooooo!
(11:03:50 AM) jono: [SLIDE 1]
(11:04:01 AM) jono: click Session to see the slides folks
(11:04:09 AM) jono: I know a bunch of you, but some of you are new here, so let me first explain who I am
(11:04:21 AM) jono: my name is Jono Bacon and I am the Ubuntu Community Manager working at Canonical
(11:04:37 AM) jono: my job is to help grow a fun, productive and inspiring Ubuntu community: a place where we can all be together to celebrate an ethos, and work together to help build awesome software and community facilities around that ethos
(11:04:50 AM) jono: [SLIDE 2]
(11:04:58 AM) jono: Ubuntu is a way of life, a philosophy and an ideal: and being part of this incredible community is heaps of fun
(11:05:17 AM) jono: our community is a phenomenal place to be: this picture was taken at our Ubuntu Developer Summit (UDS) in Barcelona
(11:05:28 AM) jono: each UDS is where we get together to discuss, design and plan our next version of Ubuntu
(11:05:36 AM) jono: right now, we are working on this baby
(11:05:39 AM) jono: [SLIDE 3]
(11:05:52 AM) jono: Lucid.
(11:06:09 AM) jono: hehe I am cut and pasting to a part way through and then I start typig
(11:06:12 AM) jono: typing :)
(11:06:30 AM) jono: Ubuntu 10.04 Lucid Lynx will be the most exciting Ubuntu release in our history
(11:06:34 AM) jono: ...so far
(11:06:35 AM) jono: :)
(11:06:49 AM) jono: I think this release really defines who we are, where we have been and where we are going, and it packs some stunning features such as social networking build right into the desktop, incredible boot speed, refined look and feel, software center improvements, new apps and more
(11:07:07 AM) jono: so...Ubuntu Opportunistic Developer Week, let me explain the idea behind the event
(11:07:17 AM) jono: [SLIDE 4]
(11:07:43 AM) jono: Ubuntu is here to help people learn, create and interact
(11:07:55 AM) jono: when I first put these slides together, it was for a talk in LA that was doing at SCALE
(11:08:11 AM) jono: there I was throwing together a description of my talk, and the words "learn, create and interact" just popped into my head
(11:08:27 AM) jono: [SLIDE 5]
(11:08:32 AM) jono: I then realized that this is a process in which each word helps us define and learn from the next one
(11:08:59 AM) jono: we have all been passionate about build a system in which you can not only consume free software easily, but to also build a system, framework and tools that help you to collaborate
(11:09:21 AM) jono: if you can easily LEARN how to be creative, you can CREATE and that can help you INTERACT with those people who use your creations or other creators
(11:09:41 AM) jono: [SLIDE 6]
(11:09:50 AM) jono: Ubuntu Opportunistic Developer Week is all about kicking off a set of ideas that inspire you good folks to CREATE
(11:10:14 AM) jono: the whole point of the week is to break down the gap between having a cool idea and going ahead to implement it
(11:10:30 AM) jono: [SLIDE 7]
(11:10:40 AM) jono: this gets to the core of the Ubuntu philosophy - we are who we are because of who we all are
(11:10:59 AM) jono: if we can break down the barriers to people creating, we can all create together, continuing to build an incredible platform and set of tools that lets *everyone* create, irrespective of their interest or discipline
(11:11:41 AM) jono: [SLIDE 8]
(11:12:02 AM) jono: with this goal in mind, I have been working hard really to socialize the term "Opportunistic Developers"
(11:12:30 AM) jono: Opportunistic Developers are people like you and me: people who have cool ideas for software, but are not necessarily programmers by definition - we are people who have the ability to write code, but we write it for fun, often in our spare time, working on projects that are specifically interesting to us
(11:12:53 AM) jono: [SLIDE 9]
(11:13:03 AM) jono: the platform that really changed this was the iPhone - much as it niggles at our free software tendencies, Apple did an incredible job not only delivering a device that people loved, but also a platform that harnessed the create ideas from opportunistic developers
(11:13:29 AM) jono: developers have written everything from serious exercise apps to apps where you press a button and it makes a fart noise
(11:13:41 AM) jono: in the opportunistic developer world, all apps are welcome, irrespective of how specialized or niche: you want to write an app for a specific service or site? go ahead!
(11:13:54 AM) jono: the goal here is *enabling creativity*, irrespective of how it will manifest :-)
(11:14:12 AM) jono: Ubuntu provides an absolutely incredible platform for this: we have facilities for creating applications, using multimedia, networking, creating graphics, and all manner of other things
(11:14:39 AM) jono: while Ubuntu supports many languages and frameworks, we are particularly big fans of Python, and Python is simple, effective and can do pretty much anything you need it to do with the vast library of plug-ins and modules that we ship - this makes it a stunning platform for writing programs that are fun and interesting to you
(11:15:11 AM) jono: this week provides a week of sessions on a wide variety of topics that explain how you can get started with this platform
(11:15:30 AM) jono: now, to really get the most out of this week, I would recommend you each think of a program to write
(11:15:41 AM) jono: think of something fun and interesting and simple for you to focus your efforts on
(11:15:52 AM) jono: it could be a serious app that helps you life, or something silly and fun
(11:16:12 AM) jono: whatever it might be, think of something over the next hour and use that as your focus for making that happen this week
(11:16:31 AM) jono: I have also created a challenge this week for you all
(11:16:49 AM) jono: to think of an app, see how much progress you make on it and send me screenshots on Friday so I can blog about it and show it off
(11:16:54 AM) jono: more details on this are at http://www.jonobacon.org/2010/02/25/the-grand-app-writing-challenge/
(11:17:29 AM) jono: so, let's look at the collaborative development process
(11:17:44 AM) jono: [SLIDE 10]
(11:17:58 AM) jono: creating programs follows this broad four step process
(11:18:13 AM) jono: in this session I am going to talk about some of the work going on to help this process
(11:18:29 AM) jono: [SLIDE 11]
(11:18:38 AM) jono: we actually have an incredible platform for building software
(11:18:51 AM) jono: this diagram basically explains some of our key components
(11:18:57 AM) jono: firstly, we have a tonne of ideas
(11:19:15 AM) jono: you lovely people tell me your ideas every day, and it is part of my job to help you realize them and see them happen
(11:19:26 AM) jono: ideas are great, but we want to convert them into software that people can run
(11:19:44 AM) jono: so we have a bunch of development environments, with GNOME and KDE as good examples, which help this happen
(11:20:02 AM) jono: they both offer great facilities for writing integrated top-class apps
(11:20:20 AM) jono: personally I don't care which environment you use, just use at least one :)
(11:20:35 AM) jono: we then have Launchpad and Bazaar
(11:20:46 AM) jono: these tools provide facilities in which we can collaborate together on software
(11:20:53 AM) jono: bzr helps you share source code with each other
(11:21:12 AM) jono: and Launchpad provides facilities for hosting code, bug reports, answers and a wide range of other things
(11:21:35 AM) jono: so at this point you could create software, but software is pointless unless people use it
(11:21:47 AM) jono: so the Debian packaging system, which we use in Ubuntu, comes next
(11:22:03 AM) jono: with it you can create packages which are simple to install and install all of their dependencies too
(11:22:12 AM) jono: finally, how do we deliver these packages?
(11:22:23 AM) jono: Launchpad has a wicked-cool feature called Personal Package Archives
(11:22:41 AM) jono: this is basically your very own Debian package archive where you can publish your software
(11:22:48 AM) jono: and it can appear in the Ubuntu Software Center
(11:23:03 AM) jono: so...we have an end to end set of tools for making software and delivering it
(11:23:31 AM) jono: I now want to talk through some of the tools available and work going on which makes our four steps: imagine, create, collaborate and publish easier
(11:23:48 AM) jono: [SLIDE 12]
(11:24:09 AM) jono: the first thing we need to do is break down this insane idea that writing programs is for other people
(11:24:17 AM) jono: that "I am not smart enough" to write a program
(11:24:26 AM) jono: or that "only proper programmers write programs"
(11:24:45 AM) jono: I can assure you that you all have the ability to unlock an incredible world of creativity
(11:24:57 AM) jono: you just need to learn some key tools, and Python is an absolute doddle to use
(11:25:17 AM) jono: to help break this down I have organized this week and I have been blogging up a storm on Planet Ubuntu and Planet GNOME about this
(11:25:40 AM) jono: everyone *can* do it
(11:25:59 AM) jono: you just need to give it a shot: think of a cool app to write, use the sessions this week to have a go at writing it and do it :)
(11:26:05 AM) jono: you have nothing to lose
(11:26:08 AM) jono: [SLIDE 13]
(11:26:17 AM) jono: the next step is getting to the fun
(11:26:26 AM) jono: this was a term Rick Spencer said to me once that stuck with me
(11:26:51 AM) jono: the whole idea here is that we want to make software development so easy on Ubuntu that you don't need to suffer through the complexities that surround making software
(11:27:03 AM) jono: in the past, build systems, Makefiles and other crap complicated things
(11:27:20 AM) jono: all the things that did not involve writing code created a blocker for writing code
(11:27:25 AM) jono: so we are keen to fix this
(11:27:44 AM) jono: a great starting point here, and one encouraged throughout the week is Quickly
(11:27:47 AM) jono: [SLIDE 14]
(11:27:56 AM) jono: quickly is a tool which lets you create new apps easily
(11:28:12 AM) jono: it has a bunch of templates such as ubuntu-project that create apps for a particular environment or use case
(11:28:18 AM) jono: creating an app is simple:
(11:28:23 AM) jono: quickly create ubuntu-project mycoolapp
(11:28:33 AM) jono: bang that into a terminal and you have a new app
(11:29:24 AM) jono: (btw, you can install quickly from the software center or with: sudo apt-get install quickly)
(11:29:28 AM) jono: [SLIDE 15]
(11:29:36 AM) jono: editing code in quickly is simple
(11:29:45 AM) jono: inside the new directory you created (e.g. mycoolapp)
(11:29:51 AM) jono: whack in: quickly edit
(11:29:57 AM) jono: it loads all the code into GEdit
(11:29:58 AM) jono: simple
(11:30:06 AM) jono: [SLIDE 16]
(11:30:14 AM) jono: editing your user interface is simple with glade
(11:30:16 AM) jono: just type in:
(11:30:18 AM) jono: quickly glade
(11:30:36 AM) jono: and finally, if you want to run your app
(11:30:39 AM) jono: [SLIDE 17]
(11:30:44 AM) jono: type in: quickly run
(11:30:57 AM) jono: creating a new app and getting started is really quick and simple
(11:31:11 AM) jono: we recommend that you all create your new apps with quickly in this way
(11:31:18 AM) jono: Rick Spencer has a quickly session later today
(11:31:19 AM) jono: :)
(11:31:46 AM) jono: also, if you want to get started writing programs, when you have created your new app, inside the new directory it creates, just run: quickly tutorial
(11:31:55 AM) jono: it will show you how to create buttons, and have them do stuff :)
(11:32:09 AM) jono: [SLIDE 18]
(11:32:24 AM) jono: we have been really keen to help optimize how people collaborate together too
(11:32:36 AM) jono: we have some key tools which people use to work together, such as Launchpad and bzr
(11:32:59 AM) jono: let me explain broadly how this works and a new project which is making this whole process easier
(11:33:01 AM) jono: [SLIDE 19]
(11:33:08 AM) jono: imagine you want to fix a bug
(11:33:19 AM) jono: this is basically how it works
(11:33:23 AM) jono: 1. choose a bug to fix
(11:33:39 AM) jono: this usually involves looking at bug reports on Launchpad
(11:33:44 AM) jono: 2. download the code with bzr
(11:33:54 AM) jono: 3. work on the code you downloaded to fix it
(11:34:22 AM) jono: 4. commit the changes you made locally: this process basically generates a set of changes which represent your bug fix
(11:34:42 AM) jono: 5. you then "push" you code: this is where you upload your changes to your account on Launchpad
(11:34:56 AM) jono: 6. attach the branch with your bug fix in it to the original bug report
(11:35:18 AM) jono: 7. finally, you propose your bug fix to be merged into the original project so everyone can use it
(11:35:45 AM) jono: so it boils down to: decide what you want to fix, grab the code, fix it, identify the changes to share, upload them, propose them for inclusion in the main project
(11:35:57 AM) yofel_ is now known as yofel
(11:35:58 AM) jono: while incredible flexible, this is quite complex to get your head around
(11:36:11 AM) jono: believe me, you get the hang of it, but it takes a few times to get used to it
(11:36:26 AM) jono: Martin Owens (doctormo on IRC) has been working on a tool to build this workflow into the desktop
(11:36:30 AM) jono: it is caled Ground Control
(11:36:51 AM) jono: let me explain how it works for fixing a bug
(11:36:54 AM) jono: [SLIDE 19]
(11:37:01 AM) jono: [SLIDE 20]
(11:37:15 AM) jono: you first identify a bug to fix
(11:37:24 AM) jono: like this one, which is a test bug I added to the groundcontrol project
(11:37:27 AM) jono: [SLIDE 21]
(11:38:07 AM) jono: now go to the file manager in Ubuntu, and groundcontrol when installed (which is not on a default Ubuntu) will have a Projects directory in your home directory
(11:38:21 AM) jono: when you view that directory it adds a few buttons to nautilus at the top
(11:38:55 AM) jono: if you click on the second button 'Fetch Project' you can select a project to work on
(11:38:57 AM) jono: [SLIDE 22]
(11:38:57 AM) tobias is now known as Guest11438
(11:39:02 AM) jono: it then pops up this dialog box
(11:39:14 AM) jono: you can enter a project name, such as ground control, and it displays them in the dialog
(11:39:22 AM) jono: select it and click ok
(11:39:25 AM) jono: [SLIDE 23]
(11:39:38 AM) jono: this will then create a 'groundcontrol' directory in Projects
(11:39:57 AM) jono: now if you want to fix a bug, click the 'Fix Bug' button
(11:40:02 AM) jono: [SLIDE 24]
(11:40:23 AM) jono: here you can search for a bug: type in search terms or the bug number and it will list all the bugs that match your search
(11:40:36 AM) jono: [SLIDE 25]
(11:40:59 AM) jono: when you select  bug and click ok, the code is download into a folder called "bugfix-lp-<bugnumber>"
(11:41:04 AM) jono: this is the branch where you will fix the bug
(11:41:12 AM) jono: [SLIDE 26]
(11:41:22 AM) jono: now go into that folder where the code is and fix the bug
(11:41:31 AM) jono: imagine I just add some content to the README file as a test
(11:41:33 AM) jono: [SLIDE 27]
(11:41:48 AM) jono: when you have edited any of the files you will see an Upload Fix button appear
(11:41:58 AM) jono: when your bugfix is ready, just click the button
(11:42:04 AM) jono: [SLIDE 28]
(11:42:10 AM) jono: this dialog then pops up
(11:42:22 AM) jono: it asks you what changes you made: here summarize what you did to fix the bug
(11:42:26 AM) jono: this is the commit message
(11:42:30 AM) jono: [SLIDE 29]
(11:42:34 AM) jono: you then see this dialog
(11:43:17 AM) jono: this is where you can type in a message that the main project maintainers see when you propose your bug fix for merging - this gives you an opportunity to tell them your bugfix is good to be merged in
(11:43:20 AM) jono: [SLIDE 30]
(11:43:44 AM) jono: when you click OK, the bug fix is uploaded, attached to the bug report and the merge proposal is made
(11:44:02 AM) jono: you will now see a View Request button
(11:44:04 AM) jono: [SLIDE 31]
(11:44:12 AM) jono: click that and you can see the merge request that was made
(11:44:26 AM) jono: here it says that I am proposing a fix for this bug to the ground control project
(11:44:41 AM) jono: the owners of that project can now go and approve my fix if they like
(11:44:43 AM) jono: [SLIDE 32]
(11:44:54 AM) jono: and here you can see the bugfix branch added to my bug report
(11:45:13 AM) jono: as you can see, Ground Control merges the command line functionality right into bzr
(11:45:17 AM) jono: making development much easier
(11:45:30 AM) jono: [SLIDE 33]
(11:45:39 AM) jono: so the final element is visability
(11:45:44 AM) jono: visibility, rather :)
(11:45:55 AM) jono: making it really simple for people to access your software and use it
(11:46:12 AM) jono: this is all about packaging
(11:46:21 AM) jono: packaging is a complex art, and one that many people struggle with
(11:46:27 AM) jono: fortunately, Quickly makes it simple
(11:46:31 AM) jono: [SLIDE 34]
(11:46:42 AM) jono: if you want to create a local package, just run: quickly package
(11:47:04 AM) jono: quickly uses a tool called distutils-extra that will look at all the python modules you use and set them as dependencies for the package
(11:47:09 AM) jono: so if I have this in my program:
(11:47:14 AM) jono: import gstreamer
(11:47:35 AM) jono: quickly package will make sure my program has the gstreamer packages installed
(11:47:35 AM) jono: :)
(11:48:02 AM) jono: now, if you want to share your package with others, you can run: quickly release 0.1
(11:48:19 AM) jono: this will release a 0.1 version of your software and publish it to your PPA in Launchpad
(11:48:31 AM) jono: this makes it possible for anyone else to grab your software and use it
(11:48:45 AM) jono: and because it is a PPA, all future updates will be automatically delivered to them
(11:49:02 AM) jono: [SLIDE 35]
(11:49:18 AM) jono: something we have been working on in Lucid is to raise the visibility of PPAs
(11:49:25 AM) jono: and they are now displayed in the Ubuntu Software Center
(11:49:46 AM) angel_ is now known as anhelido
(11:49:46 AM) jono: this means that you can use these awesome tools to make your software and publish it easily via the Ubuntu Software Center
(11:49:47 AM) jono: :)
(11:50:10 AM) jono: so
(11:50:13 AM) jono: [SLIDE 36]
(11:50:20 AM) jono: I am a bug fan of eating your own dog food
(11:50:40 AM) jono: so I have written some apps that highlight how this platform has enabled me, very much of a non-coder, to write software
(11:50:43 AM) jono: a few examples...
(11:50:47 AM) jono: [SLIDE 37]
(11:50:50 AM) jono: Acire
(11:51:05 AM) jono: so named after my wife, it is her name backwards: Erica
(11:51:18 AM) jono: this is a tool which provides a library of Python examples which you can use
(11:51:40 AM) jono: I just released a new version, see http://www.jonobacon.org/2010/02/26/acire-0-3-released/ for details
(11:51:48 AM) jono: [SLIDE 38]
(11:51:52 AM) jono: Lernid
(11:51:58 AM) jono: which many of you are using to view this week :)
(11:52:10 AM) jono: I was really keen to create an app which made connecting to events such as this really simple
(11:52:21 AM) jono: so I created Lernid, added the ability to show slides and websites, the local schedule etc
(11:52:37 AM) jono: now mbudde is maintaining Lernid as I am busy with other things, thanks Michael! :)
(11:52:50 AM) jono: finally
(11:52:54 AM) jono: [SLIDE 39]
(11:53:07 AM) jono: as some of you will know, I do a podcast called Shot Of Jaq
(11:53:18 AM) jono: you can check it out at http://www.shotofjaq.org
(11:53:47 AM) jono: Shot Of Jaq is a podcast which provides the first 10mins of a discussion and we encourage others to join us and continue the discussion on the website
(11:54:11 AM) jono: it is all about discussion, so I have been writing an app called App Of Jaq which specifically builds Shot Of Jaq into your desktop
(11:54:26 AM) jono: it is specific, and niche, but remember, that is cool for opportunistic developers :)
(11:54:38 AM) jono: so there we have it
(11:54:43 AM) jono: [SLIDE 40]
(11:54:53 AM) jono: a key resource which I set up for this is #ubuntu-app-devel on freenode
(11:55:03 AM) jono: this is a channel filled with folks who are writing software
(11:55:34 AM) jono: it is a great place to ask questions, share progress on your apps and more
(11:55:45 AM) jono: also, the very final session every day this week is a hacking party
(11:55:55 AM) jono: head over to that channel and spend a few hours hacking on your new app
(11:56:04 AM) jono: and you can be around others to ask questions and more
(11:56:09 AM) jono: hacking together is tonnes of fun :)
(11:56:28 AM) jono: [SLIDE 41]
(11:56:32 AM) jono: ok, we only have a few mins
(11:56:36 AM) jono: any questions?
(11:57:15 AM) jono: NilsR70, Do we have to share copyright with Canonical when we use Launchpad?
(11:57:16 AM) jono: no
(11:57:17 AM) jono: :)
(11:57:36 AM) jono: eviltwin44, Isn't Acire something which would be much better suited as a website where people can submit snippits and people comment on them?
(11:58:11 AM) jono: I deliberately made the library of snippets a separate project (http://www.launchpad.net/python-snippets) so you can provide any UI to thenm
(11:58:19 AM) jono: Acire is a desktop UI, and you could have a web UI if you like
(11:58:31 AM) jono: I am a desktop guy, and having it on the desktop is great for editing code, running snippets etc
(11:58:48 AM) jono: w1nGNUtz, QUESTION: Do you have plans to integrate quickly, glade in any of the existing IDEs so that the user doesn't need to swtich bettween command line and gedit?
(11:59:08 AM) jono: w1nGNUtz, most Linux hackers like using text editors and command line for running comands
(11:59:10 AM) jono: commands
(11:59:21 AM) jono: but there is no reason why someone could not create an IDE
(11:59:55 AM) jono: too many people don't get started developing on Linux because of an IDE: it is a false prophecy, there are great tools such as GEdit and Glade to provide the equivalent functionality
(11:59:58 AM) jono: ok, folks, thanks!
(12:00:12 PM) jono: I am done, next up is aquarius who will get you all started with CouchDB! :-)

MeetingLogs/OpWeek1003/Welcome (last edited 2010-03-01 18:38:17 by pool-71-182-100-128)