So far, I have
- Started by listing what I want out of my media library manager. This includes elements of what data I want to capture, how I want to store things, and how I want to get the media and metadata in.
- Looked to see if my current solution addresses them, or comes close. TL;DR, it doesn’t really… though that should be expected because if it did, I wouldn’t be doing this.
- Worked out a draft data model that should do what I want. On the face of it, pretty simple. I still need to figure out how to implement the ‘custom entities and columns’ (which also will be used for ‘core’ entities and columns), but the model is straightforward.
- Drew a picture and validated that data model against expected use cases. The picture is not complicated, which is a good sign. Complex ER diagrams suggest either complex problems (yuck) or design flaws. I can easily see how various use cases fit the model.
- Started drawing up a list of other things I can probably bend this into doing that aren’t strictly ‘managing media’ (getting into cataloguing the content of the media). Capturing and normalizing Section 15 information might be useful to me, cataloguing Open Game Content by source document might be way beyond scope… but I admit holds some appeal. I’m sure I’ll come up with more things.
What I haven’t talked about yet is what I’m going to do with the information once I’ve got it, how I’m going to present it and use it.
Short answer? I think it’s going to look a lot like calibre… but there will be some differences.
- Regardless of what the GUI looks like, it will be possible to have multiple instances running at once.
- It might be that opening a library locks it so no other process can access that library, but if nothing else two processes can access different libraries.
- I’d like to have two processes accessing a single library, such as a batch load process loading documents into the same library I have open in the GUI, but I’m not committing to this yet.
- I expect there will be multiple views possible for each entity type.
- Individual item display.
- Individual item edit.
- Bulk display (list, cover grid/thumbnail/contact sheet, etc.), probably something like Windows Explorer.
- With the record volumes I expect — on the order of hundreds of thousands — I might want to have a landing page before I default to displaying the entire library.
- I might want to default to some aspect of ‘Documents’ as my starting view, but it might have the list of Documents empty until I choose something — an author, a series, etc. — from the navigation pane.
- Navigation (tag browser, etc.)
- It might be that there is a primary window with panes more or less fixed, or they might be floating/dockable.
- It might be that a single instance could have multiple windows open, giving different views into the same library.
I need to think about how to implement this, but I have the sense I’ll want a configurable templating engine.
So… not hard decisions actually committed here, but I’ve got a sense of where I’m going. I’m not sure if I’ve articulated here, but in my brain at least it makes sense…