SlideShare a Scribd company logo
Opportunistic
   Programming
Paolo Sammicheli <xdatap1@ubuntu.com>
Make your project
     in UBUNTU
 Paolo Sammicheli <xdatap1@ubuntu.com>
Ubuntu Opportunistic Programming (Europython 2011)
http://paolo.sammiche.li/europython/
LAUNCHPAD
Paolo Sammicheli <xdatap1@ubuntu.com>
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
PROJECT HOSTING
Ubuntu Opportunistic Programming (Europython 2011)
CODE HOSTING
Ubuntu Opportunistic Programming (Europython 2011)
BUG TRACKING
Ubuntu Opportunistic Programming (Europython 2011)
BLUEPRINT
Ubuntu Opportunistic Programming (Europython 2011)
TRANSLATIONS
Ubuntu Opportunistic Programming (Europython 2011)
ANSWERS
Ubuntu Opportunistic Programming (Europython 2011)
PERSONAL PACKAGE ARCHIVE
Ubuntu Opportunistic Programming (Europython 2011)
QUICKLY
Paolo Sammicheli <xdatap1@ubuntu.com>
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
ubuntu-application
ubuntu-application
 ubuntu-pygame
ubuntu-application
 ubuntu-pygame
ubuntu-flash-game
ubuntu-application
 ubuntu-pygame
ubuntu-flash-game
    ubuntu-cli
ubuntu-application
 ubuntu-pygame
ubuntu-flash-game
    ubuntu-cli
PROJECT CREATION
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
DEVELOPMENT
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
PUBLISHING
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
Ubuntu Opportunistic Programming (Europython 2011)
R  K   IN
 W    O              S   S
             G  R  E
  P   R  O
http://developer.ubuntu.com/
Questions?
Paolo Sammicheli <xdatap1@ubuntu.com>

More Related Content

ODP
Ubuntu and the opportunistic programming.
PDF
Grunt Talk Given at Ottawa JS
PPTX
HOW TO USE WINDOWS MOVIE MAKER
PPTX
How to Use Powtoon
PDF
PPTX
HOW TO USE PREZI
PDF
Design for gutenberg
Ubuntu and the opportunistic programming.
Grunt Talk Given at Ottawa JS
HOW TO USE WINDOWS MOVIE MAKER
How to Use Powtoon
HOW TO USE PREZI
Design for gutenberg

Viewers also liked (12)

PDF
Ubuntu & Agile
ODP
Circolo Izquierda: Anatomia Sistema Linux
ODP
Linuxday 2009: Facciamo Ubuntu!
PDF
Lead from the Middle - Flip the Switch, Jazz Up Teams, Power Innovation
ODP
CRAL MPS: Anatomia di un sistema GNU Linux
ODP
Introduzione al software libero
ODP
Partecipare al ciclo di sviluppo di Ubuntu - 2ª Parte
PDF
Leadership Models for Open Source Communities
ODP
Introduzione al Software Libero
ODP
Anatomia di una distribuzione GNU/Linux
PDF
Introduzione all'Agile Software Development
ODP
Partecipare al ciclo di sviluppo di Ubuntu - 1ª Parte
Ubuntu & Agile
Circolo Izquierda: Anatomia Sistema Linux
Linuxday 2009: Facciamo Ubuntu!
Lead from the Middle - Flip the Switch, Jazz Up Teams, Power Innovation
CRAL MPS: Anatomia di un sistema GNU Linux
Introduzione al software libero
Partecipare al ciclo di sviluppo di Ubuntu - 2ª Parte
Leadership Models for Open Source Communities
Introduzione al Software Libero
Anatomia di una distribuzione GNU/Linux
Introduzione all'Agile Software Development
Partecipare al ciclo di sviluppo di Ubuntu - 1ª Parte
Ad

More from Paolo Sammicheli (20)

PDF
Efficient and Effective. The Best of Two Worlds
PDF
Cosmetic Agile, il Prêt-à-porter dell'Agilità
PDF
The Hype of Cosmetic Agile
PDF
Engineering practices in Scrum for Hardware - Sisma Spa Case Study
PDF
Scrum@Scale with Hardware
PDF
Scrum for Hardware - Agile Slovenia 2018
PDF
Agile Organization with Scrum@Scale, Vimar Spa a real example
PDF
Scrum in the Fourth Industrial Revolution - Global Scrum Gathering Minneapolis
PDF
Agile Organizations with Scrum@Scale
PDF
Guida a Scrum@Scale - Italiano, v.1.01 18 Giugno 2018
PDF
Agile for Industry - Applicare Scrum nel Manufacturing - PMI NIC Milno
PDF
Industrial Agility: Come Rispondere alla Quarta Rivoluzione Industriale
PDF
Global Scrum Gathering San Diego 2017: The Fourth Industrial Revolution and A...
PDF
Agile London: Industrial Agility, How to respond to the 4th Industrial Revolu...
PDF
Industrial Agility, Come rispondere alla quarta Rivoluzione Industriale
PDF
Introduzione all'Agile Software Development
ODP
Introduzione al software libero
ODP
Ubuntu Bug Triage
ODP
Ubuntu Bug Report
ODP
Ubuntu Testing
Efficient and Effective. The Best of Two Worlds
Cosmetic Agile, il Prêt-à-porter dell'Agilità
The Hype of Cosmetic Agile
Engineering practices in Scrum for Hardware - Sisma Spa Case Study
Scrum@Scale with Hardware
Scrum for Hardware - Agile Slovenia 2018
Agile Organization with Scrum@Scale, Vimar Spa a real example
Scrum in the Fourth Industrial Revolution - Global Scrum Gathering Minneapolis
Agile Organizations with Scrum@Scale
Guida a Scrum@Scale - Italiano, v.1.01 18 Giugno 2018
Agile for Industry - Applicare Scrum nel Manufacturing - PMI NIC Milno
Industrial Agility: Come Rispondere alla Quarta Rivoluzione Industriale
Global Scrum Gathering San Diego 2017: The Fourth Industrial Revolution and A...
Agile London: Industrial Agility, How to respond to the 4th Industrial Revolu...
Industrial Agility, Come rispondere alla quarta Rivoluzione Industriale
Introduzione all'Agile Software Development
Introduzione al software libero
Ubuntu Bug Triage
Ubuntu Bug Report
Ubuntu Testing
Ad

Recently uploaded (20)

PPTX
Machine Learning_overview_presentation.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
Cloud computing and distributed systems.
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Encapsulation theory and applications.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Machine learning based COVID-19 study performance prediction
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
Machine Learning_overview_presentation.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Per capita expenditure prediction using model stacking based on satellite ima...
Cloud computing and distributed systems.
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Encapsulation theory and applications.pdf
MYSQL Presentation for SQL database connectivity
MIND Revenue Release Quarter 2 2025 Press Release
A comparative analysis of optical character recognition models for extracting...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Big Data Technologies - Introduction.pptx
Electronic commerce courselecture one. Pdf
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Machine learning based COVID-19 study performance prediction
Chapter 3 Spatial Domain Image Processing.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Spectroscopy.pptx food analysis technology
Advanced methodologies resolving dimensionality complications for autism neur...
The Rise and Fall of 3GPP – Time for a Sabbatical?

Editor's Notes

  • #2: Europython 2011 Florence, Italy. June, 20-26 2011
  • #3: Hi everybody, thanks for coming! Today we&apos;ll see how to create your project in Ubuntu reaching millions Ubuntu users in the world.
  • #4: My name&apos;s Paolo Sammicheli, I&apos;m an Ubuntu Member from the Italian Community. I&apos;m involved in several things: marketing, testing, translation and so on... and yes, I do speech a lot at conferences :)
  • #5: Let&apos;s start with a good news. You don&apos;t have to take notes! Slides in PDF format with notes and links for further information are already available at this link.
  • #6: Let&apos;s start talking about LAUNCHPAD.
  • #7: Wikipedia says “A launchpad is the area and facilities where rockets or spacecraft lift off.” Something like this. But we don&apos;t have to go into the space, so we&apos;ll talk about another launchpad.
  • #8: This is the LAUNCHPAD we&apos;ll talk about. It&apos;s a free software web application, created by Canonical for the Ubuntu development, available free of charge for any free software project.
  • #9: When you sign in you get a personal profile like this. Into a personal profile you&apos;ll find all the user information (irc nick, gpg key), what he&apos;s working on, team membership, links to external wiki pages and so on. There&apos;s also a way to contact the person with a web form if the email address has been marked hidden by that person. In Ubuntu we have a Code of Conduct you need to sign before to join. It&apos;s hosted in this profile page with its sign.
  • #10: In Launchpad you can create Teams in which you can have shared resources, like the PPAs (we&apos;ll discuss later about it) and for each team, launchpad can provide a mailing list making easier to collaborate.
  • #11: The most interesting thing about Launchpad is the project hosting. You can register in Launchpad any free software project, free of charge.
  • #12: This is an example of a Project Home Page on Launchpad. On the top you can see a navigation bar which shown all the Launchpad features. Let&apos;s take a look at it.
  • #13: Launchpad can keep your source code. You can use BAZAAR as revision system making easier publishing your code and get contribution from someone else.
  • #14: Bazaar allow you to create a personal branch of a software project, developing a patch and then send it to the original owner for inclusion. It&apos;s called “merge proposal”. This process make easier code contribution and enable new people to get their feet wet with easy changes.
  • #15: For every software project there&apos;s also a bug tracking system.
  • #16: Your users can send you bug reports with launchpad and they would be notified when the problem is solved.
  • #17: There&apos;s also a BLUEPRINT module for software specification. The blueprint&apos;s name comes from engineering, where the old project were drafted in a blue paper like this.
  • #18: You can write software specification and tracking dependencies, progress and priority very easily. It&apos;s a so powerful feature that you can use it also for non software projects: this is a Blueprint for organizing a conference here in Italy.
  • #19: Launchpad allows your project to be translated in several languages.
  • #20: Translations can be made with the web interface or downloading and uploading po files. You can assign the translation to structured teams or keeping it open to anyone. For the Italian language we recommend the structured team because you will get a smooth review process for every translation producing high quality results.
  • #21: Last but not least, Launchpad provides a Question and Answer system. You can use it for communicate with your users and it allows users to help each other.
  • #22: Answer has multi language support. Users willing to help register the languages they know and the system propose to ask question in all languages supported by the volunteers.
  • #23: You may already know that for installing software in Ubuntu (and in Debian) you need a DEB package.
  • #24: The Launchpad module called PPA make easier for anyone to distribute his software on a package repository.
  • #25: And now let&apos;s take a look to Quickly. Quickly it&apos;s a tool, initially developed by the Ubuntu Platform Leader Rick Spencer for make easier developing a new application in Ubuntu.
  • #26: A common problem for anybody who start programming in a Linux distribution is the huge choice of things. Which language: C, C++, Vala, Python, Perl, Java o C#? Which library? QT o GTK? Why not WxWindow? And which IDE!?!
  • #27: Quickly is organized in templates. These templates provides common choices making easier getting a consistent route for a newcomer. What if you don&apos;t like a template? Well, you can even create your own template: http://goo.gl/ieFSk
  • #28: The first available template is called ubuntu-application. It provides: - Python - GTK 2 - pygtk (in natty it&apos;s started the transition to PyGI and in Oneiric will be ported to GTK3) Tools available: - GLADE for interfaces design - GEDIT for coding (or you favorite text editor)
  • #29: Ubuntu-pygame is a template designed for Python games.
  • #30: With the last Quickly release, available in Ubuntu 11.04, there&apos;s a new template for Adobe Flash Games. In this case quickly works only like a publishing helper because all the development stuff are done into the flash tools.
  • #31: Last not least, if you don&apos;t have to design an end user graphical application you can use ubuntu-cli which provides a command line interface template.
  • #32: Let&apos;s try with ubuntu-application template because it&apos;s the most generalized template and it&apos;s available in all quickly releases. All the commands I will show you during this presentation are available in both Ubuntu 10.04 LTS and Ubuntu 11.04.
  • #33: Let&apos;s see how to create a new project.
  • #34: Quickly is a command line tool, very very easy to learn. It provides a small set of directive very easy to remember. And auto-completion with “tab” key. With the CREATE directive we select the template and we define the project name. Being in the city of Florence, let&apos;s call it “florence”.
  • #35: Quickly will create the project structure, will create a local bazaar repository where to save the project and the it runs the application created.
  • #36: Here is it! As you can see it&apos;s a very simple application based on a single window.
  • #37: Inside the newly created directory there&apos;s our project structure.
  • #38: First thing I suggest is to fill the AUTHORS file so you can forget about it and having fun programming. :)
  • #39: Put your name, year and email in the AUTHORS file.
  • #40: And then you can choose a license. In this example we&apos;ll use the GPL 3, but inside quickly you will find many open source license like the Apache-2.0, BSD, GPL-2, MIT, LGPL-2 and the LGPL3. You can even write your own license with the option OTHER.
  • #41: Quickly will create the COPYING file with the license text and it will modify every file in the source three with the license header.
  • #42: Problem solved! Now let&apos;s start having fun programming!
  • #43: For designing the user interface you can use the command quickly design
  • #44: It opens GLADE, which is the recommended GUI designer for GTK. For our example we don&apos;t change the demo application because we&apos;re happy with it.
  • #45: Now we have to write the Python code behind the user interface. We can use the quickly edit command.
  • #46: If you haven&apos;t defined your favorite text editor as default it will be open gedit with all source files, as you can see on the tabs. If you want to use another text editor you can set the EDITOR environment variable.
  • #47: At this point let&apos;s pretend we&apos;ve made some changes in our project. To test it you can use the quickly run command. All Quickly commands works in any subdirectory of your project, so you have to perform hundreds of cd .. :)
  • #48: Here we are, our demo project start again.
  • #49: As you can see some part of it already works, like the about menu. Now, as every developer you can repeat the quickly design , quickly edit e quickly run cycle until you&apos;re satisfied with your creature.
  • #50: At some point you&apos;ll have a first working version that you want to show to someone. How to do that?
  • #51: In Ubuntu, and in Debian, you will need a package .deb. It&apos;s not an super easy process and it may scare new developers. With quickly it&apos;s an easy walk, you just need to type quickly package .
  • #52: Shortly you will have your package in the directory over you project directory.
  • #53: If we take a look on that directory we&apos;ll find all the file which are the sources of our package: - The .tar.gz with sources and packaging files under the debian/ dir - The .dsc file with the meta-information about the source package. - The .changes file that later it will be used for uploading it into the PPA And we have the file named florence_0.1.all.deb which is our package! That file can be used for installing your project in someone else&apos;s PC. But this is not quite handy if you want to share your project with a lot of people.
  • #54: For large scale software distribution you need a PPA. PPAs are Personal Package Archives that users can add to their configuration making possible for them installing your software through the Ubuntu Software Center. Everything you need is to perform the quickly share command .
  • #55: In this screenshot you can see that I got and error: Quickly get connection with Launchpad ed it gave me an error because I didn&apos;t specified a PPA to use with the project. Btw it told me that I have two PPAs in my configuration: one is a small project called pywizard and the second it&apos;s called demo and it&apos;s what I normally use for these presentations.
  • #56: So let&apos;s publish the package in that PPA with the parameter --ppa You can define the default PPA for the project with the command: quickly configure ppa &lt;nomeppa&gt;
  • #57: And then he starts the operations. It&apos;s asking my gpg key&apos;s passphrase for signing the file I&apos;m uploading. I suppose you&apos;ll have a GPG key because we ask to sign the Ubuntu Code of Conduct with it when you start contributing in Ubuntu. If you need infos about GPG you can find more information on our wiki: http://wiki.ubuntu.com/GPG
  • #58: Then, after signing the files quickly proceed in the uploading into Launchpad where it will be built. (it&apos;s uploaded the source package, not the .deb)
  • #59: After few minutes the package is available in your PPA ready for your users.
  • #60: We&apos;re building a web site for Application Development, it&apos;s still work in progress, you can find it at the URL: http://developer.ubuntu.com/
  • #61: Europython 2011 Florence, Italy. June, 20-26 2011