Ideas come and go about what I want my website to do and how to make it happen. This is an attempt to make the better ideas stick, so that I might better stick to a course that will make the wants of my website a reality.
I'll begin by offering the vision by painting a picture of what I'd like my website to do for me. I'll explain some functionaliy, why I think it's important, and offer usage examples. Then, my implementation philosophy, abstact thoughts on how I believe this functionality should be achieved and why. Finally, ideas on engineering the website, actuall implementation ideas using specific technology and techniques.
This is being written for myself, but for anyone who happens to gain something from it, I'm gald! I've gained so much from the open public offerings of others, it'd be great to have given a little back.
A major motivator for this work is to create a way to enjoy our myriad of media, which at this time happens to be mostly photographic, but should be built to include any media, such as textual, aural (audio such as music), and movies. Building a website to do so has the following advantages.
No matter the user's OS (Windows, MacOS, Linux, PalmOS, embeded sytems, etc.), available computing power (desktop, set-top (WebTV), palmtop (PDA), presentation device (monitor, TV, speakers, print, projector), or web features supported (specifications implemented or adherience to specifications), web techniques offer a very common denominator, client selectivity or dumb-down options, and easy configuration of customized content. Compare this with applications developed in a compiled language (C/C++), bytecode/VM systems (Java), or proprietary applicaiton builders (Director).
Although websites are usually asumed to be accessed online through the Internet or LAN, it is also possible to offer most of it offline, such as on CD (or DVD), offering the following advantages.
Most of a site can be replicated statically using a web crawling tool such as wget.
I've spent quite a bit of time modeling what I think is important about media resources.
Relationships and properties I believe to be important for media specifically are the following.
A picture may be resized, color corrected, or even cropped. It's nice to know where the original, or it's parent, can be found, such as when you'd like to redo a transformation, or work with one of higher resolution. All images would have an original from which all other forms derive, be it the original jpeg from a digital camera, or the 35mm negative from a film camera for example.
35mm film -+- scanned ------+- thumbnail ---------+- crazy art negative | tiff | tiff | color jpeg | | | +- a lesser +- medium jpeg of +- jpeg of quality scan | original tiff thumbnail | +- cropped and color -+- thumbnail jpeg | corrected tiff | of corrected tiff | | +- ascii art version +- medium jpeg of | corrected tiff | +- large jpeg of corrected tiff
DV video -+- wav --------+- mp3 high | | +- still jpeg +- mp3 low | | +- mpeg +- ogg/vorbis | +- text --+- xhtml dictation | +- old html
When you talk about a resource you are directly concerned about, it is most likely not the thing you have in hand or are looking at on screen. It is something more abstract, of which what you have in front of you is only a representation. I see three important concepts to capture
An obvious example is an image. You'd like to say who's in it, when it was captured, and who created it. These are not properties of the JPEG or print (though they could be in another context), they are properties of the abstract image, regardless of what file it is or form you view it. Therefore an image, by this usage, is not an image file or print, it's its own resource, and should have it's own URI, probably a URN.
As an example, take a miniDV cassette of a wedding. It might be described with these three conceptual resources.
I'd like to not have to commit to a single framework or platform for production. I do feel confident though in the component that should m ake up any system, such as the accessibility of the content through URLs, RDF, and XSLT. The general workflow looks like the following.