I’ve done a ton of programming this week outside of work. I feel like I’ve had at least five browser tabs open for Launchpad at all times! If you’re not familiar with the site, it’s a code hosting service for open source projects, most notably Ubuntu Linux.
I’ve done some Esperanto translations on Launchpad prior to this week. I translated a large portion of Akregator (RSS/Atom feed aggregation for KDE) and a few others. I’ve also filed and added to a bunch of bugs, many of which were cleaned up by the recent One Hundred Paper Cuts bugfixing effort by the Ubuntu development team.
This week, I was abnormally active. I had some downtime here and there at work, plus some open nights, so I took advantage of this time to make significant contributions to three projects: Gwibber, Astrid, and Celtx.
Gwibber is a microblogging client for microblogging services such as Twitter, Identi.ca, and Jaiku. It also supports Flickr, BrightKite, FriendFeed, Facebook, and more, including generic RSS and Atom feeds. It’s written in Python by Ryan Paul (@segphault) of Ars Technica fame.
I had two and a half contributions this week. One is a patch addressing bug #364303, to add linkification of stock ticker symbols, denoted by a dollar sign followed by the ticker symbol, e.g. $GOOG. Clicking on a linked symbol will launch the browser and point it to Google Finance. Originally, it linked to StockTwits, but that site refuses to support OTC stocks.
The second contribution is a complete Esperanto translation of the program. I have mixed feelings on translating programs since most Esperantists would be using their computer in their native language. I decided to do it because, well, Gwibber has just a few more than 115 strings, so why not? It took me approximately an hour and a half, and it was well spent.
That half contribution is a committed, but as-of-yet unproposed/merged patch to fix bug #364322, wherein Gwibber doesn’t load Identi.ca/Laconi.ca groups at all. The problem is that the constructors for identica.SearchResult and laconica.SearchResult expect a TwitterAPI-compatible dictionary, but are passed a standard RSS feed dictionary instead. identica.Client.get_group() hits an RSS feed instead of an API function, because the Groups API in Laconica is not yet finalized. This causes Gwibber to throw an Exception–it’s caught and displayed, but the results aren’t loaded. I modified identica.Client.group(), which calls get_group(), to instead call identica.Client.get_search() and load the search results for the group name. It’s not a clean result set, though, because Laconia while searching strips the “!” used to denote the group name.
Hopefully the API will make it into Laconica 0.8.1 (the next release, mid-to-late September if they release on their typical schedule), I’ll modify the functionality to use the API instead and it’ll be much cleaner and yield more accurate results.
Astrid is a TODO list manager for Google Android. It synchronizes with the excellent Remember The Milk TODO list service and provides task reminders and such. I use it on my T-Mobile G1 and would certainly miss it if it were suddenly gone.
My contribution to Astrid was another (nearly) complete Esperanto translation. I left about 10% untranslated because, well, I needed to go to bed! Unfortunately, I realized approximately 3/4 through my translation that Astrid is unlikely ever to be on a platform which supports Esperanto. The chances of there ever being an Esperanto translation of Android are atomically small.
However, my work was not wasted. Launchpad’s Rosetta translation system permits projects to share their translation with other Launchpad projects, using a essentially a central database of translations. This enables projects to speed up internationalization by using existing translations which exactly match internationalize-able strings. While it’s unlikely that anyone will ever use Astrid in Esperanto, it is likely that another TODO list project hosted on Launchpad could benefit from my work in the future.
Celtx is an integrated media pre-production and screenwriting utility. I’ve used it for writing short plays for classes and such. I’m using it now for a forthcoming project which I’ll eventually let out of the bag.
My contribution for Celtx, as the link above shows, has not been code or a translation, but a package for Ubuntu. This was the first time I’d ever build a Debian package (Debian packages are what Ubuntu, a Debian Linux derivative, uses to distribute programs).
A long-existing bug, #99965, requested that someone package Celtx from the source on its main web site. I took interest in it in November 2007, but my initial attempts to package it for Hardy (Ubuntu 8.04, released April 2008) were unsuccessful due to my inexperience with build systems and a lack of time/concentration. I revisited the task for Intrepid (Ubuntu 8.10, October 2008) and Jaunty (9.04, April 2009), but was too busy with my new job and other life happenings.
I painstakingly built Celtx from source manually several times before building a binary package myself without any help from the Debian packaging system’s helper scripts (debhelper, dh_make). It’s a pain in the ass because Celtx is based on Mozilla, the build process of which is not as straightforward as a
./configure && make && make install. However, once I had a working knowledge of the build process, I delved into debhelper and its kin and built a source package. I did it for Jaunty first, as that’s what version I’m running right now, but then I made some modifications here and there to convince Celtx to build on Karmic (9.10, due October 2009).
I’ve learned a ton about deb packages and about make, and I think I can consider myself a “packager” now, having done so.
I’m hoping that Celtx Studios, the company that produces Celtx, releases the source for version 2.0.2 soon. The 2.0.1 source is available, but out-of-date. I’d like to get 2.0.2 into Karmic, but it’s looking like 2.0.1 will have to do for now.
So, if you have an interest in media production and/or screenwriting, or wish to help test a new package for inclusion in the next version of Ubuntu, please, by all means, install my Celtx PPA for Ubuntu Jaunty or Karmic and test the crap out of the package. There are a few known issues on Karmic, but I’m not a C++ coder, so I don’t know what I’d even try to fix.
I look forward to participating more in the development of Gwibber. Because of my fiddlings with it, I’ve come to know the DVCS tool Bazaar (bzr) pretty well, as Launchpad and it are heavily integrated (hint: Canonical, developer of Ubuntu, also developed Launchpad and Bazaar!).
I know that I’ll keep translating. I’ve noticed that my vocabulary has grown a bit and I’m not using the vortaro (dictionary) as much. I still reference Traduku.net, Lernu!, and Komputeko frequently to get technology terminology and infrequently-seen words.