Thoughts and updates on open-source programming, C++, and GNOME

Monday, February 27, 2006

Cairomm in the wild

It looks like there's an application (actually a library, I guess) that's using cairomm already. According to its website:

Papyrus is a 2d C++ scenegraph library that utilizes the cairo library to perform drawing operations. In this respect, it is similar to the Gnome::Canvas library.

It's good to see people start using cairomm. Hopefully we'll get some good real-world feedback once more people start trying it out.

Sunday, February 26, 2006

Colorscheme for Debian

Thanks to Carlos Soto, there are now some initial Debian packages of Colorscheme. You can find them at See this mailing list post for more information. Thanks Carlos.

Thursday, February 23, 2006

cairomm API documentation

I've put up some cairomm API documentation for those that are interested. I haven't completely settled on that URL, though, so it may change in the future. Comments and suggestions are welcome.

Monday, February 20, 2006

Experimental colorscheme packages for Ubuntu Breezy

I took a little while this afternoon to sit down and try to teach myself a little about packaging software. I'm of the general opinion that software packaging should be left to the experts so that things can get done right. In fact, this is one of the things that makes Debian (and by extension, Ubuntu) great. The packages are all of high quality and available in a central repository. Before moving to Debian I was a Red Hat user (around version 9 -- before Fedora and the extras improved things dramatically), so I'm well aware of the mess that comes from every user offering homemade packages on their websites.

Nevertheless, I've been getting a fair number of requests from people who want to use colorscheme but don't have the necessary expertise to install it from source. And I'd really like to get more people using it and giving me feedback. So I've made a couple experimental colorscheme packages for Ubuntu Breezy (i386 and amd64). Hopefully this is just a temporary stop-gap measure until the software gets packaged for more distributions.

I make no guarantee that the packages will even work. Nor will I guarantee any support for them (remember, I don't actually know what I'm doing -- I just whipped those up in an afternoon). So I don't particularly condone using them, but if you want to use the application and can't get it installed from source, it's an option.

Saturday, February 18, 2006

Colorscheme 0.3.90 Released

Well, I've finally made another release of Colorscheme. I had put it on the back burner for a bit while I was doing a bunch of work on cairomm and gtkmm. But now I'm back working on it with a vengeance. A big part of why I'm excited to be hacking on Colorscheme again was my decision to switch from subversion to git. Subversion is a decent program and a huge improvement over CVS, but it just doesn't feel quite right. I feel like I have to work around it. With git, I've felt much more comfortable. Granted, it's pretty rough yet in spots, but it's come a long way from what I thought it was going to be. The main motivation for moving Colorscheme to git (instead of bzr, which I would have otherwise chosen) was the fact that the cairo library is moving to git, so I wanted to get a feel for how it worked, with a view toward moving cairomm there as well.

I still have a bunch of things to figure out -- the most important being: How do I host the git repository so that it can be easily accessed by other people? Right now I'm just rsyncing my local repository to the download/release area, so theoretically people can clone my repository over plain http and work on it locally, but there's no good way for potential contributors to commit to it or to host their own repositories at the project site. Granted, this is sort of a theoretical issue yet, since I don't have many contributors other than translators at the moment, and repository access isn't as critical for translators.

But back to the topic at hand: the new Colorscheme release. There's a bunch of new stuff in this release, including:

  • Added basic drag and drop support
    • You can drop from any application that provides an application/x-color target (such as the Gimp color selector)
    • You can drag a color from Colorscheme to any application that accepts a text target (e.g. Gedit) or an application/x-color target (e.g. the Gimp or the GNOME desktop background)
  • Added the ability to export your favorite colors list as a Gimp Palette file
  • Remembers your last viewed color and automatically loads it on startup
  • Remembers your window size between sessions
  • Added support for pasting a textual description of a color from the clipboard. Supported formats include hex string style colors (e.g. #FFFFFF) and all named colors that are understood by Gtk
  • Add support for selecting multiple colors in the favorites list for removing multiple colors at once
  • Removed dependency on GnomeVFS
  • Added dependency on GConfmm

This release is indended to be a preview release leading up to an official release of 0.4.0, so please test it out and report any bugs you find. Translations are very welcome as well.

Wednesday, February 08, 2006

Maintaining cairomm

I was asked recently by Murray Cumming whether I would be interested in becoming an official maintainer of cairomm, the C++ binding for the cairo 2D graphics library. I've been contributing pretty regularly to cairomm (and in fact, pretty much all of the changes between 0.4.0 and the upcoming 0.5.0 release were done by me).

Up until now, my main free software experiences have been as a user and infrequent bug reporter, and as a developer of my pet projects (see colorscheme). In the process of working on my colorscheme app, I learned a bit about the Gdk drawing API, and I didn't particularly like what I found. So I've been quite excited by the new API provided by cairo, and in an effort to learn to use cairo, I began contributing tutorials and documentation for gtkmm and cairomm, and eventually started contributing code.

So I accepted the position of co-maintainer at this point. At some point I may take over completely since Murray's got a ton of stuff on his plate. In any case, this is a pretty significant step for me, and I'm pretty excited about it. I've learned a lot in just the last year or so, and I expect I'll continue to learn a lot as I take on additional responsibilities with cairomm. Hopefully we can get cairomm into a good, stable state as soon as possible so that it can be used extensively in the next gtkmm release.