I'm proud to announce the availability of Quickly 0.4 in lucid. This new release brings shiny new features (more than 6 months of heavy development), lowering again the barrier for opportunistic developers. Development should just be easy and fun!
Thanks to all awesome contributors making this release happened: Philip Peitsch, Petar Vasić, Jens Persson, Łukasz Jernaś Brian, Jonathan Lange and Shane Fagan. Special kudos to Rick Spencer for his continue devotion to opportunistic development and making quickly-widgets.
What's new in 0.4?
Well, a lot of stuff, but more precisely, let's me highlight some special features from the NEWS file content, containing the full story.
The core
- One of the main matter for a lot of user was to use space and dashes as their name project. This wasn't available due to a lot of technical and packaging issues. This is part of past now! You can create your awesome "FoO bAr" project and enjoy it!
- What's new in the core is template inheritance. You can now create a template picking commands from other templates. That made possible releasing the ubuntu-cli template with 0 line of code! Just shipping a new boiler plate. We hope that would help people in their template creation. Of course, it's still possible to override some commands locally.
- We also check and recreate your credential if you deleted it in Launchpad inadvertently. Less thing to care about for you! Let's focus on your app!
- Did you remember how sweet is Quickly regarding shell completion? Now the same has been extended to Quickly option itself.
- An apport hook for Quickly itself. To report bugs on Quickly, do not hesitate 'ubuntu-bug quickly' on Ubuntu to fetch all needed information on our side.
- The core now support
--
arguments for subcommands like quickly run-- -help
won't run help from Quickly itself but from your app.
- A Quickly API is available, for people wanting to communicate or integrate Quickly to an IDE, it's fully possible to embed Quickly in your app, spread the Quickly love!
The ubuntu-application template and derivatives:
ubuntu-project renamed
One of the main feature of 0.2.x was the ubuntu-project template. This one has been renamed to ubuntu-application. Your app will be transitioned automatically to this new template thanks to the core supporting upgrade in templates and projects now[1]
Consequently, no more quickly create ubuntu-project fooby
, but quickly create ubuntu-application fooby
!
GPG key setup
What seemed to have given a lot of trouble to Quickly users in 0.2.x was the gpg key setup. For those who don't know, this key is needed when you upload your package to launchpad. Now, Quickly is more clever about this and doesn't bring random bits to create your email address. This happens in two steps:
- collecting all available email addresses that Quickly can find and order them in the best possible order (DEBEMAIL, EMAIL, the AUTHOR file, setup.py your Launchpad emails account…). The thing is that some of those addresses may not be yours if more than one person works on the project, that's where step 2 occurs.
- compare with all available local GPG key and those uploaded to launchpad.[2]. This enables us to know who YOU are and what key you should use to sign your package. This part involved patching Launchpad and fun hack evening with jml ;)
Another patch for ssh key has been approved in Launchpad too, bit we will integrate the client side in 0.6. Easy and fun, didn't I say that already?
Choosing and sharing to multiple ppa and bzr branches.
You can now choose to which ppa you want to share/release your code. You can use Use --ppa ppaname
or --ppa team/ppaname
(shell completion even work with that! I must admit if it's very slow (more than 10s) due to a lot of requests to Launchpad). You can setting that up definitively by quickly configure ppa <ppa_name>
.
The same with bzr branch is also possible (quickly configure bzr <bzr_branch>
).
Easier licensing
Previously, license command asked you to fill a Copyright file which can contain tweaked copyright and author names. Now, this file has been removed and we keep only one AUTHORS file where you put your name and those participating in the project. You can create your own COPYING file[3] for your own licence, otherwise, it will license with command line supplied license (MIT has been added). At first share/release, the license is now automagic if you didn't licensed previously, and it will take your name/email and license your proect under GPLV3. Each share/release command still update the license to all your files as in 0.2.x.
Again, all your project created with 0.2 will be migrated automatically to this scheme. Don't bother about about licensing if it doesn't interest you. Quickly is doing the right thing (at least, we try) for you.
Automatic about dialog
The about dialog is now fiddled automatically with up-to-date information at each "release" command. It will add your logo, the current version of the program, home page, the copyright, the authors, license… No more need to care about having this updated manually ! (the Credits show the authors, the licence… the licence :))
hum, it seems that Rick is already enjoying using spaces in his project name ;)
New versionning scheme
The ubuntu-application template brings a new version scheme to avoid errors on failed share or release package (the critical section has been narrowed). So, if you release this month (April 2010), your applications would be 10.04. If you release a new version again in the same month, it will be 10.04.1 and so on… When you share, it just takse the last version and adds -publicX like 10.04.1-public1, then 10.04.1-public2 and so on. Of course, it's still possible to provide your own version as a parameter of quickly release
or quickly share
, but you won't have the full sweet safety field of Quickly for avoiding rejected package :)
Enhanced release command.
Making a release is quite tedious. In addition to push your code in your branch and the package (well, that's the goal of the ubuntu-application template after all), you should also release an upstream tarball, signing it, pushing those, create a milestone, attaching them and also provide a list of what's NEW for the release note. Seems a long task, no? Well, good news is that quickly release
does all of this for you! for completing and releasing the changelog as a release note, it takes relevant message from quickly save "your message"
or manual bzr commit to create a changelog with all those information. Next step in 0.6 will be to make a Launchpad announce the new release automatically, but this requires again extending the API, so, some Launchpad hacking[4].
You can have a look here for a dummy example (see "Series and milestones").
Adding dependencies
python-distutils-extra rocks at detecting with a lot of magic your python dependencies. Unfortunately, it can't detect the dependencies for non python stuff and manually launched commands. It's now possible to provide a manual list of dependencies for your app. For this, quickly configure dependencies
is your new sweet friend.
Silent create/package/share/release commands
All those command now will show some dots about the progress (--verbose for full log), but filter annoying output to only focus on what matters. If some warnings and errors are encounters, it will print them in a summary asking you if you wish to continue
$ quickly release
Récupération de la configuration Launchpad
Connexion à Launchpad réussie
......................
--Command returned some ERRORS:
--ERROR: Python module slip_coverconfig not found
--Command returned some WARNINGS:
--WARNING: the following files are not recognized by DistUtilsExtra.auto:
bin/slip-coverc
--Do you want to continue (this is not safe!)? y/n: y
Paquet Ubuntu créé dans le répertoire debian/
......
This is to avoid the whole bunch of information that can lost people in focusing on the important ones.
Apport and Launchpad Integration
Now, all projects will contain an apport hook and a launchpad integration in the menu. Of course, they only appears if you have the current package integrated. So, the project will still work on other distros, just not showing the integration.
Currently this only works for installed package (so, you can't run that for trunk). Existing project are updated as well to get this goodness. Some more work are waiting approval to get it work from trunk too (liblaunchpad waiting merges)
New debug command
Just run quickly debug
for some sweetness in the debug world with winpdb!
Misc
- Some commands have been renamed, to avoid cluttering you with multiple commands and being more descriptive:
quickly glade
is nowquickly design
quickly lp-project-change
is nowquickly configure lp-project
(configure is used for bzr, dependencies, lp-project, ppa)quickly dialog
is nowquickly add dialog
to enable later boilerplate addition.- The tutorial is now in docbook format and ready for translation
- The boiler plate is now fully i18n compliant
ubuntu-cli template
So, with the importing tempate feature, here is a new template resulting from some requests about building command line only application. Again, there is 0 line of code, just importing commands from ubuntu-application template!
after running quickly create ubuntu-cli "my CLI app"
, I got a new fresh my-cli-app program showing:
quickly run foo
I'm launched and my args are: foo
You also have a full of default binded option like:
$ quickly run
helpUsage: my-cli-app options
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-d, --debug Print the maximum debugging info (implies -vv)
-v, --verbose set error_level output to warning, info, and then debug
-f FOO, --foo=FOO foo should be assigned to bar@@
those are good examples to see how to handle debugging level and random command line options (with eventually, parameters, counting occurrences of a parameter, …).
Of course, only a subset of ubuntu-application commands are available in this template (no quickly add dialog
, neither quickly design
, for instance ;)). Hope that will bring fun for making CLI application too!
ubuntu-pygame template
Who said developers don't have fun? Rick provided a new template for developing games:
Like ubuntu-cli, ubuntu-pygame shares a large part of ubuntu-application commands and is just a new boilerplate (no command written, again). You should check out the full and complete tutorial available at quickly tutorial
What's next?
Well, that was only a subpart of what was backed out in Quickly 0.4. We have tons of fixes and small enhancements that would have deserve to be put there. This post is already quite long so, I won't continue on. Check out the NEWS file if you want the full story!
Now, let's see what will be in 0.6. We will discuss the new features at next UDS, hope you can join either in person or by IRC. One of the next features will be nautilus integration thanks to the API. Some prototypes are already available as you can see them below. Launching a dedicated gedit session with some plugin enabled is also on track.
Let's keep it hot and don't hesitate to comment on the new features. Also, what do you think should be added to 0.6 (maybe renamed to Quickly 10.10)?
We have already a good bunch of documentation for Quickly, even if some like my blog posts should be refreshed for 0.4, the wiki page is still a good starting point, and I heard that there will be soon some new videos available…
Hope you will enjoy 0.4 and we always welcome your feedback on #quickly on freenode!
Notes
[1] so, you will understand that once running 0.4, you won’t be able to switch back to 0.2.x due to this transition (a lot of things will happen the first time you will either launch a command or use shell completion in your existing project. The good news is that, you don’t have even to care about this ;)
[2] it’ll create one for you if you don’t have any. However, it won’t still upload it to Launchpad as it raises some security concerns by the launchpad guys. We will try to tackle those issues at Maverick UDS with them to have clearly nothing to do for 0.6.
[3] no more LICENCE one
[4] should be easier than the gpg/ssh stuff though