Shotwell Architecture Overview

Sections

Language and Libraries

Shotwell is written almost entirely in  Vala (other languages are used only when necessary or expedient) and uses  Gee for all collection-handling. It uses  GTK as a portable toolkit. GTK itself relies on GLib, GDK, and GObject. Shotwell also uses  SQLite as its in-process database,  gPhoto for communicating with cameras, and  Exiv2 (via gexiv2) and, for a particular use case,  libexif to parse EXIF data. Shotwell uses GDK and  libraw to process photo files. (Shotwell does possess some JPEG and PNG parsing code.) Photo publishing uses  libsoup for communicating with various Web services and hosts  WebKit to allow the user to validate transactions in-process.

An understanding of these technologies is not required to contribute to the Shotwell project, but is useful when working with those subsystems.