Gallery3: First impressions

It’s pretty obvious that ditzie (at least the Alpha and Beta sites) use an open source image gallery package to support user provided images and image sets. The particular image gallery package I’m using is actually called “Gallery,” and I’m running what is currently the stable release (version 2.x). Gallery is one of the mast popular image gallery software packages around, and rightfully so. It’s stable, it’s feature rich, it’s easy to use, and it’s free. So when the next major version of Gallery went public (version 3.x is now in the “release candidate” stage), I decided to have a look.

What follows are my initial impressions of the new version. This is not a comprehensive review by a long shot. This is an overview of my initial impression of integrating Gallery 3 into ditzie.

Version 3 of Gallery release represents the direction that the Gallery project is moving in. If I have any intention of advancing ditzie and keeping it current, secure, modern, etc (and I most certainly do), then I need to make sure my components are up-to-date and at their best. This may or may not mean moving to Gallery 3 in the future, but it does mean that Gallery 2 will eventually become deprecated and stale, so I can’t expect to live on it forever. Since G2 has served me so faithfully, it makes sense that G3 should be the most likely replacement for ditzie’s back-end when it comes time to replace.

Right off the bat, and before even downloading it, I could tell that G3 is a thoughtfully designed bit of software. The Gallery website talks in depth about the philosophy of designing the new version. The user community was clearly involved in its construction, a professional software security team was consulted, etc. So, those are all points in its favor. The biggest negative point came after the install. The triviality of the installation as well as the default jelly-bean-esque theme (all those CSS-intensive rounded corners) are actually a turnoff to me. They tell me that G3′s target audience may not include me in the same way that G2′s did. The software simply looks less oriented toward power users and integrators. And if there’s anything I’m looking for, it’s integration friendly software.

G2 has one feature which appeals to me more than any other: it is built with a mentality that much open source software seems to lack. The ability to embed it and make it play nice with other applications is a core part of it’s design. And it is this feature which lead me to select G2 for use with ditzie in the first place. I can’t tell you how many times I wished that an application had an API (programming interface) which would allow me to easily integrate it with something I was building. I’m constantly discovering that the forum software I like won’t talk to a user database I already have, or the wiki package I want to use can’t embed its output into the CMS I’m using. Oh sure, it’s always possible to make things work by tearing the code apart and rebuilding portions of it, but there’s little software “on the market” that makes integration as friendly as G2 does. So, when it came time to stick an image gallery back end onto ditzie, I went immediately to the package that I knew would allow me to just make some API calls when I needed to load images. Bang, zoom, done. The portion of ditzie’s code that talks to Gallery is about two dozen lines long. Both applications can be maintained separately, and when one needs to be updated, the link between them continues to function without a major overhaul.

G3 uses a completely different mechanism for embedding than G2 did. In the later, embedding is done on a code level and it is possible to completely integrate the two applications. The entirety of G2′s guts are exposed via its code API and it is easy for a developer to make G2 and his own application behave like one. G3, on the other hand, uses a REST interface to provide a means for content integration rather than code integration. At first, this was a real put-off for me. But when I stopped to really think about it, the idea began to grow on me. ditzie doesn’t really need to be fully integrated with its gallery back-end, it really only needs access to the content. Likewise, building ditzie as a REST client opens up some interesting possibilities, like integrating with other web services like Flickr and Twitter.

There’s a lot of work that needs to be done to ditzie anyway. The back end needs its own database, the front end wants a lot more features, the guts could be cleaner, and so on. Changing ditzie’s code to support G3′s way of integrating content would represent a fundamental change to the way the code works, but it’s certainly something that is do-able. And evaluating G3 has convinced me that it’s also something which might be necessary. I’m still not sure how much I actually like G3 (there are a lot of parts of the GUI that I just find irksome), but making the move to support it actually means removing the integration which ties me to it. And that, I think, might make the whole thing seem like a good idea.