Distributed image gallery
Now that the popular LEGO image archive Brickshelf has discontinued its
valuable service, it may be time to rethink how we manage the
publication of images of LEGO models on the web. I think there are two main
lessons we can learn from Brickshelf:
- It is popular to have a common, uniform LEGO image publication
system.
- We need a robust system, which doesn't have a single point of
failure.
Requirements
I have tried to see what I can come up with of requirements/wishes for a
new LEGO image publication system:
Reader
- The system should appear as one big web-site (even if distributed on
many different server names) publishing images of LEGO models.
- The reader shouldn't need to be aware that the system is
distributed.
- Any node should allow search of the whole network for an image/a
collection of images.
- Even if one node disappears, the images uploaded to it, should
continue to be available from other nodes.
- A reader should have access to mark a image as a likely
policy-violation.
Publisher
- It should be easy to request an upload account on a node.
- It should be easy to upload images (and other allowed file formats)
to a node.
- Images should be uploaded with a title, a description, and a number
of keywords.
System administrator
- Distributed system.
- Easy to add and administrate a node.
- It should be possible to limit the resource usage of the node.
- There shall be a way to enforce the policies of the site and the
system.
- It should be easy to grant/deny requested upload accounts.
- There shall be a way to review images before they are published.
Implementation ideas
- Publisher identities should be tied to e-mail addresses. This ensures
that a publisher can regain access to his/her images, even if the node
they originally were uploaded to goes off-line.
- The nodes should be continuously connected like Usenet. This should
just be for distributing announcements of newly published images, policy
notifications, nodes going down, etc.
- Texts (titles, descriptions and keywords) should all be marked with a
language code, so it may be possible to implement localised interfaces to
the system.
- When a node removes images (to limit disk usage), it should start
with those appearing on many other nodes. Preferably it shouldn't remove
images uploaded by a user with a local account. And it should never
remove images originally uploaded locally.
- If an image is requested from a node which doesn't have it in local
storage, the node will do two things:
- Make a temporary HTTP redirect of the request to a randomly
selected node, which has announced that it has the image in local
storage.
- Grab a copy of the requested image from another randomly selected
node, and put it in local storage.
Funding?
If enough nodes join the network, the cost for each participant may
become insignificant. If people should pay for the operation of the
network, I would suggest that publishers should be allowed to pay to make
their images get a higher priority in the fight for bandwidth when people
download them. Similarly should readers be allowed to pay for getting
higher priority when downloading images.
Comments?
Does this sound completely wrong? Or am I on the right track? Do you
have some additional requirements? Or just some comments?
There is more to read on Distributed LEGO image
archive/gallery
.