<?xml version="1.0" encoding="UTF-8" standalone="yes"?><oembed><version><![CDATA[1.0]]></version><provider_name><![CDATA[Occasionally Coherent]]></provider_name><provider_url><![CDATA[http://blog.bimajority.org]]></provider_url><author_name><![CDATA[Garrett Wollman]]></author_name><author_url><![CDATA[https://blog.bimajority.org/author/garrettwollman/]]></author_url><title><![CDATA[Is there a photo gallery app that doesn&#8217;t&nbsp;suck?]]></title><type><![CDATA[link]]></type><html><![CDATA[<p>I&#8217;m looking for a new photo gallery application, and I&#8217;ve been having terrible trouble finding one that is worth the disk sectors it&#8217;s written on.  I know something about writing such things, because I wrote the one I&#8217;m using now &#8212; but that was more than a decade ago, and it&#8217;s fragile, inflexible, unresponsive, slow, and hard to use.  (You can see many examples of its output at <a href="http://gallery.bostonradio.org/">my photo site</a>.  If the only photos of mine that you&#8217;ve seen are on this blog, you may be surprised to learn that I mostly <em>don&#8217;t</em> take pictures of my food.)  Most of the old gallery application&#8217;s faults can be traced to two design decisions that made sense twelve years ago, but don&#8217;t make much sense now: the gallery database is an XML document, and it&#8217;s processed using a suite of XSLT transformations to generate flat HTML files for the Web server.  Adding anything to the output &#8212; even a simple style sheet &#8212; is a fairly painful process, and making better use of the metadata stored in every image is impossible.  Even dealing with images that aren&#8217;t all the same aspect ratio is too painful to bother with, so I almost never crop even the most poorly composed images in the old system.</p>
<p>I&#8217;ve been on the look out for a replacement for a while now, and the need has gotten acute since I switched my photo workflow to my laptop (where I can run Lightroom) rather than the Perl script that I wrote to generate the XML file.  I have yet to find anything that looks even remotely acceptable.  Everything I&#8217;ve been able to find when I&#8217;ve searched lately has either been an add-on for a CMS that I&#8217;m not interested in using (any of them), or has been useless for anything other than a stock-photo business.  But maybe I haven&#8217;t been looking in the right place.  So here&#8217;s what I&#8217;m looking for:</p>
<ol>
<li><strong>Free Software.</strong>  Being able to share and modify the source code (the real source code, not some obfuscated blob) is an absolute requirement.</li>
<li><strong>Search-engine and mobile-friendly.</strong>  I need something that will adapt seamlessly to small screens, but without compromising full traversability for search engines.  This leads into:</li>
<li><strong>Real URLs.</strong>  Every photo has its own predictable, cacheable, bookmarkable, search-engine-database-compatible URL.  Because:</li>
<li><strong>Photos are the illustrations in a story, not the content of a slide show.</strong>  Most of the things I take pictures of look alike.  The entire value of the photo gallery is the connection of photos to the expository text and the metadata that describes the <em>specific</em> location and circumstances of each photo and its relationship to the others.</li>
<li><strong>Photos have titles.</strong>  A corollary to the previous point: since most photos look alike, the &#8220;filmstrip&#8221; metaphor is worse than useless.  The index page of a photo gallery is just that: an index, identifying the things being pointed to by name.  Nobody is looking at my photos for just any old picture of a four-bay Shively in radomes, a three-tower AM array, or an SAS Rubicon control surface.  There&#8217;s a specific facility they want to look at, and the index has to help them (and me) find it, and all the pictures related to it.</li>
<li><strong>Static data.</strong>  I do not want anything that involves server-side code running at request time (especially not PHP, which is not welcome on my server).  I&#8217;m perfectly happy to extract metadata, generate databases, and write static HTML/JSON/RDF/whatever at upload time &#8212; even better if the templating is done using the same JavaScript code for both dynamic/responsive views and the static HTML files.</li>
<li><strong>Metadata is good.</strong>  With one (significant) exception, all of the data needed to generate a highly featureful photo gallery is already embedded in the images.  Most are geocoded; all have titles and descriptions; they are keyworded for searchability; the people shown, when known, are identified.  The one exception is the desired order of presentation.  In my new workflow, the embedded metadata is the sole source of truth: anything else required to make a Web site from the images should be generated automatically from the embedded metadata (or else should be a static site-wide template).</li>
</ol>
<p>So, gentle readers: am I out of luck?  I asked this question on a general mailing-list at work, and got all of three responses (out of 1200 people on the list), all of which were of the form &#8220;well, $this kinda sorta does what you want, if you squint at it and you&#8217;re willing to write a lot of additional code to make it work&#8221;.  Do I have to implement this all myself (which will probably take another few years)?  Surely I cannot be the only person who has similar requirements.</p>
]]></html></oembed>