{"id":845,"date":"2008-12-04T10:59:13","date_gmt":"2008-12-03T23:59:13","guid":{"rendered":"http:\/\/www.somethinkodd.com\/oddthinking\/?p=845"},"modified":"2009-03-13T17:04:40","modified_gmt":"2009-03-13T06:04:40","slug":"online-photo-db-stage-4r-evaluation-of-gallery2","status":"publish","type":"post","link":"https:\/\/www.somethinkodd.com\/oddthinking\/2008\/12\/04\/online-photo-db-stage-4r-evaluation-of-gallery2\/","title":{"rendered":"Online Photo DB: Stage 4r &#8211; Evaluation of Gallery2"},"content":{"rendered":"<div class=\"aside\">This post is part of the <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/tag\/online-photo-database\/\">Online Photo Database project documentation<\/a>. Learn more about the project&#8217;s <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/12\/03\/online-photo-database-project-status\/\">current status<\/a>.<\/div>\n<p>Which <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/12\/online-photo-site-stage-2-clean-requirements\/\">requirements<\/a> does <a href=\"http:\/\/gallery.menalto.com\/\">Gallery2<\/a> meet?<\/p>\n<table class=\"simple\">\n<tr>\n<th>Id<\/th>\n<th>Pri<\/th>\n<th>Requirement<\/th>\n<th>Pass?<\/th>\n<td>Notes<\/td>\n<\/tr>\n<tr>\n<th>GEN1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Accessible by a typical web-browser<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>GEN2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Active development of new features<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Currently working on a total rebuild<\/td>\n<\/tr>\n<tr>\n<th>OWN1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Ownership of photos is retained by me.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>OWN2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Future-proofed against money running out: mine or yours<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>OWN3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Ownership of meta-data is retained by me.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Photographs grouped into albums by event<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Photographs tagged with people<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Spaces as delimiter is optional! Defaults to No.<\/td>\n<\/tr>\n<tr>\n<th>CAT3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Photographs tagged with locations, objects, activities<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Performers tagged with real and stage names.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Attribution of photographer details<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT6<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Attribution of copyright owner&#8217;s details<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT7<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Rating of photographs<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT8<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Sorting\/Filtering by rating<\/td>\n<td>Y?<\/td>\n<td style='text-align:left''>Album order can be set to by-rating, or overridden, on per album basis<\/td>\n<\/tr>\n<tr>\n<th>CAT9<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Albums grouped by type<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Subalbums<\/td>\n<\/tr>\n<tr>\n<th>CAT10<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Albums grouped by date<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Subalbums take priority, so you can&#8217;t do Cat9 and this. <\/td>\n<\/tr>\n<tr>\n<th>CAT11<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Areas or points of photograph tagged<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT12<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Simple contact management of subjects<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT13<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Hidden fields on contacts to distinguish like-named people<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT14<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Tagging of anonymous people to enable searching<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT15<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Corrections to names update everywhere<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT16<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Attribution of copyright details<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>CAT17<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Control over (default) ordering<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Link to other photos with same tag within an album<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Associate URLs with subjects, that are displayed.<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across my albums<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Search of tags by keyword<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Has separate concept of keyword and tag. Confusing.<\/td>\n<\/tr>\n<tr>\n<th>S+L5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Cross-promotion of other albums and sites.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>In description<\/td>\n<\/tr>\n<tr>\n<th>S+L6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across other photo sites<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Search of album names by keyword<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>S+L8<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>User-generatable URLs to search tags by keyword<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Almost &#8211; could probably fake it with mod_rewrite.<\/td>\n<\/tr>\n<tr>\n<th>COMM1<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Multi-user Tagging<\/td>\n<td>N?<\/td>\n<td style='text-align:left''>Can&#8217;t see way of permitting add, with moderation and without edit. Also, UI is too intrusive.<\/td>\n<\/tr>\n<tr>\n<th>COMM2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Notifications of appearance in photos<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Comments permitted<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Notification of comments<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Self-registration is a plugin &#8211; untested.<\/td>\n<\/tr>\n<tr>\n<th>COMM5<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for comments<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for subjects<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>COMM7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for new photos<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Web-quality images shall be displayed by default.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Print-quality images shall be available.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Automatically generated thumbnail and web-quality versions.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Archive-quality images shall be stored.<\/td>\n<td>Y?<\/td>\n<td style='text-align:left''>Upload limited to 2MB by my hosting provider. Modifiable? Workarounds exist. <\/td>\n<\/tr>\n<tr>\n<th>PQ5<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Custom thumbnails (e.g. choosing to crop over shrinking.)<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support for short video<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PQ7<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support for long video<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF1<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Quota > 0.5 TB, if any<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Low-cost<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Fast response time<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF4<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Scale to thousands of tags<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF5<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>< 1 minute face-time per photograph<\/td>\n<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PERF6<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Free<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>UI1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Forward\/Backward navigation between photos in album.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>UI2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Slideshows<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Advertising!<\/td>\n<\/tr>\n<tr>\n<th>UI3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Display of many thumbnails at once<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Configurable<\/td>\n<\/tr>\n<tr>\n<th>PRIV1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>Their email address should never be published on the web.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PRIV2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Registration and logging in not required for general use.<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>PRIV3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Robust privacy features for photographs<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Groups, ACLs<\/td>\n<\/tr>\n<tr>\n<th>WF1<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Hint to original location on my harddrive<\/td>\n<td>N<\/td>\n<td style='text-align:left''>Could make a custom field for automated process, I guess.<\/td>\n<\/tr>\n<tr>\n<th>WF2<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Auto-complete or partial search on tags during input<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>WF3<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Read EXIF data from image<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>WF4<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>Support unpublished draft state <\/td>\n<td>N?<\/td>\n<td style='text-align:left''>Permissions, I guess.<\/td>\n<\/tr>\n<tr>\n<th>MIGR1<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>API to add photos<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Schema available<\/td>\n<\/tr>\n<tr>\n<th>MIGR2<\/th>\n<td>C<\/td>\n<td style='text-align: left;'>API to add tags<\/td>\n<td>Y<\/td>\n<td style='text-align:left''>Schema available<\/td>\n<\/tr>\n<tr>\n<th>MIGR3<\/th>\n<td>I<\/td>\n<td style='text-align: left;'>Tags can be non-specific to areas of photo<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>METR1<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>&#8220;How many visitors?&#8221; metric<\/td>\n<td>Y<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<tr>\n<th>METR2<\/th>\n<td>D<\/td>\n<td style='text-align: left;'>\u00e2\u20ac\u0153How long does a visitor stay?\u00e2\u20ac\u009d metric<\/td>\n<td>N<\/td>\n<td style='text-align:left''><\/td>\n<\/tr>\n<\/table>\n<h3>Summary<\/h3>\n<p>Gallery2 surprised me by being much better than I expected. <\/p>\n<p>You see, last year, I did a quick and dirty evaluation of the self-hosted open-source solutions. Eventually, I decided I hadn&#8217;t given the decision enough thought, and returned to do this more formal evaluation (including third-party hosted solutions) <\/p>\n<p>During that early evaluation, I looked at Gallery2, spurned it, and chose <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/22\/online-photo-db-stage-4c-evaluation-of-coppermine-photo-gallery\/\">Coppermine<\/a> instead. I can&#8217;t remember the reasons, but when I went to evaluate it again, I was expecting to stumble across some fatal flaw that I saw last time.<\/p>\n<p>However, I didn&#8217;t. Gallery2 seems quite robust and feature-rich. It doesn&#8217;t fail any of the critical requirements and is in with a decent chance.<\/p>\n<p>Like all of the self-hosted solutions, it gains big points by letting me own everything.<\/p>\n<p>It offers a large range of plugins, so some of the Ns may turn out to be Ys. (Bonus points for the  plugin installation process: painless!)<\/p>\n<p>I find the default theme to be a little cluttered; lots of irrelevant text drawing focus from the photos. It has a lot of customisation options that somewhat helped. Some of the options sounded good, but didn&#8217;t appear to have any effect; I need to do more research there. <\/p>\n<p>I can see that some theme tweaking is going to be required.<\/p>\n<p>Tagging is done with a separate plugin. The question of &#8220;Are tags space-delimited?&#8221; was neatly side-stepped. They aren&#8217;t by default, but this can be easily changed. I had two issues with the tagging. Firstly, the &#8220;add tag&#8221; feature it is made too prominent; it is more clutter per photo. The other is there isn&#8217;t a way to let anonymous (or registered) users be allowed to nominate tag additions or deletions. you can only give them full control or none.<\/p>\n<p>Aside from that plugin issue, the permissions model is very robust. Registered users can be granted access to albums. Groups are also available, to simplify such administration. <\/p>\n<p><strike>I didn&#8217;t see any way for users to register themselves; it has to be done by an admin. I reckon there&#8217;s a good chance that a plugin exists for that.<\/strike> Self-registration is handled by a standard plugin, but I did not try it.<\/p>\n<p>The slideshow feature worked fine but included a surprise advert for some sort of advertising-funded slideshow plugin. Ugh, that has to go!<\/p>\n<p>I cannot see why I eschewed this for Coppermine.<\/p>\n<p><strong>EDIT<\/strong>: Corrected question about self-registration. It is handled by a standard plug-in, which I did not test.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Which <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/12\/online-photo-site-stage-2-clean-requirements\/\">requirements<\/a> does <a href=\"http:\/\/gallery.menalto.com\/\">Gallery2<\/a> meet?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[285,47],"tags":[284,48,376],"class_list":["post-845","post","type-post","status-publish","format-standard","hentry","category-photography-geek","category-review","tag-online-photo-database","tag-photography","tag-review"],"_links":{"self":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/comments?post=845"}],"version-history":[{"count":5,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/845\/revisions"}],"predecessor-version":[{"id":1009,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/845\/revisions\/1009"}],"wp:attachment":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/media?parent=845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/categories?post=845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/tags?post=845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}