There are two aspects of Calibre that I would focus on, if I didn't have already too many projects on my plate. However, working on Calibre might be a nice break and get me motivated on working on other Python projects, like Trac or Projile.
Given what I've been reading, I'm thinking of various ways I can rape the GUI layout. What I mean to say, is that while I'm not an expert yet, I think this might be a good start. I can already see where I'm confused by the library software, so I can imagine where other people might be having difficulties. Truthfully, I'm thinking something similar to Picasa 3 and a mix of Kindle.
- Separating The Components
Calibre appears to be doing 4 things in the space of one main application.
- Market Place - You can search for books from a list of existing online stores or search online stores for an existing book in your library.
- News Retrieval - Similar to Google Reader, except for syncing with your phone or converting to e-book format and syncing with a device.
- E-Book Sync Service - Allows for viewing the collection on a capable device.
- Library - The main purpose of the software and the majority of the application.
I would want to make the separation more clear and remove the icons at the top. I would also default to the library, but hide the other three sections / components listed above where others can get to them when needed.
- Improving the Library
The main actions of the library is adding books, converting books, editing books and removing books. The view is displayed by various predefined, what I'll call, directories. The other problem is that while a lot of the functionality is geared towards searching and minimizing the amount of books on display, it doesn't work like a computer or at least is missing normal directory hierarchy. At the very least, a normal directory structure needs to be added to manage what people might already had organized their e-book library.
- Removing Books Overload
The other part is why does the button "Remove Books" even exist? The delete button or the right click and "delete" option has the convention of being used for this action on every piece of software. In fact, such a right click menu already exists and simply has the same options. I suppose it makes sense, they are trying to make it as simple as possible, but by doing so are complicating the system. Delete should simply work as people expect and you should get out of the way. Much of the functionality could had been wrapped into an overall search and book selection that allows for a simple and single "delete" button press or right click and choosing "delete" on the menu. No submenu, just "delete". The right click option is there just for formalities, the expectation is that it should never really be used.
- Adding Books Overload
Same problem with "Add Books". You can simply drag a file or selection of files and drop them into the library and it will add the books. What is "Add Empty Book" and why is it needed? I suppose it was something someone wanted at one point, but when am I going to use it? Adding esoteric features to the application doesn't help with the ease of use. Why didn't the person simply create a txt file, name the file and then simply add it? No matter.
The real problem is that I have no idea if the directories I add will continuously be synced with the application. Meaning, if I add an e-book that I bought from a web site and download it to one of the directories I added to Calibre, will the book show up? Without checking the source and from other hints from the application, I'm going to guess not. It begs the question, "Why not?" I want this to work like Picasa 3, where I'm not adding books, I'm adding directories which are synced with the application every so often, so that when I add a picture for Picasa 3, it shows up and is synced online. I want Calibre to work like that.
The way I would improve the "Add Books" functionality is let you choose which directories you want Calibre to sync. Like Picasa 3, allow you to deselect subdirectories and sync down subdirectories automatically. The assumption would be that filenames or titles that match are the same book removing that feature completely, but allow allowing you to correct the libraries assumption.
- Cataloging Existing Books (Hard Copy)
I believe the reason for allowing to add empty books and by ISBN is so that you can list and catalog existing books and display it to people. I suppose to allow them to "check out" the book from you and keep track. However, I doubt this feature is implemented, yet.
I would improve this by simply allowing you to create a new entry and attempting to download a book picture, if possible. I would check for free ISBN and title book look ups. Since Ebay and other applications do it, it shouldn't be impossible.
- Unified Search
Like Picasa 3, I would put the search on the bottom and automatically select based on criteria. Allowing for managing, hopefully, more easier. Well, technically, the search bar will be at the top and the filtering will be on the bottom.
- Book Display
I rather like the idea of displaying thumbnails and as the default. I think it is wise to allow for displaying a list, I guess sort of like iTunes. Well, I suppose this would be one preference feature left up to the user. Well, actually, a couple of iTunes features are part of the library. I'm unsure what is better verses Picasa 3 over iTunes. Regardless, I would want to do some testing verses the two and sort of find what works better.
- Separate Application for Content Server
Or at least a less visible icon.
I would rather move the content server code outside of Python into a C#.NET application or potentially a D application. I would rather use the .NET framework since it would allow for utilizing the Windows APIs better. I would then write a Linux Daemon in another language, probably D and attempt to do the same for the Mac OS X with either D (preferred) or Objective C. Even if all the Windows Service and *nix daemons do is execute Python to run the code for all of the platforms.
I would also move the "Connect" to a device sync functionality or make the content server a "device" as well.
- Modifying Books
There will be a mass edit feature that will be hidden most of the time. I do think that perhaps it will be difficult to use. I'll try an icon for mass editing that opens a pane for changing certain details. Editing a book's metadata or information will be similar to Picasa 3 where it will be a new view. The directional keys will allow moving between books.
Actually, I'm starting to think I'm overthinking this. In some ways, it is just as simple as it needs to be. I'm just not satisfied until my tongue is so far up its asshole that it is coming snakes.
Maybe a part 2 later. Maybe.