Aug 252009

As part of my forays into digital photography on a professional level – I will be trying to replicate to the highest possible degree (and exceeding where possible) the tools and equipment used by our non-free software using friends in the windows and mac worlds, particularly photoshop and it’s associated tools.

Now to do this, I will be evaluating a number of tools and seeing how they fit in as replacements. I will blog the results and the methods I use and this will lead to hopefully a series of good howtos for the beginner photographer using GNU/Linux and free software. Since I’m a beginner myself and this is a learn-as-I-need-things series it will be on  a lower level than most tutorials out there, and will also act as my own reference documentation in the future.

With this intro out of the way – let us start part one, working with RAW format images.

Now first of all the question should be answered: what is a raw image and why use it ? After all, almost every digital camera shoots in jpeg format by default right ? This is true, but real photographers override this with good reason. RAW means the image gets dumped as it’s read by the camera’s censor with the maximum amount of data stored. JPEG is in fact just about the worst format for storing images in anyway as it’s a lossy-compression. You will want to save your web-published pictures into jpeg, but you will not want to work with it yourself or store your own copies this way. RAW images are also refered to as a “digital negative” as they afford you a lot of the power that film photographers had working on negatives… and then some.

But there is a catch – there is no standard on how RAW images are stored, each camera brand uses it’s own format and sometimes it even changes between models. The good news is that for GNU/Linux users there is a very good library that can read and manipulate RAW images known as libdcraw (for DigitalCamera RAW), all the tools we use for RAW work are based on dcraw. DCRaw supports a massive selection of camera formats and virtually every common one including those used by Nikon and and Canon are fully supported. DCRaw is included in most distributions, and since it’s a dependency of the other tools here, should be installed automatically if you have it.

Now the first issue with RAW images is viewing them, and viewing them in bulk. Opening them one-by-one is not a good way to go through a set and decide which to keep, before starting to edit. The good news is that the current version of digikam includes full support for dcraw and can view them easily as can KDE4’s showphoto (which is a one-by-one tool integrated with digikam as well). Digikam makes a very solid replacement for photoshop’s “bridge” program and includes a massive amount of extra features of which I haven’t explored the half.

Where it falls a bit short is the manipulation of RAW data. Adjusting light levels and such – it includes a tool to do this, as well as a batch RAW-converter (so when you’re done editing you can rapidly export say web-jpegs of all the final results) but the manipulation tools was a bit… well clunky for me. Not knowing exactly the details of all the options you can do on RAW files, I need something that lets me play quite easily with it. It is also not integrated into an image editor which makes the next stage hard – now you need to edit the RAW file, then save it as something else (like TIFF) before you can use most image editors to work on the image itself.

Well, gimp is obviously the tool of choice for image editing. It’s powerful and feature-rich and while it doesn’t work like photoshop – it can do the vast majority of what photoshop can (I am quite certain it can do everything the beginner photographer will need for some time). I suggest reading a good gimp tutorial to learn it if you don’t know it (the good news is, I do know it quite well since I’ve been using it for things like logo designs for years). Even so I will be brushing up with some new tutorials to sharpen up my skills. I just learned today for example (thanks to a blogpost that showed up in my RSS reader) that gimp can read and use photoshop brushes.

But, here’s the catch: gimp doesn’t natively support libdcraw and thus cannot work with raw images. Free software to the rescue, I found a lovely gimp plugin called UFraw which handles this in much the same way photoshop does. Opening a raw image first loads it into the UFRaw interface which is just like it’s photoshop cousin (UFRaw also has a stand-alone version) – I will be adding a port for it to kongoni today but I don’t know how well it’s take-up in other distro’s are, it’s quite easy to build if you follow the instructions on the site though.

It actually supersedes most other raw tools because it uses the single-library nature of libdcraw to gain some real power. For example it can create and use nikon curves on images taken with non-nikon cameras (whatever that means…).

So  once you install it, you open a raw file in gimp and bang – here’s your raw manipulator. You do whatever adjustments you want, and click Okay… and it then exports this as pure bitmap data and you get a normal gimp window where you can proceed with your touch-up work, and save the final result in whatever format you wish.

A note on that last point. The advice from books and other photographers agree: for your own copies, once you are done with the raw, save as TIFF format. If you want to save some disk-space, use the loss-less LZW compression (which is free software by the way). This means you can always come back later and work on the touch-up level, you have a high-quality image for exporting for print or other purposes etcetera and it takes a lot less space than the RAW files do.

While jpg continues to rule the web – I prefer to export my web images in png format, it’s more powerful far less lossy (for similar compression ratios) and not encumbered by patents.

Thus we have now set up the first part of our digital darkroom, we can browse and manipulate the raw images from our cameras, and get them to a touch-up ready point. As I learn some tricks of the trade about touch-ups, I will be sharing this in part two.

Feb 232009

Okay, bad puns aside – it’s true – there is a public release of kongoni you can try out !

I’ve let everyone know I can think off but please spread the word mmkay.

I paste the release anouncement below:

Kongoni Linux 1.12.2 Baseline2 (Aristotle) Released.

The Kongoni Linux project has released the first public baseline of their GNU/Linux operating system, codenamed Aristotle. Kongoni is the Shona word for GNU the same animal that inspired the name of the GNU operating system – and thus literally translates as GNU Linux.

The idea of a baseline release is itself a Kongoni innovation, a way to establish a common working platform for the further development of the system. A previous baseline release was made available only to current developers of the system while this second baseline is being made available to the public at large. This will also be the last baseline release kongoni does and from it we will begin a traditional release method through alpha, beta and stable releases.

The baseline release is thus not intended for end-users except as a curiosity but rather for interested developers and GNU/Linux experts. It does not fully represent the ideas or unique features of kongoni, but instead a platform on which those ideas can be created. Because the baseline is already a fully installable system, developers from all over the world can work on a common platform with the full core setups in place, without the need for expensive virtualization infrastructures often used by other large distributions.

With this baseline release, our focus will shift towards rapidly growing the selection of software in our ports tree and stabilizing the software in the system as we work toward our first full release. Nevertheless the system is in a/etc/opt/samba/ usable state and several of the developers are already using it as their primary operating systems, it does however almost certainly contain significant unknown bugs and we ask that people who try it please report their experiences and any bugs found in the forums on our website (

The name “kongoni” represents the spirit of the project reflecting both it’s African origins and it’s strict FSF compliance as Kongoni is a truly free distribution. FSF Chairman, Richard Stallman was involved in the discussions that led to the foundation of the project and his input sought on critical decisions to ensure the system really is free software. Although Kongoni originated in Africa it’s focus and development community is international and it aims to be easily usable across all locale’s. Kongoni is a pure community effort with no profit motive, done by developers to satisfy their own needs and desires in an operating system, and share the results of that work with others who have similar needs.

Technically Kongoni follows the design spirit of the BSD-Unix systems with a simple and elegant underlying design based on Slackware (the most BSD inspired Linux distribution) to which it adds a slick and powerful KDE4.2 desktop and a dependency tracked ports tree for package management. The system is designed to be very easy to remaster into custom versions so that users could easily build and replicate installations of various kinds with prebuilt custom setups and desktops.

Ports represent a powerful way to distribute software as a set of tools that automatically fetch the sources of the program and then compile it locally, this is more bandwidth friendly for users (source code is usually smaller than prebuilt packages). This benefit is particularly useful in Africa where bandwidth is expensive, and since Kongoni came from Africa this was a major concern. Ports also allow power-users to tweak the compilations and setups of
their systems to their liking while ensuring even normal users get the absolute best possible performance from their applications by automatically optimizing their software for their specific setup and to work with their own selection of other software already installed.A final advantage of ports is that they are inherently more portable than prebuilt packages allowing Kongoni to target multiple CPU architectures with only small sets of system specific changes in the ports rather than massive duplication of effort. Currently the operating system targets intel compatible architectures and has native versions for both 32-bit and 64-bit variants of these architectures which share a common ports tree.

The system is shipped as an installable and runtime modifiable live CD this allows users to test it’s compatibility with their hardware and try out the desktop and software prior to committing to an installation. Being runtime modifiable means that future versions could automatically check for patches online and allow users to trial such patches on the CD and then install a system with them already applied.

The version number 1.12.2 should be read as: Kongoni release 1 compatible with Slackware 12.2. The 64-bit version is built on Bluewhite64 which follows slackware versioning. Each release will be fully upstream compatible with the version of slackware/Bluewhite64 it is built against. This means that any correctly built slackware package should run on Kongoni, and any package built from a kongoni port should run on the same version of slackware (provided the
dependencies are manually resolved because slackware lacks kongoni’s dependency resolution). The 64-bit version also has 32-bit compatibility support built-in to allow the running of programs for which 64-bit versions are not obtainable.

Kongoni can be downloaded from our website at, various mirrors and from bittorrent. On our site you can also find other Kongoni community resources including forums for end-users, developer and announcement mailing lists, documentation and current project news.

We as the Kongoni development community would like to invite all interested people to download a copy, play with it and report their experiences -or if you like it, perhaps join our community and help us build something truly wondrous.

The release is available via http and ftp on the following URLs (these URLs are load-balanced across a number of mirrors): (32-Bit native) (64-Bit native)
And also via bittorrent through the torrent files at these URLs: (32-Bit native) (64-Bit native)

Jan 282009

Well I have two pieces of important news about kongoni, the first is that the baseline has reached structural completeness. The story on the kongoni site has full details.

The other is that Hannes has completed the website design for us. You can see the draft here, and expect it to go live in the next few days.

Finally, thanks to John Nichols, we now have our first official mirror of the kongoni ports tree live at