QuicklyApp

Revision 2 as of 2010-07-15 20:43:32

Clear message

Dev Week -- Create an application for Ubuntu with Quickly -- didrocks -- Thu, Jul 15th, 2010

(12:00:23 PM) didrocks: great! thanks dholbach
(12:00:40 PM) didrocks: so, some quick words of presentation first
(12:01:03 PM) didrocks: my name is Didier Roche, I'm working in the ubuntu desktop team on updating GNOME and UNE (Ubuntu Netbook Edition)
(12:01:27 PM) didrocks: also, as a spare time project with Rick Spencer, I'm hacking on Quickly
(12:01:47 PM) didrocks: first question will be from me :) who knows about Quickly? (please answer on -chat)
(12:02:22 PM) didrocks: good, the session will be useful so :)
(12:02:29 PM) didrocks: a lot of people having no idea what is it
(12:02:34 PM) didrocks: So, few words about it
(12:02:44 PM) didrocks: Quickly is to bring back fun in development
(12:03:16 PM) didrocks: Rick, the person who created the Quickly idea, call it, among other things, an "Application Templating System"
(12:03:27 PM) didrocks: the essence of the project is to provide you boiler plate for the kind of program you want to write
(12:03:37 PM) didrocks: so the code that you would have to write for every program of a certain type gets generated for you
(12:04:02 PM) didrocks: that part is called the "boiler plate"
(12:04:11 PM) didrocks: we have different boiler plates right now:
(12:04:19 PM) didrocks: ubuntu-application, ubuntu-cli and ubuntu-pygame in lucid
(12:04:27 PM) didrocks: but Quickly is also a set of commands
(12:04:42 PM) didrocks: the commands are designed to integrate with the Ubuntu Application infrastructure
(12:04:52 PM) didrocks: thinks like bzr, launchpad, PPAs, etc..
(12:04:59 PM) didrocks: and the commands are what make all that work
(12:05:10 PM) didrocks: The moto of Quickly is "Easy and Fun"
(12:05:32 PM) didrocks: while I'll answer to the first set of questions, you can install it (not mandatory to follow the session): sudo apt-get install quickly
(12:05:43 PM) didrocks: QUESTION: Is quickly and IDE?
(12:05:56 PM) didrocks: no, it's not, it's a Command Line tools, that brings a lot of love
(12:06:14 PM) didrocks: the core of Quickly brings advanced shell completion, it will suggest you everytime what to do
(12:06:34 PM) didrocks: there is a Quickly API, (in trunk only right now), so if people want to integrate if with any IDE, go go go :)
(12:06:49 PM) didrocks: QUESTION: Is it a code generator or is it more like a To-do list?
(12:06:57 PM) didrocks: it's generate a boiler plate of code
(12:07:00 PM) didrocks: but then, don't touch it
(12:07:19 PM) didrocks: let me find a screenshot of what the ubuntu-application template generates for you
(12:07:55 PM) didrocks: http://blog.didrocks.fr/public/projects/quickly/.Capture-Myproject_m.jpg
(12:08:10 PM) didrocks: this is what you get after the first "create" command
(12:08:30 PM) didrocks: you can then modify it to a wide range of applications, there is no more action on the code itself
(12:08:45 PM) didrocks: QUESTION: Quickly will be ported to other distros???
(12:08:55 PM) didrocks: applications created with Quickly should work with any distros
(12:09:04 PM) didrocks: there is no dependency on Quickly itself (it's not a framework)
(12:09:20 PM) didrocks: Quickly itself is being packaged in fedora and gento
(12:09:24 PM) didrocks: gentoo
(12:09:33 PM) didrocks: we are waiting for templates for them so :)
(12:09:44 PM) didrocks: QUESTION: Will quickly create MeeGo/Maemo buildable programs?
(12:09:52 PM) didrocks: see above, you just need a template for that :)
(12:10:05 PM) didrocks: QUESTION: How does Quickly differ from Acire/python- nippets?
(12:10:17 PM) didrocks: well, acire is writtent with Quickly :)
(12:10:20 PM) didrocks: written*
(12:10:31 PM) didrocks: also, some of you may use Lernid
(12:10:35 PM) didrocks: this is another Quickly app
(12:11:14 PM) didrocks: so, you can see that Quickly can enables you to create a lot of different apps for different purpose
(12:11:16 PM) didrocks: QUESTION: is quickly a ubuntu project or third party project?
(12:11:48 PM) didrocks: as of today, the Quickly devs (mostly me, Rick making awesome work on Quickly-Widgets I'll talk about later), uses ubuntu
(12:11:54 PM) didrocks: so, we develop templates for ubuntu first
(12:12:01 PM) didrocks: but, the project is really template oriented
(12:12:09 PM) didrocks: that means, you have no requirement to use python, or ubuntu
(12:12:33 PM) didrocks: I'll go on and answer remaining questions then :)
(12:13:02 PM) didrocks: so, as some of you have seen, Quickly brings a lot of tools, so downloading can take a while
(12:13:10 PM) didrocks: Note that the current version is 0.4.3 on lucid
(12:13:27 PM) didrocks: 0.4 brings a lot of news over 0.2, you can see that in previous ubuntu devweek sessions
(12:13:47 PM) didrocks: the rest of the class will be in 4 parts:
(12:13:51 PM) didrocks: Creating your app
(12:13:55 PM) didrocks: Editing the UI
(12:13:58 PM) didrocks: Writing Code
(12:14:03 PM) didrocks: Packaging and PPAs
(12:14:14 PM) didrocks: (so, to answer a question, yes, Quickly creates packages)
(12:14:48 PM) didrocks: so, creating an app
(12:15:00 PM) didrocks: this is a single command, $ quickly create ubuntu-application <project_name>
(12:15:19 PM) didrocks: (for ubuntu-cli, replace ubuntu-application by ubuntu-cli, for ubuntu-pygame, … you understand :))
(12:15:44 PM) didrocks: we support hyphen, spaces and a lot of fun in project_name
(12:15:57 PM) didrocks: you can see that Quickly run the application for you
(12:16:12 PM) didrocks: so, you already have a complete application ready !
(12:16:29 PM) didrocks: not really fancy, but you have preferences integrations, menus, about box, easter eggs :)
(12:16:34 PM) didrocks: all what an application need!
(12:17:00 PM) didrocks: (of course, wait for Quickly to be installed to run the command)
(12:17:13 PM) didrocks: so, Quickly created a folder for you
(12:17:19 PM) didrocks: you can cd into it
(12:17:36 PM) didrocks: there, if you use tabulation, you should see that you have access to a lot of commands now
(12:17:44 PM) didrocks: I won't enter and details all of them
(12:17:50 PM) didrocks: the most important is… testing!
(12:17:57 PM) didrocks: quickly run will launch your application
(12:18:22 PM) didrocks: then, edit the code:
(12:18:23 PM) didrocks: quickly edit
(12:18:40 PM) didrocks: this will launch gedit and open all your development files there
(12:18:56 PM) didrocks: there, you can remove what you want (like the preferences code), and tweak from the default
(12:19:04 PM) didrocks: so, Quickly is opinionated choices
(12:19:10 PM) didrocks: those choices are made by the template
(12:19:18 PM) didrocks: for instance, in the ubuntu-application template, you have:
(12:19:30 PM) didrocks: - python as a language to develop in
(12:19:35 PM) didrocks: - glade for editing the GUI
(12:19:47 PM) didrocks: - gedit as default editor (you can override this by exporting the EDITOR variable)
(12:19:56 PM) didrocks: - pygtk for the toolkit
(12:20:05 PM) didrocks: - desktopcouch for storing persistent data
(12:20:12 PM) didrocks: - launchpad integration
(12:20:28 PM) didrocks: all is chosen for helping you starting with your app
(12:20:49 PM) didrocks: then, if you are confident enough and know what you need, you can remove each block you don't want and replace by yours
(12:21:00 PM) didrocks: or create your own template even!
(12:21:11 PM) didrocks: alucardni | didrocks: you missed bzr for version control ;-)
(12:21:14 PM) didrocks: of course bzr :)
(12:21:17 PM) didrocks: thanks!
(12:21:56 PM) didrocks: the idea is really to drive development and help opportunistic developer to know "where to start"
(12:22:02 PM) didrocks: rather than beeing lost in choices
(12:22:23 PM) didrocks: for helping starting development too, we have a tutorial:
(12:22:25 PM) didrocks: quickly tutorial
(12:22:42 PM) didrocks: that will fire up yelp to have a step by step app to develop
(12:22:54 PM) didrocks: and I heard that an "ubuntu developer manual" is on the way
(12:23:11 PM) didrocks: let's move on, I see some questions, but nothing related to that :)
(12:23:31 PM) didrocks: so, editing the UI.
(12:23:46 PM) didrocks: as told previously, we use glade for that in the ubuntu-application template
(12:23:52 PM) didrocks: to fire it up, just use quickly design
(12:24:02 PM) didrocks: glade is really awesome for editing a GUI graphically
(12:24:23 PM) didrocks: and really integrates in a easy way with python too
(12:24:35 PM) didrocks: QUESTION: what is glade?  a short intro about it, please?
(12:24:46 PM) didrocks: glade is a tool for building gtk-based UI
(12:24:49 PM) didrocks: let me find a screenshot
(12:25:05 PM) didrocks: http://glade.gnome.org/images/glade-main-page.png
(12:25:24 PM) didrocks: you choose your components and draw them on the application area
(12:25:32 PM) didrocks: the quickly tutorial explains the basic of this
(12:25:56 PM) didrocks: in fact, Glade is a UI editing tool, that creates the XML you need to describe your windows and widgets
(12:26:06 PM) didrocks: don't worry because the quickly template totally handles keeping the code and the XML hooked up
(12:26:34 PM) didrocks: if others templates, like kubuntu comes, we assume it won't use glade, obviously :)
(12:26:42 PM) didrocks: hence the "design" command to launch it
(12:27:09 PM) didrocks: so here are some tips for using Glade if you are new to Glade
(12:27:15 PM) didrocks: first, adding widgets works like a fill tool
(12:27:22 PM) didrocks: you click the widget you want in the toolbox, and then click where you want it to be on the window
(12:27:29 PM) didrocks: the widgets will then fill the space alloted to it
(12:27:37 PM) didrocks: to layout the form, you use HBoxes and VBoxes
(12:27:48 PM) didrocks: an HBox handles Horizontal layout, and a VBox handles vertical
(12:28:00 PM) didrocks: so you will find yourself putting lots of boxes within boxes
(12:28:10 PM) didrocks: when you add a widget to a window, you can select it in the "inspector" tree if it is hard to select in the window itself'
(12:28:17 PM) didrocks: boxes can be hard to select in the window, for example
(12:28:30 PM) didrocks: if a widget is in a box, use the position property in the "Property editor" window in the "packing" tab to change the order
(12:28:42 PM) didrocks: you can also set the pack type to start or end to change the order
(12:28:51 PM) didrocks: Fill and Expand control sizing
(12:28:58 PM) didrocks: while Border and Padding control spacing
(12:29:05 PM) didrocks: whenever possible, you should use "Stock" widgets
(12:29:11 PM) didrocks: they get translated, the right icons, etc... automatically
(12:29:25 PM) didrocks: finally, if you want to add a dialog to your project:
(12:29:31 PM) didrocks: 1. close glade
(12:29:41 PM) didrocks: 2. run: quickly add dialog <dialog_name>
(12:29:45 PM) didrocks: 3. quickly glade
(12:29:51 PM) didrocks: ooops
(12:29:54 PM) didrocks: quickly design :)
(12:30:06 PM) didrocks: quickly glade was in previous version of Quickly
(12:30:29 PM) didrocks: this way, Quickly helps you to ship all files to get access to the new window
(12:30:57 PM) didrocks: of course, your code can have bugs
(12:31:16 PM) didrocks: what's best for debugging than a debugging tool where you can see variable values and such, step by step?
(12:31:33 PM) didrocks: Quickly uses winpdb for that. Just run "quickly debug" and you can add breakpoints and such
(12:32:21 PM) didrocks: ok, let's say you are happy with your project
(12:32:31 PM) didrocks: now, you want to share with someone, or even release?
(12:32:39 PM) didrocks: let's say you want to release your first version
(12:32:43 PM) didrocks: it's pretty easy, just:
(12:32:46 PM) didrocks: $ quickly release
(12:33:06 PM) didrocks: this will version your release to YY.MM (the ubuntu way of marking an ubuntu version)
(12:33:12 PM) dark is now known as Guest88529
(12:33:23 PM) didrocks: you will be asked to bind with a Launchpad project you created
(12:33:40 PM) didrocks: it will licence all your files (default is GPLV3 if you didn't run quickly licence by hand before)
(12:34:06 PM) didrocks: it will tag your release, change evertything for your, drop the COPYING files to get a well licensed project
(12:34:14 PM) didrocks: push your code to launchpad
(12:34:36 PM) didrocks: also, the about box will contain the version of the current release, the credit, the copyright, the url to the project
(12:34:57 PM) didrocks: (http://blog.didrocks.fr/public/projects/quickly/Capture-A_propos_de_Slip_Cover.png
(12:34:59 PM) didrocks: for instance
(12:35:10 PM) didrocks: and all that for free! No need to maintain it manually
(12:35:25 PM) didrocks: in addition to that, it will create an ubuntu package
(12:35:29 PM) didrocks: detecting all dependencies for you
(12:35:56 PM) didrocks: will collect all your "quicky save" messages (quickly save is to take snapshot of your code. For those you know, it triggers a bzr commit)
(12:36:15 PM) didrocks: it will upload your package to launchpad, in a ppa for people trying our your application
(12:36:44 PM) didrocks: it will also upload your upstream tarball, sign it, push it to launchpad, and make an annoucement with your changes annoucement
(12:36:59 PM) didrocks: dotblank | QUESTION: Does quickly walk you through steps with gpg?
(12:37:15 PM) didrocks: if you don't have a gpg key already, Quickly will help you to create one
(12:37:18 PM) didrocks: (same for ssh)
(12:37:35 PM) didrocks: it won't upload it to launchpad yet, we are working with Launchpad guys to get that integrated nicely
(12:37:47 PM) didrocks: in any case, it will tell you before uploading if something got wrong :)
(12:37:58 PM) didrocks: QUESTION: is it possible to change the way of versioning e.g. to 0.0.1 as fist build?
(12:38:04 PM) didrocks: just run quickly release 0.0.1
(12:38:21 PM) didrocks: then, you have to specify manually at each release the version number
(12:38:45 PM) didrocks: but YY.MM is really the short approach and avoid a lot of collision :)
(12:39:03 PM) didrocks: so, in a nutshell, in two commands:
(12:39:11 PM) didrocks: quickly create ubuntu-application foo
(12:39:13 PM) didrocks: quickly release
(12:39:33 PM) didrocks: I have a licenced project, pushed to launchpad, with tarballs, announces and ubuntu package to share to the world!
(12:39:56 PM) didrocks: sometimes, you maybe want to get some testing
(12:40:08 PM) didrocks: and not release really to get people testing this
(12:40:16 PM) didrocks: for local testing, you can use:
(12:40:18 PM) didrocks: quickly package
(12:40:29 PM) didrocks: this will create a package in your directory that you can install
(12:40:37 PM) didrocks: for sharing in a ppa, use instead: quickly share
(12:40:48 PM) didrocks: this won't change anything, won't licence your project, won't upload tarball
(12:40:55 PM) didrocks: but at least, you can get some testing :)
(12:41:11 PM) didrocks: QUESTION: does quickly package (version here) also work in order to force a version?
(12:41:34 PM) didrocks: of course, but think that you can't upload to your ppa a version with a lower version than previous upload
(12:42:00 PM) didrocks: you will see that there are a lot of other commands to manipulate your project
(12:42:29 PM) didrocks: like quickly configure to configure the ppa you want to upload, the bzr branch where you want to push/pull, additional dependencies that you want to add…
(12:43:02 PM) didrocks: if you use shell completion on license, you will see that we support a wide range of licence too. Adding a new one (or a custom is really easy)
(12:43:21 PM) didrocks: last part I want to discuss is Quickly widgets before taking the bunch of pending questions :)
(12:43:35 PM) didrocks: so, quickly widgets are widgets that help you to make your life easy
(12:43:43 PM) didrocks: contrary to Quickly, this is for python only
(12:44:11 PM) didrocks: in one line of code, you can show a dialog asking for a question and get the answer
(12:44:25 PM) didrocks: this is generally taking 6-8 lines of codes
(12:44:34 PM) didrocks: in 5 lines, you can get a CouchGrid
(12:44:57 PM) didrocks: you can imagine that as a tabular, where you can store persistent information, synchronised between your use (using couchdb)
(12:45:03 PM) didrocks: hosts*
(12:45:27 PM) didrocks: it will detect for you the type of your column, you can add a filter in two lines, and such
(12:45:44 PM) didrocks: this is really really great stuff and avoiding copying 50-60 lines from random websites
(12:46:00 PM) didrocks: quickly-widgets come with a lot of widget
(12:46:11 PM) didrocks: QUESTION: Where can we find information about Quiqly-widgets (couch-grid etc)?
(12:46:30 PM) didrocks: as Rick is the main developer, you can find a lot of fun videos over the web
(12:46:49 PM) didrocks: http://theravingrick.blogspot.com/ is your central info place
(12:47:08 PM) didrocks: ok, taking questions now :)
(12:47:15 PM) didrocks: let me a second to take them one by one
(12:47:43 PM) didrocks: QUESTION: Say I don't need the preferences dialog in my project can I delete it from the project?
(12:47:58 PM) didrocks: exactly, as told previously, you can remove any part of the code you don't want really easily
(12:48:08 PM) didrocks: this is mainly for the preferences dialog removing a file and call to it
(12:48:22 PM) didrocks: QUESTION: Is template creation difficult?
(12:48:37 PM) didrocks: not at all, I've even written a tutorial on that
(12:48:39 PM) didrocks: one sec
(12:49:15 PM) didrocks: http://blog.didrocks.fr/index.php/post/Build-your-application-quickly-with-Quickly%3A-Inside-Quickly-part-6
(12:49:45 PM) didrocks: in general this set of 9 blog posts give you everything you need to know about Quickly http://blog.didrocks.fr/index.php/post/Build-your-application-quickly-with-Quickly%3A-part1
(12:50:03 PM) didrocks: but this was about Quickly 0.2, we have 0.4.X now
(12:50:09 PM) didrocks: so I wrote some updates: http://blog.didrocks.fr/index.php/post/Quickly-0.4-available-in-lucid%21
(12:50:20 PM) didrocks: if you want to build a template upon an existing template
(12:50:33 PM) didrocks: like ubuntu-cli sharing a lot in common with ubuntu-application
(12:50:38 PM) didrocks: your can import commands between template
(12:50:42 PM) didrocks: templates*
(12:50:50 PM) didrocks: for instance, ubuntu-cli is really 0 line of code!
(12:51:02 PM) didrocks: I just import every commands I need from ubuntu-application template
(12:51:20 PM) didrocks: (apart from design which makes no sense for a command line application), and add dialog
(12:51:32 PM) didrocks: so, it's really easy to create a template :)
(12:51:55 PM) didrocks: you can even wrote you template in perl with some C boiler plate if you want some fun
(12:52:01 PM) didrocks: Quickly is language agnostic
(12:52:11 PM) didrocks: that comes to the question:
(12:52:12 PM) didrocks: QUESTION: what is the difference between gambas and quickly?
(12:52:25 PM) didrocks: gambas is (AFAIK), really binded with python
(12:52:37 PM) didrocks: Quickly is written in python but template can be whatever you want
(12:52:46 PM) didrocks: also gambas doesn't handle packaging and such
(12:53:00 PM) didrocks: Quickly is really "helping your developping your project from start to the end"
(12:53:22 PM) didrocks: QUESTION: Can quickly use existing source code?
(12:53:37 PM) didrocks: sure, bughugger, another quickly project wasn't written for Quickly first
(12:53:56 PM) didrocks: but migrate it to Quickly took half an hour approximately
(12:54:10 PM) didrocks: it's just moving files in the right folder and add some glue
(12:54:17 PM) didrocks: you won't get automatically launchpad integration for instance
(12:54:39 PM) didrocks: (when you release your project with Quickly, project get integration like "Help on/Report a bug" in the help menu)
(12:54:50 PM) didrocks: but you will get all the rest for free, which is already a lot :)
(12:54:59 PM) didrocks: QUESTION: How hard is it to remove the couchdb support from the template?
(12:55:01 PM) didrocks: hmm
(12:55:15 PM) didrocks: I would say it's basically removing the preferences dialog
(12:55:21 PM) didrocks: so, not hard at all :)
(12:55:31 PM) didrocks: QUESTION: we CAN create templates for templates then?
(12:55:55 PM) didrocks: sure, I don't see the point as quickly quickly <origin_template> <dest_template> already help you to create subtemplates
(12:56:11 PM) didrocks: it's copying to ~/quickly-templates all what you need
(12:56:35 PM) didrocks: I think that's it for question. If I forget some, yell
(12:56:41 PM) didrocks: in the remaining times, some links:
(12:57:01 PM) didrocks: - so, the blog post I posted before http://blog.didrocks.fr/index.php/post/Build-your-application-quickly-with-Quickly%3A-part1 and http://blog.didrocks.fr/index.php/post/Quickly-0.4-available-in-lucid%21)
(12:57:15 PM) didrocks: - https://launchpad.net/quickly of course
(12:57:27 PM) didrocks: - #quickly on freenode for support and development on Quickly
(12:57:43 PM) didrocks: also, some reviews on 0.2 version:
(12:57:46 PM) didrocks: - http://lwn.net/Articles/351522/
(12:57:52 PM) didrocks: - http://arstechnica.com/open-source/news/2009/08/quickly-new-rails-like-rapid-development-tools-for-ubuntu.ars
(12:57:58 PM) didrocks: - http://www.maximumpc.com/article/news/canonical_releases_quickly_framework_speed_linux_app_development
(12:58:14 PM) didrocks: we got some good contributions and I want to thank everyone helping to make Quickly better
(12:58:32 PM) didrocks: (approximately 10 different people have contributed to the code so far, it's already a lot!)
(12:58:49 PM) didrocks: hope that you can join, we don't bite and share the fun developping :)
(12:59:24 PM) didrocks: I guess now, it's vish's who will explain you how to help Ubuntu in a night!