{"id":551,"date":"2008-06-12T14:14:02","date_gmt":"2008-06-12T04:14:02","guid":{"rendered":"http:\/\/www.somethinkodd.com\/oddthinking\/?p=551"},"modified":"2008-12-03T00:44:12","modified_gmt":"2008-12-02T13:44:12","slug":"online-photo-site-stage-2-clean-requirements","status":"publish","type":"post","link":"https:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/12\/online-photo-site-stage-2-clean-requirements\/","title":{"rendered":"Online Photo DB: Stage 2 &#8211; Clean Requirements"},"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>I recently posted some <a href=\"http:\/\/www.somethinkodd.com\/oddthinking\/2008\/06\/10\/requirements-for-an-online-photo-site\/\">loose requirements<\/a> for selecting my next online photo database size. The requirements generally included rationales, where it wasn&#8217;t obvious.<\/p>\n<p>Stage Two: clean up the requirements, categorise, prioritise and number them.<\/p>\n<p>Voila.<\/p>\n<table class=\"simple\">\n<tr>\n<th>Category<\/th>\n<th>Id<\/th>\n<th>Requirement<\/th>\n<th>Priority<\/th>\n<\/tr>\n<tr>\n<th rowspan=2>General<\/th>\n<td>GEN1<\/td>\n<td style='text-align: left;'>Accessible by a typical web-browser<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>GEN2<\/td>\n<td style='text-align: left;'>Active development of new features<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<th rowspan=3>Ownership<\/th>\n<td>OWN1<\/td>\n<td style='text-align: left;'>Ownership of photos is retained by me.<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>OWN2<\/td>\n<td style='text-align: left;'>Future-proofed against money running out: mine or yours<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>OWN3<\/td>\n<td style='text-align: left;'>Ownership of meta-data is retained by me.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<th rowspan=17>Cataloguing<\/th>\n<td>CAT1<\/td>\n<td style='text-align: left;'>Photographs grouped into albums by event<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>CAT2<\/td>\n<td style='text-align: left;'>Photographs tagged with people<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>CAT3<\/td>\n<td style='text-align: left;'>Photographs tagged with locations, objects, activities<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT4<\/td>\n<td style='text-align: left;'>Performers tagged with real and stage names.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT5<\/td>\n<td style='text-align: left;'>Attribution of photographer details<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT6<\/td>\n<td style='text-align: left;'>Attribution of copyright owner&#8217;s details<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT7<\/td>\n<td style='text-align: left;'>Rating of photographs<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT8<\/td>\n<td style='text-align: left;'>Sorting\/Filtering by rating<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>CAT9<\/td>\n<td style='text-align: left;'>Albums grouped by type<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT10<\/td>\n<td style='text-align: left;'>Albums grouped by date<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT11<\/td>\n<td style='text-align: left;'>Areas or points of photograph tagged<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT12<\/td>\n<td style='text-align: left;'>Simple contact management of subjects<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT13<\/td>\n<td style='text-align: left;'>Hidden fields on contacts to distinguish like-named people<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT14<\/td>\n<td style='text-align: left;'>Tagging of anonymous people to enable searching<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT15<\/td>\n<td style='text-align: left;'>Corrections to names update everywhere<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT16<\/td>\n<td style='text-align: left;'>Attribution of copyright details<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>CAT17<\/td>\n<td style='text-align: left;'>Control over (default) ordering<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=8>Searching and Linking<\/th>\n<td>S+L1<\/td>\n<td style='text-align: left;'>Link to other photos with same tag within an album<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>S+L2<\/td>\n<td style='text-align: left;'>Associate URLs with subjects, that are displayed.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>S+L3<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across my albums<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>S+L4<\/td>\n<td style='text-align: left;'>Search of tags by keyword<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>S+L5<\/td>\n<td style='text-align: left;'>Cross-promotion of other albums and sites.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>S+L6<\/td>\n<td style='text-align: left;'>Link to other photos with same tag across other photo sites<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>S+L7<\/td>\n<td style='text-align: left;'>Search of album names by keyword<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>S+L8<\/td>\n<td style='text-align: left;'>User-generatable URLs to search tags by keyword<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=7>Community<\/th>\n<td>COMM1<\/td>\n<td style='text-align: left;'>Multi-user Tagging<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM2<\/td>\n<td style='text-align: left;'>Notifications of appearance in photos<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM3<\/td>\n<td style='text-align: left;'>Comments permitted<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM4<\/td>\n<td style='text-align: left;'>Notification of comments<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM5<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for comments<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM6<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for subjects<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>COMM7<\/td>\n<td style='text-align: left;'>RSS or Atom Feeds for new photos<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=7>Photoquality<\/th>\n<td>PQ1<\/td>\n<td style='text-align: left;'>Web-quality images shall be displayed by default.<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>PQ2<\/td>\n<td style='text-align: left;'>Print-quality images shall be available.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PQ3<\/td>\n<td style='text-align: left;'>Automatically generated thumbnail and web-quality versions.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PQ4<\/td>\n<td style='text-align: left;'>Archive-quality images shall be stored.<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>PQ5<\/td>\n<td style='text-align: left;'>Custom thumbnails (e.g. choosing to crop over shrinking.)<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>PQ6<\/td>\n<td style='text-align: left;'>Support for short video<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>PQ7<\/td>\n<td style='text-align: left;'>Support for long video<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=6>Performance<\/th>\n<td>PERF1<\/td>\n<td style='text-align: left;'>Quota > 0.5 TB, if any<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PERF2<\/td>\n<td style='text-align: left;'>Low-cost<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PERF3<\/td>\n<td style='text-align: left;'>Fast response time<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PERF4<\/td>\n<td style='text-align: left;'>Scale to thousands of tags<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PERF5<\/td>\n<td style='text-align: left;'>< 1 minute face-time per photograph<\/td>\n<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PERF6<\/td>\n<td style='text-align: left;'>Free<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=3>UI<\/th>\n<td>UI1<\/td>\n<td style='text-align: left;'>Forward\/Backward navigation between photos in album.<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>UI2<\/td>\n<td style='text-align: left;'>Slideshows<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>UI3<\/td>\n<td style='text-align: left;'>Display of many thumbnails at once<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=3>Privacy<\/th>\n<td>PRIV1<\/td>\n<td style='text-align: left;'>Their email address should never be published on the web.<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>PRIV2<\/td>\n<td style='text-align: left;'>Registration and logging in not required for general use.<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>PRIV3<\/td>\n<td style='text-align: left;'>Robust privacy features for photographs<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<th rowspan=4>Workflow<\/th>\n<td>WF1<\/td>\n<td style='text-align: left;'>Hint to original location on my harddrive<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>WF2<\/td>\n<td style='text-align: left;'>Auto-complete or partial search on tags during input<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<td>WF3<\/td>\n<td style='text-align: left;'>Read EXIF data from image<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>WF4<\/td>\n<td style='text-align: left;'>Support unpublished draft state <\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<th rowspan=3>Migration<\/th>\n<td>MIGR1<\/td>\n<td style='text-align: left;'>API to add photos<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>MIGR2<\/td>\n<td style='text-align: left;'>API to add tags<\/td>\n<td>Critical<\/td>\n<\/tr>\n<tr>\n<td>MIGR3<\/td>\n<td style='text-align: left;'>Tags can be non-specific to areas of photo<\/td>\n<td>Important<\/td>\n<\/tr>\n<tr>\n<th rowspan=2>Metrics<\/th>\n<td>METR1<\/td>\n<td style='text-align: left;'>&#8220;How many visitors?&#8221; metric<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<tr>\n<td>METR2<\/td>\n<td style='text-align: left;'>\u00e2\u20ac\u0153How long does a visitor stay?\u00e2\u20ac\u009d metric<\/td>\n<td>Desirable<\/td>\n<\/tr>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Stage Two: clean up the requirements, categorise, prioritise and number them.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_s2mail":"","footnotes":""},"categories":[31],"tags":[284,48,71,95],"class_list":["post-551","post","type-post","status-publish","format-standard","hentry","category-geek","tag-online-photo-database","tag-photography","tag-requirements","tag-web"],"_links":{"self":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/551","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=551"}],"version-history":[{"count":2,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"predecessor-version":[{"id":824,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/posts\/551\/revisions\/824"}],"wp:attachment":[{"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.somethinkodd.com\/oddthinking\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}