Shotwell Architecture Overview
Sections
- User Interface
- Data Structures
- Importing
- Photo File Formats
- Photo Pipeline
- Photo Editor
- Thread Model
- Pixbuf and Thumbnail Caching
- Database
- Commands and Command Manager (Undo/Redo)
- Photo Publishing (Web services)
- Logging
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.