Design

Foreword

Several media gallery projects exist out there, and we tried to see what was so different between them. If you let aside the language wars (PHP, Python (Django), ASP, Java), there are few differences between all gallery projects. Most have in common the following points:

  • Themable (you can change the HTML design)
  • Can import bunch of images
  • Automatically generates thumbnails

Some have advanced features:

  • Can import image archives
  • Have a fully asynchronous JS frontend with no slow page loading, image prefetching, etc.
  • Can also host movies, text, sound, etc.
  • Multi user, with ACLs
  • Give rights to access photos for a limited time frame through “session tokens” (generally urlencoded)

Most of the duplicate projects differ on one thing: the file tree modeling:

  • Some galleries are just one big bunch of elements with searcheable tags, date, name, comments, author, type, etc. And also have sorted views of the library (by date, author, etc.).
  • Some galleries are 2 levels deep, like “User/Portfolio/Photo”, with no flexibility (you won’t be able to have a picture in “User/Picture”).
  • Some are fully implementing a file tree where elements and directories can be parented in an arbitrary way.

Our wishlist

We were two of us developping two new media galleries, nearly at the same time, with specific needs. Common needs were:

  • Use Django (what else ?)
  • Be able to handle image archive uploads (through HTTP, FTP, scp, etc.)
  • Use external tools for thumbnail generation, and do it offline
  • One of us had the additional needs:
    • Have a single user photo library
    • Have a simple Theme/Roll/Picture hierarchy
    • Pretty thumbnails
  • The other of us had the additional needs, coming from a former media gallery (in python, but without supporting framework, and no SGDB):
    • Multi-user, ACLs, Session Tokens
    • JS frontend
    • Arbitrary tree support
    • Composed directory thumbnails (ala WinXP)

Having done a little research about available projects, we thought about the following projects, but had some :

  • Photologue: Tied to the Gallery/Photo tree, photo-centric. There is a 3.x branch coming, solving some of our rants.
  • ...