Development
Developing applications "Quickly"
Quickly is a new utility to simplify Linux application development by bootstrapping repetitive project setup, user interface, packaging, and release chores. It targets both new application developers and those who simply want to speed up recurring tasks. Quickly is a product of the Ubuntu project, but is flexible enough to be used in other distributions and for other types of tasks — the real power of Quickly lies in the templates that automate different aspects of project configuration and maintenance.
An application built using Quickly has no dependency on Quickly itself,
said developer Didier Roche, "there is no Quickly runtime or base
class library.
" The goal, he said, is to speed up the process for
regular developers and help new developers get past the barrier of deciding
which tools and approaches to use.
Canonical's Rick Spencer came up with the initial idea for Quickly after a series of false starts with missing documentation — including the deprecated tool libglade that did not point him towards its replacement gtkbuilder — and packaging guides that were so generalized that they provided little concrete help:
The latest version of Quickly is 0.2.2 and is packaged only for Ubuntu 9.10, in which it is slated to be part of the official release. The authors note, however, that it could easily be packaged for Ubuntu 9.04 or for other distributions. Quickly is a command-line only tool that developers can use to execute discrete steps of the form:
quickly command [options]
It has commands
that create a new project, start an editing session, package it, make a
public release, and so on.
Most of these commands are defined in a template tailored to a specific
scenario; running "quickly commands" will list the built-in
commands and those associated with each installed template. So far, the
only released template is ubuntu-project, which automates working with
Ubuntu-compatible code (using Bazaar
for version control, Debian packaging, and Launchpad.net Personal Package
Archives (PPA) for releases).
In addition, the ubuntu-project template makes what Roche called "opinionated choices" for the tools and technologies used by the new application: using Python for the language, PyGTK for the user interface, Glade for the UI design, Gedit for the editor, and Desktop CouchDB for (optional) data storage. Using the template's project creation routines to start a new project, Quickly creates a subdirectory for the project and set of skeleton files, including necessary Python and Glade files, plus auxiliary icon and licensing files. Quickly also creates Python classes to encapsulate basic windows and dialogs, and a separate Glade file for each class and window. These decisions are designed to make it simple to edit the application with Quickly, even though they might not be the design choices other programmers would make.
Example Quickly usage
The Ubuntu wiki features a basic tutorial on writing code with Quickly, and Roche has started a series of blog entries to document its usage and options. On August 31, Roche and Spencer hosted an IRC talk during Ubuntu Developer Week that delved into further detail.
The process starts by running:
quickly create ubuntu-project myapp
Quickly then creates a ./myapp directory, and fills it
with:
bin/
Copyright
data/
myapp/
myapp.desktop.in
setup.py
The Python files are placed in myapp/myapp, and the Glade files in
myapp/data. After that, the developer must
cd into
the myapp directory. From there, quickly run will launch the
new application, quickly edit will open the key Python files
in Gedit, and quickly glade will open
the UI files with Glade. Because the focus of the ubuntu-project template
is on graphical applications, a quickly dialog command is
available to create a new dialog window and associated class in Glade and
Python.
Running quickly save will save the code to Bazaar,
quickly license some_license will add license
headers, and quickly package will calculate dependencies and
generate a .deb package. Public releases are made with
quickly share and quickly release. Both
commands require the
user to have a working account on Launchpad.net, complete with a PPA. The
difference between the two commands is that share does not assign
a version
number or allow for a change log; release automatically increments
version
numbers, although they can be overridden.
Quickly design: core and templates
At its core, Roche explained, the quickly tool itself is essentially a parser and command processor. It checks context (for example, whether the working directory is a Quickly project directory), provides command completion, help, and a few low-level hooks, but most of the logic resides in the templates. Templates are written in Python, and although there is no documentation for template writing available yet, interested parties can browse the code used in the ubuntu-project template, which is installed by the package at /usr/share/quickly/templates/ubuntu-project.
Roche said that the Quickly team decided to separate as much of the
"intelligence" as possible from the quickly core in order to make it more
useful. "If anyone wants to make templates for other platforms, we
would gladly merge those into our project,
" he said, perhaps
separating Quickly templates into its own subproject from Quickly Core.
"We would love to see, for instance, a fedora-project template,
gnome-project one, plasmoid-project, [or a] zeitgeist-plugin.
"
Quickly even makes it simple to duplicate an existing template in order to customize it; the built-in command:
quickly quickly template
creates a duplicate. The user can then modify the
new template for use with other editors, other version control systems, or
make more substantial changes without starting from scratch. "If
someone likes the ubuntu-project template but doesn't agree on, let's say,
couchdb but prefers gconf, he is able to create his own template based on
ubuntu-project with $ quickly quickly ubuntu-project
ubuntu-project-with-gconf and then hack in
~/quickly-templates/ubuntu-project-with-gconf/ to tweak what interests
him,
" said Roche.
Quickly's core/template separation means that it is not limited to standalone GUI Linux application development. As the project's Launchpad page states, developers could easily create a template to kick-start creation of a conforming plugin for a specific application, for working with rendering systems like LaTeX, or for non-coding projects like documentation tasks.
As additional templates are written by Quickly users, Roche said, the team will coordinate with template authors to see what shared functionality deserves to be rolled up into built-in commands. Regardless of the task, some operations like file upload are generic enough for reuse. Quickly's Launchpad access is one such example; it began as part of the ubuntu-project template, but is now accessible to other template authors through Quickly's core — abstracting sign-in, reconnections, and other tasks.
Quickly in practice
Quickly is on track to ship with Ubuntu "Karmic Koala" 9.10, though Spencer said he does not know of any official Karmic applications written with Quickly. A few developers have started using the package to build small applications; Jono Bacon blogged about his use of Quickly while working on a tool for managing Amazon Kindle content, and Bryce Harrington has started developing a GUI front-end to Quickly — using Quickly itself.
Roche said that the near-term plans for the ubuntu-project template include adding some important features like GPG and SSH key creation for use with package signing and Launchpad upload. The team is also interested in adding new templates, including an ubuntu-game template that incorporates PyGame, and a gedit-plugin template that would demonstrate Quickly's applicability for application-specific plugin project development.
In the long term, Roche said that Quickly should be able to scale up to large projects in addition to the modest single-developer examples shown so far. It already supports concurrent Bazaar access, but the ubuntu-project template does not support Launchpad's "teams" collaboration feature because it is not accessible via the Launchpadlib library. Nevertheless, he said, the Quickly team is actively working on the issue and hopes to be able to tackle it in the future.
An early review of Quickly at Ars Technica compared it to Rails, which also uses a command-line to automate set-up for non-command-line projects. Readers responded that it also bears similarity to Django and Maven project creation, but it may be a first for desktop applications. Although, as Roche said, nothing about Quickly's core or its templating system limit it to desktop application development. Any repetitive task could be sped up by being adapted into a Quickly template; which templates the world sees depends entirely on who picks up Quickly and experiments with it.
System Applications
Audio Projects
alsa-lib 1.0.21a released
Version 1.0.21a of alsa-lib has been announced. "I made a quick release 1.0.21a of the alsa-lib package to fix regression for the configuration parsing (makes some device names unavailable)."
Database Software
Firebird 1.5.6 release candidate is available
A release candidate for version 1.5.6 of the Firebird DBMS has been announced. "The Firebird Core team invites users who want to continue using Firebird 1.5 to test the release candidate for V.1.5.6. 32-bit kits are available for Linux and Windows now. NOTE :: This will become the LAST sub-release for the V.1.5 series."
MySQL Community Server 5.1.38 released
Version 5.1.38 of MySQL Community Server has been announced. "MySQL Community Server 5.1.38, a new version of the popular Open Source Database Management System, has been released. MySQL 5.1.38 is recommended for use on production systems."
PostgreSQL Weekly News
The September 6, 2009 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.
Web Site Development
GT portalBase released under GPL
The GT portalBase has been released under GPL. "On its fourth anniversary, GT portalBase has been released under a GPL open source license. GT portalBase is a web based industrial strength platform for business application development based on a postgresql database. It's used to rapidly prototype and develop data entry and reporting applications that work over the internet or a local network. Our vision was to create a product that allowed business analysts to create lean, agile, Just-In-Time (JIT) back offices."
Desktop Applications
Audio Applications
LADI Session Handler - Preview 1 announced
The Preview 1 release of LADI Session Handler is available. "LADI Session Handler or simply ladish is a session management system for JACK applications on GNU/Linux. Its aim is to allow you to have many different audio programs running at once, to save their setup, close them down and then easily reload the setup at some other time. ladish doesn't deal with any kind of audio or MIDI data itself; it just runs programs, deals with saving/loading (arbitrary) data and connects JACK ports together. It can also be used to move entire sessions between computers, or post sessions on the Internet for download."
Data Visualization
PLplot 5.9.5 has been released
Version 5.9.5 of PLplot, a cross-platform scientific graphics plotting library, has been announced. "This is a development release of PLplot. It represents the ongoing efforts of the community to improve the PLplot plotting package. Development releases in the 5.9.x series will be available every few months. The next full release will be 5.10.0."
Desktop Environments
GNOME Journal Issue 16
Issue #16 of the GNOME Journal has been announced. "Issue 16 features three new articles, including a recap of the recent Writing Open Source Conference, an interview with John Palmieri based on his recent GUADEC talk, "Putting the Network back into G(N)OME", and Behind the Scenes with Lucas Rocha (who originally started the Behind the Scenes feature). Issue 17 is currently being planned with a focus on Multimedia - if you would like to contribute an article, please let me know."
GNOME Software Announcements
The following new GNOME software has been announced this week:- at-spi 1.27.92 (bug fixes and translation work)
- Brasero 2.27.92 (bug fixes and translation work)
- buzztard 0.5.0 (new features, bug fixes and code cleanup)
- Cheese 2.27.92 (documentation and translation work)
- Deskbar-Applet 2.27.92 (bug fix and translation work)
- Devhelp 2.27.92 (bug fixes and translation work)
- EOG Plugins 2.27.92 (bug fixes and translation work)
- epiphany-extensions 2.27.92 (bug fixes and translation work)
- Eye of GNOME 2.27.92 (bug fixes and translation work)
- GCalctool 5.27.92 (bug fixes and translation work)
- GLib 2.21.6 (bug fixes and translation work)
- gnome-applets 2.27.92 (bug fixes and translation work)
- gnome-games 2.27.92 (new features, bug fixes and translation work)
- gnome-packagekit 2.27.92 (new feature, bug fixes and translation work)
- GNOME Power Manager 2.27.92 (bug fixes and translation work)
- gnome-settings-daemon 2.27.92 (new feature, bug fix and translation work)
- GNOME Shell 2.27.2 (new features, bug fixes and translation work)
- Gnumeric 1.9.11 (new features and bug fixes)
- gobject-introspection 0.6.5 (build and bug fixes)
- GOK 2.27.92 (bug fixes and translation work)
- gstreamermm-0.10.5 (build fix)
- GTK+ 2.17.11 (unstable development release)
- gtkmm 2.17.11 (new features and code cleanup)
- gtkmm-documentation 2.17.0 (documentation work)
- libchamplain 0.3.92 (new features and bug fixes)
- mm-common 0.7.3 (new features)
- mousetweaks 2.27.92 (bug fixes and translation work)
- Mutter 2.27.4 (bug fixes, code cleanup and translation work)
- Orca 2.27.92 (bug fixes and translation work)
- SeaMonkey 1.1.18 (security release)
KDE Software Announcements
The following new KDE software has been announced this week:- Amarok 2.2 beta 1 (new features and bug fixes)
- Converseen 0.1 (initial release)
- KrossWordPuzzle 0.5 (unspecified)
- SwapChanger 0.1 (initial release)
Xorg Software Announcements
The following new Xorg software has been announced this week:- libX11 1.1.6 (bug fix)
- xf86-input-keyboard 1.3.99.1 (new features, bug fixes and code cleanup)
- xf86-input-mouse 1.4.99.1 (new feature, bug fixes and code cleanup)
- xf86-input-synaptics 1.1.99.1 (new features, bug fixes and documentation work)
- xf86-video-ark 0.7.2 (bug fixes, code cleanup and documentation work)
- xf86-video-newport 0.2.3 (new feature and code cleanup)
- xf86-video-rendition 4.2.3 (new feature and code cleanup)
- xf86-video-sunffb 1.2.1 (code cleanup and documentation work)
- xf86-video-tga 1.2.1 (new features and code cleanup
- xf86-video-tseng 1.2.3 (new feature and code cleanup)
- xf86-video-vmware 10.16.8 (bug fixes and code cleanup)
- xf86-video-xgi 1.5.1 (new features, bug fixes and code cleanup)
- xf86-video-xgixp 1.7.99.4 (new features, bug fixes, code cleanup and documentation work)
- xorg-server 1.6.99.900 (new features, bug fixes and code cleanup)
Encryption Software
GnuPG 1.4.10 released
Version 1.4.10 of GnuPG has been announced. "We are pleased to announce the availability of a new stable GnuPG-1 release: Version 1.4.10. The GNU Privacy Guard (GnuPG) is GNU's tool for secure communication and data storage. It is a complete and free replacement of PGP and can be used to encrypt data and to create digital signatures."
GnuPG 2.0.13 released
Version 2.0.13 of GnuPG has been announced. "We are pleased to announce the availability of a new stable GnuPG-2 release: Version 2.0.13."
GUI Packages
wxWidgets 2.9.0 released
Version 2.9.0 of the wxWidgets cross-platform GUI toolkit has been announced. "We are pleased to announce the first release in the 2.9 development series. wxWidgets 2.9.0 gives a flavour of what will be provided in the stable wxWidgets 3.0 version next year, and we are interested in your feedback. Enhancements in 2.9 include the removal of the distinction between ANSI and Unicode builds, and a reworked Mac OS X architecture, supporting both 32-bit Carbon and 32-bit/64-bit Cocoa variants (wxOSX/Cocoa at alpha stage)."
Imaging Applications
A GIMP 2.8 preview
The gimpusers.com site has a preview of new features in the upcoming GIMP 2.8 release. "It's now possible to group layers into folders in a tree-like way. You can move and show/hide all layers of a group at once so it will finally be possible to create complex layouts without getting lost. The layer sets don't work perfectly, since layer masks don't work yet for example. Nevertheless the basic behaviour works quite well already!" 16-bit image depth is not on the list, unfortunately.
Interoperability
Wine 1.1.29 announced
Version 1.1.29 of Wine has been announced. Changes include: "- Improved Gecko integration by using Wine's network layers. - Use of external libmpg123 for mp3 decoding. - Support for JPEG and PNG formats in WindowsCodecs. - Many regression test fixes for Win64 and Windows 7. - Various bug fixes."
Mail Clients
Sylph-Searcher 1.2.0 beta 1 released
Version 1.2.0 beta 1 of Sylph-Searcher has been announced, it adds a number of new capabilities. "Sylph-Searcher is a program that enables fast full-text search of messages stored in mailboxes of Sylpheed, or normal MH folders."
Multimedia
NMM 2.0.0 released
Version 2.0.0 of NMM has been announced. "Motama released the next major version of its Network-Integrated Multimedia Middleware (NMM) for Linux, Windows, and Mac OS X: NMM 2.0.0 Codename "Seamlessly"."
Music Applications
xwax 0.6 released
Version 0.6 of xwax has been announced, it includes several new capabilities and some bug fixes. "xwax is open-source vinyl emulation software for Linux. It allows DJs and turntablists to playback digital audio files (MP3, Ogg Vorbis, FLAC, AAC and more), controlled using a normal pair of turntables via timecoded vinyls."
Office Suites
OpenOffice.org release 2.4.3 is available
Version 2.4.3 of OpenOffice.org has been announced. "The OpenOffice.org Community is pleased to announce the release of OpenOffice.org 2.4.3, a minor update to the legacy OpenOffice.org 2.x series."
OpenOffice.org Newsletter
The August, 2009 edition of the OpenOffice.org Newsletter is out with the latest OO.o office suite articles and events.
Digital Photography
Frankencamera is open source, runs on Linux (CNet Asia)
Leonard Goh takes a look at Frankencamera. "Photo scientists at Stanford University have conceived what is probably the world's first open-source camera. Their contraption, dubbed the Frankencamera, consists of a Nokia N95 mobile phone camera module, circuit board, a couple of lenses from Canon and Linux for all the open-source goodness."
Open Source Photo Processing Comes of Age (a digiKam review)
Here's a review of digiKam found on the "An alien's viewpoint" weblog. "Happily, there is now another open source alternative with 16 bit mode editing capabilities which appears to be getting ready to give the big guys a run for their money digiKam. I have personally only recently discovered digiKam. Well, I had tried it before, but only since I tried its KDE4 edition did I think it was ready for my use. I was actually quite surprised to see how much it has improved and how many features have been included with it."
DigiKam Digest
The August 31, 2009 issue of the DigiKam Digest has been published. "This week we saw finishing of work on new color management code; updating of libraw to stable 0.8.1 (28 new cameras comparing to previous 0.7.x stable release, API extension and fixes); optimizations in thumbnails display; preparations for 1.0-beta4 (released on 31st August)."
Wireless Applications
Thurman: Writing apps for the N900, part 1
Thomas Thurman has posted the first part in a series on writing GTK applications for the N900 device. "Now, theres two important things you have to consider when porting or building an app on the N900. One of them, which weve just mentioned, is that sometimes there are widgets which dont exist on the desktop, because they work in ways which are better adapted to life on a phone. The other is that theres a whole ecosystem of programs on the device with which we must play nicely."
Thurman: Writing apps for the N900, part 2 - packaging
Thomas Thurman continues his series on writing GTK applications for the N900. In this installment, he looks at packaging issues, but also puts to rest some concerns expressed about his previous post: "If you want to write Qt applications, you can write them now under Maemo 5 and they'll run; if you write GTK applications now, they will still run under Maemo 6 when it comes out. The GTK libraries won't stop shipping with Maemo just because Qt becomes the primary toolkit."
Languages and Tools
Caml
Caml Weekly News
The September 8, 2009 edition of the Caml Weekly News is out with new articles about the Caml language.
Java
IcedTea6 1.6 released
Version 1.6 of IcedTea6 has been announced, it includes a new feature, a bunch of security updates and some bug fixes. "The IcedTea project provides a harness to build the source code from OpenJDK7 using Free Software build tools. It also includes the only Free Java plugin and Web Start implementation, and support for additional architectures over and above x86, x86_64 and SPARC via the Zero assembler port."
Jato 0.0.1 - a simple JIT-only virtual machine for Java
Version 0.0.1 of Jato has been announced. "Jato is a JIT-only virtual machine for Java that can run some simple programs under GNU/Linux on modern 32-bit x86 CPUs. A port to the x86-64 machine architecture is currently being developed. Jato depends on GNU Classpath to provide core Java runtime classes. The VM is licensed under the GPLv2 with the GNU Classpath linking exception which makes embedding Jato to third-party applications possible."
Python
Distribute 0.6.1 released
Version 0.6.1 of Distribute has been announced, it includes several bug fixes. "Distribute is a friendly fork of the Setuptools project."
PyBindGen 0.12 released
Version 0.12 of PyBindGen has been announced, it includes new capabilities and bug fixes. "PyBindGen is a Python module that is geared to generating C/C++ code that binds a C/C++ library for Python. It does so without extensive use of either C++ templates or C pre-processor macros. It has modular handling of C/C++ types, and can be easily extended with Python plugins. The generated code is almost as clean as what a human programmer would write."
Pydev 1.5.0: Pydev Extensions open sourced
Version 1.5.0 of Pydev has been announced. "Today, Aptana is proud to announce that Pydev and Pydev Extensions have become a single plugin, with all the available contents open source (and freely available for anyone) in the 1.5.0 release (it's the same as 1.4.8 but with all the code open source). With that, Aptana believes in providing a better service and growth path for Pydev (which will still be actively maintained by Aptana), enabling anyone to provide contributions to the previously closed source product, while providing its Cloud customers a better service."
Python Keyring Lib v0.2 released
Version 0.2 of Python Keyring Lib has been announced, it includes bug fixes. "The Python keyring lib provides a easy way to access the system keyring service from python. It can be used in any application that needs safe password storage."
Sphinx 0.6.3 released
Version 0.6.3 of Sphinx has been announced. "I'm proud to announce the release of Sphinx 0.6.3, which is a bugfix-only release in the 0.6 series. Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents consisting of multiple reStructuredText source files)."
TestFixtures 1.6.1 released
Version 1.6.1 of TestFixtures has been announced. "This package is a collection of helpers and mock objects that are useful when writing unit tests or doc tests. This release sees the following changes: - @replace and Replacer.replace can now replace attributes that may not be present, provided the `strict` parameter is passed as False. - should_raise now catches BaseException rather than Exception so raising of SystemExit and KeyboardInterrupt can be tested."
Tcl/Tk
Tcl-URL! - weekly Tcl news and links
The September 2, 2009 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.
Page editor: Forrest Cook
Next page:
Announcements>>
