QuicklyApp

Differences between revisions 1 and 2
Revision 1 as of 2010-07-15 20:40:24
Size: 19292
Editor: pool-71-123-28-183
Comment:
Revision 2 as of 2010-07-15 20:43:32
Size: 22095
Editor: pool-71-123-28-183
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
(12:00:46 PM) nigelb: ok! Now, we're kicking
(12:00:54 PM) nigelb: Hello everyone, I'm Nigel and with me is David. We're going to talk about patch review.
(12:01:03 PM) ***bobbo waves
(12:01:08 PM) nigelb: I'd like you all to take a look at https://wiki.ubuntu.com/OperationCleansweep
(12:01:32 PM) nigelb: This cycle, this is a very critical operation that we'd like to see carried out. As you can read
(12:01:40 PM) nigelb: This cycle, this is a very critical operation that we'd like to see carried out. As you can read
(12:01:43 PM) nigelb: grr
(12:01:51 PM) nigelb: in the wiki page, operation cleansweep is about reviewing all the bugs in Launchpad against the Ubuntu project which have a patch attached.
(12:01:59 PM) nigelb: (sorry folks, paste fail ;)
(12:02:17 PM) nigelb: We have a lot of awesome contributors who write code to fix bugs, but we lose out on this awesomeness because we're slow to review the patches.
(12:02:26 PM) nigelb: Its not something thats new to an open source project, but its something that we in Ubuntu would like to pay attention to and we NEED your help!
(12:02:54 PM) bobbo: So how can you help out with patch reviews?
(12:03:05 PM) bobbo: We have a script which automatically finds bugs with patches that need reviewing
(12:03:20 PM) bobbo: Of course, it can't decide whether the patch is good or not, we need a human for this. This is where you guys come in
(12:03:37 PM) bobbo: The script subscribes us to all Ubuntu bugs with a patch attached minus the packages that we exclude (https://wiki.ubuntu.com/ReviewersTeam/ExcludingPackages)
(12:04:02 PM) bobbo: The first step to reviewing patches is to look at the current work queue.
(12:04:40 PM) bobbo: We've got a big Launchpad query which filters out all the reviewed patches and just shows the ones we need to look at
(12:05:01 PM) bobbo: You can find the bug list at http://tinyurl.com/2u7kf3b
(12:05:33 PM) bobbo: AS you can see was have currently around 1500 bugs in the unreviewed queue
(12:05:46 PM) bobbo: Those are bugs that have patches that need to be reviewed and we haven't gotten around to do
(12:06:08 PM) bobbo: Just for perspective, we started out with just under 2000 bugs in that list
(12:06:28 PM) bobbo: Yeah, we're getting there, but unfortunately new patches are added every day! We get almost 100 new patches a month, maybe more.
(12:06:40 PM) bobbo: also nigelb's laptop just broke, so that's slowing us down too :D
(12:06:50 PM) nigelb: heh, its getting fixed :)
(12:06:55 PM) nigelb: We'll quickly summarize the process and we will show you some specific examples to get a better grasp of the idea.
(12:07:11 PM) nigelb: Can all of us open the review guide? Its at https://wiki.ubuntu.com/ReviewersTeam/ReviewGuide
(12:07:37 PM) nigelb: So now you have the list of bugs. Pick a bug to work on.
(12:07:47 PM) nigelb: Once you pick a bug, you have to reproduce the bug again. Sometimes the bug is fixed and someone forgot to close it from changelog or it was fixed upstream.
(12:08:09 PM) nigelb: No point of the patch if the bug is already solved. Close the bug as "Fix Released"
(12:08:22 PM) nigelb: If the bug is reproducible, the next step is to check if the patch applies.
(12:08:44 PM) nigelb: If the patch is old, the source may have changed so much that the patch does not apply any longer.
(12:09:12 PM) nigelb: If the patch fails to apply or fix the bug, you should add the patch-needswork tag and ideally leave a comment explaining what is wrong with the patch
(12:09:22 PM) nigelb: and ask the original author if he can re-write the patch.
(12:10:30 PM) bobbo: f you can make sense of the code enough to correct, that would be even more great
(12:10:37 PM) bobbo: fail, If*
(12:10:52 PM) bobbo: This bug though will be off our list since we can't work with the patch unless its reworked.
(12:11:10 PM) bobbo: If the patch applies and the bug still exists, we need to check if it fixes the bug.
(12:11:27 PM) bobbo: Again, no point in a patch if the bug is present after applying the patch and run the program again.
(12:12:06 PM) bobbo: If the patch works, we have a few options
(12:12:36 PM) bobbo: Ideally we should forward it upstream for their take on it because we don't want to conflict with them if they have a better way of fixing it or if we introduce some dangerous regressions
(12:12:51 PM) bobbo: Also, since upstream is the original author of the code, they have a good idea of what makes sense.
(12:13:28 PM) nigelb: Encourage the patch author to forward the bug upstream or forward the bug upstream yourself, once the patch is forwarded upstream, add the patch-fowarded-upstream tag.
(12:13:42 PM) nigelb: This helps us keep track of the good that came out of it (and jcastro gets the credit :p)
(12:14:07 PM) nigelb: Depending on what upstream feels about it, you may need to modify the tag to patch-accepted-upstream or patch-rejected-upstream.
(12:14:21 PM) nigelb: Sometimes though, the bug maybe a bit more critical than to wait for upstream to fix it and we're sure the patch is going to help us.
(12:14:38 PM) nigelb: In that case, we forward the bug to Debian and add a 'patch-forwarded-debian' tag.
(12:15:24 PM) bobbo: Again, depending on feedback from Debian, we mark the patch as and patch-accepted-upstream and patch-rejected-upstream.
(12:15:44 PM) bobbo: In very rare cases though, the patch is just wrong and we have to reject it.
(12:16:02 PM) bobbo: In that case, we tag the bug with 'patch-rejected'
(12:16:38 PM) bobbo: In other cases the bug is so severe that the need to deal with it as quickly as possible
(12:17:11 PM) bobbo: or the patch is so perfect, well tested and unlikely to cause regressions that we won't lose sleep if we apply it without upstream looking at it
(12:17:37 PM) bobbo: In these cases, the patch is applied in the Ubuntu package, and then forwarded to upstream or debian
(12:17:59 PM) bobbo: One extra complication is that sometimes patches onfly affect the packaging of an application
(12:18:23 PM) nigelb: ok, so you've all asked some questions, we'll be answering those now
(12:18:31 PM) ClassBot: devildante67 asked: Does Operation Cleansweep include bzr branches or only patches?
(12:18:59 PM) nigelb: It includes only patches. the bzr branches would follow udd and are sponsored in directly.
(12:19:08 PM) nigelb: udd = ubuntu distributed development
(12:19:29 PM) ClassBot: joaopinto asked: when we have the technical ability to do so, is it ok to rework the patch ourselves or should we wait for the path feedback instead ?
(12:19:52 PM) nigelb: like bobbo said earlier, if you can rework it, by all means, go ahead :)
(12:20:10 PM) ClassBot: AudioFranky asked: How do I know/find the exact Ubuntu source package version against which the original patch submitted created his patch?
(12:20:45 PM) nigelb: If a bug was reported via apport, should be there in the bug report. Otherwise, its going to be a bit of guesswork based on version of ubuntu, date of filing, etc
(12:21:00 PM) ClassBot: joaopinto asked: are those tags/workflow written somewhere ?
(12:21:09 PM) bobbo: You can often check using the date the bug was reported and matching it up with the changelog :)
(12:21:22 PM) nigelb: thanks bobbo :)
(12:21:41 PM) nigelb: Yes, Review process is documented
(12:21:44 PM) bobbo: https://wiki.ubuntu.com/ReviewersTeam/ReviewGuide#Workflow
(12:21:47 PM) nigelb: https://wiki.ubuntu.com/ReviewersTeam/ReviewGuide is your friend :)
(12:21:59 PM) ClassBot: mythos asked: the ability of the reviewer is never checked, so everybody can review patches?
(12:22:38 PM) nigelb: Yes, everyone can review patches. Noone blocks you on anything. There is a team, but not being a member does not block you from contributing.
(12:23:02 PM) ClassBot: dupondje asked: when a patch is created for a important bug in for example lucid, and its fixed in maverick, do we still need to review it to get it into lucid then ?
(12:23:25 PM) nigelb: It is a case-by-case situation, but this calls for an sru and the sru process
(12:23:50 PM) nigelb: often, I've taken up sru for hardy or earlier releases when the patch was there, but it was fixed in a later ubuntu release and everyone forgot about sru
(12:23:56 PM) bobbo: sru = Stable Release Update
(12:24:43 PM) nigelb: ok, so ClassBot tells me the good news that question queue is empty
(12:24:52 PM) nigelb: lets move onto some specfic examples
(12:25:07 PM) nigelb: Bug #544242
(12:25:08 PM) ubot2: Launchpad bug 544242 in empathy (Ubuntu) (and 1 other project) "[PATCH] Empathy should allow users to toggle auto-away mode on/off (affects: 1) (heat: 38)" [Wishlist,Fix released] https://launchpad.net/bugs/544242
(12:25:22 PM) nigelb: This bug was opened with a patch provided by the reporter. It was subscribed by the subscription script with the patch tag.
(12:25:51 PM) nigelb: The patch was forwarded upstream, and recieved the patch-forwarded-upstream tag
(12:26:07 PM) nigelb: After upstream accepted this patch, it recieved the patch-accepted-upstream tag and is ready to be fixed in Ubuntu.
(12:26:34 PM) bobbo: Bug #544242
(12:26:35 PM) ubot2: Launchpad bug 544242 in empathy (Ubuntu) (and 1 other project) "[PATCH] Empathy should allow users to toggle auto-away mode on/off (affects: 1) (heat: 38)" [Wishlist,Fix released] https://launchpad.net/bugs/544242
(12:26:59 PM) bobbo: fail
(12:27:07 PM) bobbo: Bug #462193
(12:27:08 PM) ubot2: Launchpad bug 462193 in djvulibre (Debian) (and 2 other projects) "djvulibre-bin produces garbage in the root (/man1/*) (affects: 16) (dups: 2) (heat: 56)" [Unknown,Unknown] https://launchpad.net/bugs/462193
(12:27:32 PM) bobbo: This patch only had to go to Debian as the changes only affected the application's packaging
(12:27:57 PM) bobbo: it makes non sense in most cases to send patches against the packaging to the upstream as they normally don't touch it at all
(12:28:12 PM) bobbo: so it was forwarded to Debian and received patch-forwarded-debian
(12:28:20 PM) bobbo: it was then accepted and receive patch-accepted-debian
(12:28:45 PM) bobbo: and now we're waiting for the fix to be merged or synced into the Ubuntu archives
(12:29:14 PM) bobbo: One last example
(12:29:19 PM) ClassBot: joaopinto asked: Once a bug gets patch-accepted-upstream, how do we ensure that the patch is applied to the current development package ?
(12:29:36 PM) nigelb: bobbo: finish the example and we'll answer this :)
(12:29:41 PM) bobbo: okay :)
(12:29:56 PM) bobbo: Bug #33288
(12:30:01 PM) ubot2: Launchpad bug 33288 in poppler (Ubuntu Lucid) (and 2 other projects) "Evince doesn't handle columns properly (affects: 28) (dups: 9) (heat: 191)" [Medium,Fix released] https://launchpad.net/bugs/33288
(12:30:33 PM) nigelb: ah, that was a famous one :)
(12:30:40 PM) bobbo: The patch was forwarded upstream, where it was rejected
(12:31:12 PM) bobbo: it's now been fixed, however with a different patch
(12:31:31 PM) bobbo: </examples>
(12:31:40 PM) nigelb: heh, thanks bobbo :)
(12:31:48 PM) nigelb: ok, so about the question
(12:32:11 PM) nigelb: in our hurry to write this session up, we missed a step, which actually answers the question
(12:32:47 PM) nigelb: when you decide to change the tga or comment on the bug, subscribe yourself to the bug. That way you can keep track of the bug.
(12:33:21 PM) nigelb: When the patch is accepted upstream, you can either get it into ubuntu directly if its very severe or wait for it to flow downstream
(12:33:53 PM) nigelb: But essentially, our mission would be complete, i.e. patches don't rot in launchpad and die
(12:34:17 PM) nigelb: Also, contributors who write awesome patches don't get discouraged from writing more code
(12:35:01 PM) ClassBot: devildante67 asked: In the last example, the patch has been accepted, but the upstream bug is still set to Confirmed, even with the tag patch-accepted-upstram. How's that possible?
(12:35:09 PM) bobbo: I've just checked this up
(12:35:19 PM) bobbo: either the upstream bug report simply hasn't been updated
(12:36:11 PM) nigelb: the upstream bug hasn't been updated - there is a comment "pushed to git master"
(12:36:16 PM) bobbo: or it may be because we have cherry picked our patch from their git repository and they don'[t move from COnfirmed until it's actually been pushed out in a final release
(12:36:57 PM) nigelb: joaopinto: To answer your question, you have to take the initiative.
(12:37:26 PM) nigelb: If its a main application, talk to desktop team or other subteams if its in their packageset
(12:37:34 PM) nigelb: they'll glady welcome the help
(12:37:55 PM) nigelb: If its universe, try mailing the DM who's responsible for the package.
(12:37:56 PM) bobbo: as long as there is an active package maintainer in Debian, all upstream accepted patches should filter down at some point
(12:38:28 PM) nigelb: Now, if there is no active maintainer and the patch is good, you have to do some effort on the debian side
(12:39:44 PM) nigelb: If a package is orphaned in debian, you can do a QA upload.
(12:39:59 PM) nigelb: You'll need a DD who can sponsor you though.
(12:40:24 PM) nigelb: A quick mail to debian-mentors mailing list should help you in that case
(12:40:34 PM) bobbo: If you're not a packager, you can tell a MOTU and they'll hopefully keep track of the package for you
(12:40:58 PM) nigelb: I'd like to point your attention to a package called galrey
(12:41:01 PM) nigelb: http://packages.debian.org/sid/galrey
(12:41:01 PM) bobbo: dropping a mail to the MOTU mailing list or shouting in #ubuntu-motu will at least put it onto a packager's radar
(12:41:38 PM) nigelb: this package had a patch in ubuntu, its an orphaned package in debian
(12:42:08 PM) nigelb: I spoke to a MOTU friend and she recommended uploading to debian directly, since we don't want to carry a diff.
(12:42:41 PM) nigelb: A quick hop into oftc, #debian-mentors and in some time it was awaiting sponsorship and the DD who guided me uploaded into the debian archive
(12:42:52 PM) nigelb: I put in a sync request and we got into lucid in a few days
(12:44:00 PM) nigelb: joaopinto: I'll answer in here for that one
(12:44:20 PM) nigelb: joaopinto asked "that's a bit odd, because a bug reporter expects a bug to be fixed for the current release, isn't that the goal of testing development releases :) ?"
(12:44:58 PM) nigelb: Expectations are high, but that leads to trouble like diverging from upstream and diverging from debian.
(12:45:23 PM) nigelb: If you've every done a 3-way merge, you'll know that we *really* don't want that
(12:46:03 PM) nigelb: When packages are synced that's a better use of our time. Even if we don't work on Ubuntu directly at times.
(12:46:38 PM) nigelb: Its a bit of a pain, but the reward is much better. More distro's carry the patch and more people have a happy time.
(12:46:55 PM) nigelb: joaopinto: does that answer your question to some extent?
(12:47:47 PM) nigelb: Anymore questions folks?
(12:48:18 PM) nigelb: You see, bobbo and I both lost notes for this session and wrote it in 20 minutes before session started, so its a bit short :)
(12:48:19 PM) bobbo: dupondje asked: if a bugreport has status 'incomplete' it has been rejected and doesn't need check anymore? Also 'Fix Commited' means is has been accepted? So no check needed neither ?
(12:48:48 PM) nigelb: incomplete = we need more information abaout the bug from the reporter
(12:48:49 PM) bobbo: Incomplete means that not enough information has been given in the report and we have asked for more
(12:49:01 PM) bobbo: Fix Committed is a bit of an odd one in Ubuntu
(12:49:13 PM) bobbo: it can mean many different things and it's often not used correctly
(12:49:33 PM) nigelb: and desktop team uses it for a specific purpose which confuses us often.
(12:50:19 PM) nigelb: Generally, fixed commited means the fix in repositry, but not yet rolled into a release.
(12:50:31 PM) bobbo: basically for patch revirew purposes, it's best to ignore Fix Committed and focus on the patch-* tags on the bug instead
(12:50:58 PM) ClassBot: dupondje asked: if a bugreport has status 'incomplete' it has been rejected and doesn't need check anymore? Also 'Fix Commited' means is has been accepted? So no check needed neither ?
(12:51:09 PM) nigelb: we did that one :)
(12:51:11 PM) bobbo: fail, I can't work classbot
(12:51:23 PM) nigelb: heh
(12:51:37 PM) bobbo: empty queue, does anyone have any questions for the final 9 minutes?
(12:52:22 PM) bobbo: none? Okay then
(12:52:37 PM) bobbo: We'd lvoe for you guys to help out reviewing patches and reach the goals of Operation Cleansweep
(12:52:49 PM) nigelb: Join us in #ubuntu-reviews
(12:52:58 PM) nigelb: talk about it at your loco events
(12:53:03 PM) bobbo: if you want more information or would liek some help getting started please feel free to drop into #ubuntu-reviews
(12:53:16 PM) nigelb: Help us by reviewing 1 patch a day
(12:53:31 PM) nigelb: Also, we have this beautiful progressbar that daker made for us
(12:53:46 PM) nigelb: if you can showcase it on your website or blog that would be great
(12:54:03 PM) ClassBot: devildante67 asked: Is Operation Cleansweep a Maverick only operation, or do you plan on extending it for future releases?
(12:54:30 PM) bobbo: The original plan was to get all 2000 patches reviewed by this cycle's releaase date
(12:54:30 PM) nigelb: The focus is on getting unreviewed patches to 0 by maverick release
(12:54:55 PM) nigelb: we'll have more patches and then our focus would be keeping it low all the time, reviewing them instantly
(12:55:23 PM) bobbo: This i project was started to get rid of the huge pile of patches sitting in LP
(12:55:43 PM) bobbo: so that in future, patches will be reviewed much quicker
(12:55:56 PM) nigelb: jono just spontaneously came up with the idea
(12:56:08 PM) nigelb: (and spontaneously assigned it to me :p)
(12:56:33 PM) dholbach: nigelb: you asked for it :)
(12:56:43 PM) nigelb: dholbach: heh
(12:56:50 PM) ClassBot: ean5533 asked: So who's fault is it that it got this bad? nigelb or bobbo?
(12:56:54 PM) nigelb: Well, the situation got bad because we never had a system to deal with it
(12:57:16 PM) nigelb: About 6 months back, I was innocently hanging out in #ubuntu-motu and said "I'm bored"
(12:57:28 PM) bobbo: (big mistake)
(12:57:54 PM) nigelb: yes, in retrospect :p
(12:57:54 PM) ClassBot: penguin42 asked: What about patches in debian bug tracking system that fix bugs shared with us?
(12:58:14 PM) nigelb: Emmet a.k.a. persia said, "go review patches" and I started writing the workflow which we all perfected.
(12:58:14 PM) bobbo: They are essentially patch-forwarded-debian
(12:58:34 PM) bobbo: Okay we'd better clear off before the next session
(12:58:50 PM) bobbo: thanks for listening and please get involved with Operation Cleansweep!
(12:59:23 PM) nigelb: Yes, Thank you folks. I'm not going anywhere though. I'll talk about the "how to forward patches" with pedro :)
(12:59:28 PM) pedro_: We're having a bug day for Operation Cleansweep next week so stay tune ;-)
(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!

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!

MeetingLogs/devweek1007/QuicklyApp (last edited 2010-07-15 20:43:32 by pool-71-123-28-183)