With the release of Shotwell 0.6 coming up, we’ve started the process of updating documentation. In addition to Shotwell’s familiar user documentation, which Allison has been diligently cranking away on to great effect, there’s also the Architecture Overview, a technical document that describes Shotwell’s underlying design. Of more interest to programmers than users, the Architecture Overview is the go-to document for understanding how all of Shotwell’s pieces fit together. Because I wrote a lot of the publishing subsystem, it fell to me to document it for the Architecture Overview. And as I was writing up my description of the publishing subsystem’s design earlier today, I realized something: publishing is ready for prime time.
What I mean by this is that if you’re a software developer and there’s a web service you’d like to publish photos to that’s not supported in Shotwell right now (SmugMug and Zooomr come to mind), then building support for it into Shotwell shouldn’t be too hard. There is one major caveat: the service you’re interested in supporting must provide a REST interface. But if that key requirement is met, you should be able to adapt the Shotwell publishing system to your needs in no time.
Adding new publishing services will get easier once we have a dynamically-loadable plug-in system in Shotwell (see ticket #182), but even today it’s straightforward. If you’re interested, start by scrolling through the “Photo Publishing” section of the Architecture Overview. Once you get a feeling for the classes the make up a typical web connector and how they interact, you’re not far from subclassing them for use with your own web service.
If you do end up building your own web connector in Shotwell, by all means send us a patch. Pending a code review, we’d love to include it in the next version of Shotwell!