IntroductionQuickly
Dev Week -- Introduction to Quickly -- mterry -- Wed, Aug 29th, 2012
1 [15:01] <mterry> Hello!
2 [15:01] <mterry> My name is Michael Terry, and I'm a maintainer of Quickly
3 [15:02] <mterry> I usually give introduction to Quickly talks during App Developer Week, but I'm also doing one this week, let me know in ubuntu-classroom-chat if you'd like things to be more toward the technical details of Quickly or not
4 [15:02] <mterry> So I'll start with a quick overview of Quickly and where we are now, what our plans are for 12.10 and 13.04
5 [15:02] <mterry> So Quickly is at core a way to get started developing very quickly
6 [15:03] <mterry> And not have to worry too much about packaging or how to get your app into Ubuntu
7 [15:03] <mterry> We make some opinionated choices (like Python, GTK+) that Ubuntu recommends, so that we can offer a better experience
8 [15:03] <mterry> But there are plenty of other "templates" that Quickly offers to do other things (like HTML5 or flash)
9 [15:04] <mterry> So why use Quickly or get involved with Quickly?
10 [15:04] <mterry> Well, I guess the reason to use it is for the above -- if you don't care about packaging and just want to get started :)
11 [15:04] <mterry> If you're interested in contributing to Quickly, ask questions in the chat room and I can answer and explain
12 [15:05] <mterry> Always things to do, and we just started planning a bunch of work for 13.04
13 [15:05] <mterry> So, in 12.04, there are three templates: the normal Python+GTK one, a command line interface one, and a flash game one
14 [15:05] <mterry> There are also HTML5, Qt, Qt Quick, and a Unity Lens ones maintained by the community
15 [15:06] <ClassBot> eklok asked: can you work with Quickly via terminal and GUI?
16 [15:06] <mterry> Right now, it's designed to be used via the terminal only
17 [15:06] <mterry> But Michael Hall worked on a GTK frontend for it
18 [15:06] <mterry> quickly-gtk I believe
19 [15:06] <mterry> https://launchpad.net/quickly-gtk
20 [15:07] <ClassBot> skizobass asked: Can you use Eclipse, PyDev for write a Python App with Quickly and then publish in the Software Center?
21 [15:07] <mterry> Yes and no
22 [15:07] <mterry> So we don't have integration with Eclipse or PyDev as such
23 [15:07] <mterry> But you could write such an app and stick it inside of a Quickly project with a small amount of work, I believe
24 [15:08] <mterry> What Quickly gives you is a skeleton project
25 [15:08] <mterry> And if you threw away some of the code it gives you and stick yours in, you'd get most of the benefits of Quickly that way
26 [15:08] <ClassBot> ben72 asked: in 12.04 quickly is the package to get right?
27 [15:09] <mterry> Yes
28 [15:09] <ClassBot> FlowRiser asked: What is the current workflow of Quickly ?
29 [15:09] <mterry> So let's say you want to start a project
30 [15:09] <mterry> You open a Terminal
31 [15:09] <mterry> You run "quickly create ubuntu-application test-project"
32 [15:10] <mterry> The ubuntu-application part there is choosing which template to use.
33 [15:10] <mterry> In our case, we want the default-ubuntu-recommendation, which is Python+GTK
34 [15:10] <mterry> Then, it will create a skeleton project and launch it
35 [15:10] <mterry> Close it out, "cd test-project", and you're sitting in your new project
36 [15:11] <mterry> You can now edit your code with "quickly edit" or package it with "quickly package". I'll get to these commands in a bit
37 [15:11] <ClassBot> skizobass asked: Can you write and organize the code (classes, packages, etc) like Eclipse in Quickly?
38 [15:11] <mterry> I'm not sure how Eclipse is organized. Hold on
39 [15:11] <mterry> The default skeleton gives you one directory/Python-module for your code
40 [15:12] <mterry> And also one Python module that it owns with boilerplate code
41 [15:12] <mterry> You put all your code in your module and Quickly's wrapper will call into it
42 [15:12] <mterry> So, as above, if you wanted to import an existing project into Quickly, you would replace that one module with your code
43 [15:13] <mterry> But as far as classes go, yes, Python and Quickly both encourage one-class-per-file
44 [15:13] <mterry> But you can do anything you want. It's not as strictly enforced as, say, Java
45 [15:13] <ClassBot> nja asked: Will you be covering some Python in this session?
46 [15:13] <mterry> I hadn't planned to, no. I think there are better resources than me for that
47 === irfan_ is now known as van
48 [15:14] <mterry> OK, there are no more questions, so I'll start diving into using Quickly more
49 [15:14] <mterry> Before I forget, Quickly also has a built-in tutorial
50 [15:14] <mterry> If you don't want to listen to me blather
51 [15:14] <mterry> Run "quickly tutorial" in your project directory
52 [15:15] <mterry> But let's continue with my blathering
53 [15:15] <ClassBot> FlowRiser asked: I see that most of the languages you use require no compiling of the code; is there any chance we'll see a Cpp and GTK template?
54 [15:15] <mterry> That's certainly a possibility
55 [15:15] <mterry> But not something we've done yet
56 [15:15] <mterry> Quickly's template system lets someone write such a template easily
57 [15:15] <mterry> It just hasn't been done
58 [15:15] <mterry> We had some progress on a Vala template, which is compiled
59 [15:16] <mterry> But we've found in general, new users prefer non-compiled languages like HTML or Python
60 [15:16] <ClassBot> peaceisin asked: For using quickly, one need to know how to program in python?
61 [15:16] <mterry> Yes, at least for the default recommended template
62 [15:16] <mterry> Actually, for all the shipped templates.
63 [15:16] <mterry> But again, that's not necessarily true in the future
64 [15:17] <mterry> But is now
65 [15:17] <ClassBot> coalitians asked: Quickly is in python?
66 [15:17] <mterry> Yes. Both the skeleton project and Quickly itself
67 [15:17] <ClassBot> BebopSteve asked: On "quickly edit," is there anything special about that? Or can you just use a text editor of your choice
68 [15:17] <mterry> You can use the editor of your choice. You can set either EDITOR or QUICKLY_EDITOR environment variables to change it
69 [15:17] <ClassBot> NickE asked: Does Quickly support Python 3 development?
70 [15:17] <mterry> Not yet
71 [15:18] <mterry> We want to support it, but it's looking like that will happen for 13.04
72 [15:18] <ClassBot> chilicuil asked: does quickly support all data bases?, or do I need to use libraries?
73 [15:18] <mterry> For that, you don't need special Quickly support
74 [15:18] <mterry> Just import the appropriate Python modules and go crazy
75 [15:19] <mterry> Quickly doesn't limit your choices of how you write your app. It's just a wrapper around it, to provide some integration support into Ubuntu
76 [15:19] <mterry> OK
77 [15:19] <mterry> So another useful command to change your app, is "quickly design"
78 [15:19] <mterry> Which will bring up Glade, a GUI editor
79 [15:19] <mterry> How to use Glade is a whole 'nother talk, but it tries to be a point-and-click interface builder
80 === thotp_ is now known as thotp
81 [15:20] <mterry> It helps to understand GTK a bit when using it
82 [15:20] <mterry> But the basic idea is that you can make new widgets in the pane on the left, place them in the middle, and adjust properties of widgets in the bottom right
83 [15:20] <ClassBot> chilicuil asked: Quickly is intent to produce desktop apps or Web ones?
84 [15:20] <mterry> Right now, desktop apps
85 [15:21] <mterry> We do have an HTML5 template in the community bundle that kind of blurs that a bit
86 [15:21] <mterry> But it
87 [15:21] <mterry> But it's still designed for the desktop (runs Python underneath)
88 [15:21] <ClassBot> green7 asked: Do we need to know GTK to use Quickly?
89 [15:21] <mterry> Yes, for the default template
90 [15:22] <mterry> Like for Glade
91 === Unknown12290 is now known as waa3
92 [15:22] <ClassBot> nja asked: Where would you recommend we learn Python?
93 [15:22] <mterry> Dive Into Python is very good
94 [15:22] <mterry> http://www.diveintopython.net/
95 [15:23] <mterry> OK
96 [15:23] <mterry> So let's say you're comfortable with Glade and have made some changes (and we can come back to it)
97 [15:23] <mterry> If you want to see what your project looks like now, run "quickly run"
98 [15:24] <mterry> Which will load all your edited files and show you the current project state
99 [15:24] <mterry> One neat trick Quickly does is that when you add a widget, you frequently want to respond to user events on it
100 [15:24] <mterry> Like clicks or whatever
101 [15:24] <mterry> So Quickly makes it easy
102 [15:25] <mterry> If you add a widget named button1
103 [15:25] <mterry> You can just write a method in your window class called on_button1_clicked(self, widget, data=None)
104 [15:25] <mterry> And do what you need there
105 [15:25] <mterry> Quickly will notice that and hook up the widget to your method
106 [15:25] <mterry> You need to use the on_WIDGETNAME_SIGNALNAME format
107 [15:26] <mterry> And the signature will change depending on the signal type
108 [15:26] <mterry> See the GTK documentation for details on a given signal
109 [15:26] <ClassBot> green7 asked: Is there a difference between packaging and quickly run?
110 [15:26] <mterry> Yes
111 [15:26] <mterry> So quickly run is just a quick spot-check
112 [15:26] <mterry> It runs all the files from where they are in your project directory
113 [15:27] <mterry> But quickly package actually creates a Debian package file
114 [15:27] <mterry> Which you can install into your system if you're root
115 [15:27] <mterry> So let's say we ran 'quickly package' on our test-project program
116 [15:27] <mterry> It would give us a file like ../test-project_0.1_all.deb
117 [15:27] <mterry> We could then run "sudo dpkg -i ../test-project_0.1_all.deb" and install our new program
118 [15:28] <mterry> You'd see it show up in the dash and everything
119 === yofel_ is now known as yofel
120 [15:28] <mterry> Before you seriously start packaging your app though, it's best to fill out some of the information in the 'setup.py' file
121 [15:28] <mterry> Like homepage and author
122 [15:28] <mterry> And to run "quickly license" to specify what the license of your program is
123 [15:29] <mterry> Because that's all important information before you start distributing it to other people
124 [15:29] <mterry> So let me talk about packaging a bit
125 [15:29] <mterry> Let's say we think this default app is amazing
126 [15:29] <mterry> And we want to distribute it to some friends
127 [15:30] <mterry> Well, first, you should test it locally with quickly package
128 [15:30] <mterry> Make sure that it installs fine
129 [15:30] <mterry> But if you want to share with a wider community, you might want to set up a PPA
130 [15:30] <mterry> Launchpad lets you have your own PPA where you can put packages and people can download them as you update the PPA
131 [15:31] <mterry> Let's say you've done that already (I can go into details if desired)
132 [15:31] <mterry> You'll also need GPG keys set up
133 [15:31] <mterry> And SSH keys
134 [15:31] <mterry> Launchpad has documentation on this
135 [15:31] <mterry> https://help.launchpad.net/YourAccount/ImportingYourPGPKey
136 [15:32] <mterry> https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair
137 [15:32] <mterry> But OK, let's say we've got our PPA set up
138 [15:32] <mterry> Then running "quickly share --ppa mterry/testing" will package up our project and upload it to my (mterry's) 'testing' PPA
139 [15:33] <mterry> quickly share will use a testing version like 0.1public1
140 [15:33] <mterry> Not a nice version
141 [15:33] <mterry> But it's because quickly share is best for uploading in-progress versions for wider testing
142 [15:33] <mterry> When you are ready to release for real, use "quickly release"
143 [15:33] <mterry> This will put it in a PPA but update the version to something nice like 12.08
144 [15:34] <mterry> Let me pause for questions
145 [15:34] <ClassBot> nja asked: What Python editor would you recommend?
146 [15:34] <mterry> I'm a luddite and like just simple gedit
147 [15:34] <mterry> So I may not be the best person to ask
148 === marius is now known as Guest7295
149 [15:34] <mterry> I'm not even sure what other people would recommend
150 [15:34] <mterry> Chat room can help out I bet
151 [15:35] <mterry> OK, so I quickly covered share and release
152 [15:35] <mterry> Which are the two ways Quickly offers to share your project around via a PPA
153 [15:35] <mterry> But let's say you've finished really polishing your app and it's great now
154 [15:36] <mterry> You want to get it into the Ubuntu Software Center
155 [15:36] <mterry> Then you can use "quickly submitubuntu"
156 [15:36] <mterry> Which will also upload into a PPA
157 [15:36] <mterry> But will make various packaging changes that are required for Ubuntu Extras packages
158 [15:37] <mterry> If you want to test such changes locally, you can also run "quickly package --extras" to get a local Debian package file that also has those changes
159 [15:37] <mterry> (basically, it puts your application inside /opt instead of sprinkled around the filesystem like in /usr/bin and /usr/share)
160 [15:37] <ClassBot> green7 asked: Is Quickly recommended over usual PyGTK programming?
161 [15:37] <mterry> For an app that you want to share with other Ubuntu users, yes
162 [15:38] <mterry> But Quickly is really just a shell around usual PyGTK programming
163 [15:38] <mterry> It helps with packaging and integration, and a little bit of magic like I mentioned between Glade and your code
164 [15:38] <ClassBot> ironhalik asked: What's the backward compatibility situation like with Quickly and users using older Ubuntu releases? Are there any issues?
165 [15:39] <mterry> Should be small
166 [15:39] <mterry> Quickly injects a bit of code into your app (in, e.g., the test_project_lib/ folder)
167 [15:39] <mterry> So that will stay constant as you backport your app to older releases
168 [15:39] <mterry> The only thing that might cause problems is dependencies
169 [15:40] <mterry> So if you depend on a newer version of a package, or a package that didn't exist in older releases, obviously that's going to be a problem
170 [15:40] <mterry> But I believe Quickly itself should work well into the past. 12.04's version uses gobject-introspection for it's GTK/Python bindings
171 [15:41] <mterry> I don't know how far that goes back. Like, I bet it doesn't work well in 10.04
172 [15:41] <mterry> But it should for 11.10 at least
173 [15:41] <ClassBot> gigix asked: Does Quickly binds your app strictlty to Ubuntu
174 [15:41] <mterry> No. Not your app itself.
175 [15:41] <mterry> It offers different ways of making your life in Ubuntu easier
176 [15:41] <mterry> Like making a Debian package file and uploading to PPAs
177 [15:42] <mterry> But your code itself should not require Ubuntu features
178 [15:42] <ClassBot> FlowRiser asked: What are some good GTK resources ?
179 [15:42] <mterry> http://developer.gnome.org/ has some
180 [15:42] <mterry> http://developer.gnome.org/gtk3/stable/ is an API overview
181 [15:43] <mterry> And http://developer.ubuntu.com/resources/ has some
182 [15:43] <ClassBot> marcosb asked: Ruby template is on schedule?
183 [15:43] <mterry> Nope
184 [15:43] <mterry> :-/
185 [15:43] <mterry> I don't know who's working on one
186 [15:43] <mterry> But it's not on my radar
187 [15:44] <ClassBot> ben72 asked: is there a way to make quickly work with python 3 manually even though it's not supported? Yesterday we learned python 3 is the way to go for new applications. :)
188 [15:44] <mterry> Good question
189 [15:44] <mterry> Quickly is unfortunately lagging here
190 [15:44] <mterry> I agree Python3 is the way to go
191 [15:44] <mterry> But we couldn't get all our features working with it in time. Notably, the packaging of your app
192 [15:45] <mterry> So you can certainly start a new Quickly app
193 [15:45] <mterry> And then port it to Python
194 [15:45] <mterry> 3
195 [15:45] <mterry> (Should be real simple)
196 [15:45] <mterry> But
197 [15:45] <mterry> You'll lose the ability to run "quickly package", share, release, or submitubuntu
198 [15:45] <mterry> :(
199 [15:46] <mterry> But you can take the Python2 packaging that Quickly would give you
200 [15:46] <mterry> (if you run quickly package before porting to Python 3)
201 [15:46] <mterry> Then modify the debian/ directory to work with Python 3 yourself
202 [15:46] <mterry> Then don't run "quickly package" youself...
203 [15:47] <mterry> You'll at least have the benefit of not having to start from scratch
204 [15:47] <mterry> Quickly can give you all the Python2 packaging and code and you can update to work with Python3
205 [15:47] <mterry> You just can't use Quickly's packaging support going forward
206 [15:47] <mterry> :(
207 [15:47] <mterry> OK
208 [15:48] <mterry> Quickly has a few other neat features
209 [15:48] <mterry> Like "quickly save"
210 [15:48] <mterry> Which will save all your changes into a version control system called bzr (bazaar)
211 [15:48] <mterry> Kind of like checkpointing your code after a set of related changes
212 [15:48] <mterry> You can use bzr directly (like "bzr diff") to see your current changes and such
213 [15:49] <mterry> bzr is great, and it integrates with Launchpad. Like you can do "bzr push lp:~mterry/+junk/test-project"
214 [15:49] <mterry> To push all your code into Launchpad (under my account -- obviously change for your account)
215 [15:50] <mterry> +junk is just a trick Launchpad has to let you upload without having to choose a project
216 [15:50] <mterry> If you've registered your project in Launchpad, you can use it's name instead
217 [15:50] <mterry> But anyway, that's all Launchpad stuff, not Quickly stuff!
218 [15:50] <mterry> Just wanted to mention quickly save
219 [15:50] <ClassBot> There are 10 minutes remaining in the current session.
220 [15:50] <mterry> Another neat trick is "quickly add dialog new-dialog"
221 [15:51] <mterry> Let's say you want to add a save dialog or error dialog or something like that. A common enough operation that Quickly gives a little help
222 [15:51] <mterry> It will create the code for you and add it to Glade (but you have to close Glade and relaunch with "quickly design")
223 [15:51] <mterry> And run "quickly edit" again to open up the new files
224 [15:51] <mterry> You'll see your new dialog in code and in Glade
225 [15:52] <mterry> Then just import it in your main window with "from project_name.DialogName import DialogName"
226 [15:52] <mterry> And instantiate it with "d = DialogName()"
227 [15:52] <mterry> You can use "quickly help" to see all the commands available and help for individual commands too
228 [15:52] <mterry> Like "quickly help save"
229 [15:52] <ClassBot> skizobass asked: When you create a new dialog with Quickly. How you separated the script from the main script?
230 [15:53] <mterry> Quickly will create a new python file in (e.g.) test_project/
231 [15:53] <mterry> So if you ran "quickly add dialog hello"
232 [15:53] <mterry> It will create a test_project/HelloDialog.py file
233 [15:53] <mterry> (I think I got that name right)
234 [15:53] <ClassBot> nja asked: Is there anything like .toString() in Python?
235 [15:53] <mterry> Yes
236 [15:54] <mterry> str()
237 [15:54] <mterry> so let's say I have an object
238 [15:54] <mterry> o
239 [15:54] <mterry> I do str(o)
240 [15:54] <mterry> to get a string
241 [15:54] <ClassBot> skizobass asked: Quickly separate the code automatically for each dialog ?
242 [15:54] <mterry> Yes, if you use the "quickly add dialog" command
243 [15:54] <mterry> You don't have to do that yourself
244 [15:54] <mterry> You can organize your code all you want when you write it
245 [15:54] <mterry> But when Quickly makes them, that's what it does
246 [15:55] <mterry> OK, I only have a few minutes left
247 [15:55] <mterry> I know this was a little scattered, but hopefully you have a better idea what Quickly is
248 [15:55] <mterry> And why you might want to use it
249 [15:55] <ClassBot> There are 5 minutes remaining in the current session.
250 [15:56] <mterry> Again, I recommend "quickly help" and "quickly tutorial" for exploring on your own
251 [15:56] <mterry> And http://developer.ubuntu.com/resources/app-developer-cookbook/all-recipes/ has some neat things you can do
252 [15:56] <mterry> As does all of http://developer.ubuntu.com/resources
253 === norbi is now known as Guest81889
254 [15:57] <mterry> Seems like no more questions. Thanks everyone!
255 [15:58] <ClassBot> nja asked: In python, is it possible to have the same constructor with different arguments?
256 [15:58] <mterry> Yes and no
257 [15:58] <mterry> You'd use the same method
258 [15:59] <mterry> But you can have optional arguments like __init__(option1=None, option2=None)
MeetingLogs/devweek1208/IntroductionQuickly (last edited 2012-08-30 10:19:17 by dholbach)