<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; ">Thanks everyone so far for your feedback. What I am doing is starting with analyses of most perl API and a few applications - covering most things on CPAN and more.<DIV><BR><DIV><DIV>On 14/03/2006, at 17:31, Gerard . wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite">I would want it to be just like <A href="http://flickr.com">flickr.com</A>, with some slick AJAX features :)<BR></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV>What I am trying to do has no interface at all. It is purely all the backend - resize, rotate, get information, organise, group together into albums, search etc.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Then once you have the API you can do the following:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>* Write a GUI - give you cool access to those features, very easy</DIV><DIV>* Write a Web Program - that has flickr / AJAX like features.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The DBI of Albums</DIV><DIV>================</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>If you know DBI, this is soft of a summary for what I want.</DIV><DIV>In theory then if we write a cute GUI then if someone wants to manage their code with Gallery Remote or FLICKR or Local Disk or common MySQL type systems - they just change the driver and it all still works.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The Document</DIV><DIV>=============</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The big thing my document is covering - should have it out in draft tomorrow - is reviewing the requirements, limitations of existing systems. As an example, I have found some modules (like Apache::Gallery) which just manage the images and produce XML - so that I can completely separate the HTML &amp; JS &amp; AJAX et al from the images, resizing etc.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>But even that has one step not far enough removed... Ideally the code would look like this...</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>Gallery API<SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Manage the files, rename, delete, metadata, search, resize, caching of thumbnails etc</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>Gallery API to XML</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Find a nice XML format for describing Gallery - there is already some out there</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN> <SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>  and convert between</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>Apache Gallery Module</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Manage the URLs - so you can turn a URL into an Album or Picture</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Manage the actual pictures - so you get a view of any size of image</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- via Apache - manage the access control</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>This is one of those important ideas when it comes to reuse of code </DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>Web, Apache and Security - for example, you may want to make it</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>so that only logged in users can see the full size version - or the version</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>without a watermark.</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>You should use Apache to do this - not your own security.</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>However - in Apache, you pretty much require URLs to do that.</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                        </SPAN>This needs to be considered</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>Apache CGI or XSL or JSP or PHP or ...</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Provide the interface</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Turn the XML into XHTML 2 or XHTML 1 or HTML 4</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Add JavaScript, call back AJAX etc</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Now of course - that is just one model. By doing the break up above we can reuse the components like this...</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>* Write a Catalyst Application - with NO Apache !!!</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse Gallery API as is</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse Gallery API to XML as is</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse the XSL from the last stage - probably as is</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>* Write a GUI that views the system directly from the disk</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse the Gallery API as is</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">        </SPAN>* Write a GUI that runs remotely - maybe even a Java Applet</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse the Gallery API as is</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse the Gallery API to XML as is</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>- Reuse the Apache Gallery Module as is</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>This allows an object to deal with the data by only doing REST</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>style XML requests.</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>Of course this is also the basis of AJAX so you get even</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>more reuse if you want to build a complicated Client side AJAX</DIV><DIV><SPAN class="Apple-tab-span" style="white-space:pre">                </SPAN>based API</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>What I am describing here is nothing new in the application world, but we don't develop like that in the web world.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>But what I want here is just step one - the Gallery API.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The rest will follow naturally :-)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Scooter</DIV></DIV></DIV></BODY></HTML>