Google Summer of Code: Amarok CD Stack Collection View
Ian Monroe
ian at monroe.nu
Mon Mar 24 01:32:18 UTC 2008
On Sun, Mar 23, 2008 at 7:45 PM, Andreas Schäfer <gentryx at gmx.de> wrote:
> Hi,
>
> I've spent some time thinking about the project to digest the feedback
> and did some mock ups to get a rough idea how the result could look
> like. It would be nice to know what you guys think about the proposal,
> what you might want to add and what might be of lesser
> importance. Maybe this proposal is a bit lengthy, but if you like it
> then I'll cut it down a bit before submission.
>
> The Problem
> -----------
>
> Amarok's browsing facilities don't support the user well enough when
> exploring his music collection.
>
> While Amarok is one of the leading -- if not /the/ leading -- free
> software music players, and its collection view and file view are
> tremendously useful, they still leave some features to be desired. The
> collection view supports the user when he's looking for certain songs
> by searching (mainly) the tags for a given query string. This works
> well if the user already has a clear vision of what he's looking for
> and if he can clearly phrase it (otherwise the collection view can be
> quite overwhelming because of the sheer mass of unfiltered
> entries). It doesn't work well if the user just want's to browse his
> collection, as he cannot manually group certain artists or
> albums.
>
> Using the file view the user can explore the folder structure of his
> music collection. This can be useful in the "aimless browsing" use
> case, when the user doesn't have a certain artist or track in mind. He
> can limit the displayed files by entering a search string, but this is
> only applied to the file names. However, this will only work well for
> users with a very tidy folder structure, it doesn't allow searching in
> the meta data or subdirectories and fails just like the tree view at the
> combined "browse and search" use case.
>
> My Vision
> ---------
>
> Allow the user to browse his collection as intuitively with Amarok as
> he would with real CDs while at the same time augmenting him with
> instant searching and context information. (And some eye candy, of
> course -- who doesn't like sweets?)
>
> Basically my work would boil down to a different implementation of the
> current collection widget: I'd add a folder selection facility and a
> different collection view. I've created some mock ups to give you a
> rough overview of how this could look like. They are all prototypic,
> rough and ugly, so don't think those looks are final ;-)
>
> A basic collection view, no CD is selected:
> http://gentryx.de/~gentryx/slimview_collapsed.png
> Upon selection, the CD rotates to show its cover...
> http://gentryx.de/~gentryx/slimview_expanding.png
> ...tracks and some additional information:
> http://gentryx.de/~gentryx/slimview_expanded.png
>
> As an alternative, albums could be directly represented by small cover
> icons: (easy implementation thanks to model/view)
> http://gentryx.de/~gentryx/slimview_alternative.png
> A drop menu provides access to frequently used folders:
> http://gentryx.de/~gentryx/slimview_pathselector.png
>
> The folder selection would allow the user to make a rough preselection
> of what he's looking for, without losing the options of the former
> collection view. In the mocks you'll see a view that loosely resembles
> photoshop's layer view. I think this is a pretty efficient solution,
> but I'd also like to test how this fares with a tree view based
> solution (cheap implementation thanks to model/view). The folder
> selection could yield some nice synergy with Ryan Zeigler's "Media
> Devices as Collection Providers" proposal as it would allow the user
> to limit his view to one specific collection.
>
> I did drop the initial idea of a full 3d OpenGL based view because of
> three reasons:
> a) Problematic text rendering: could be done via
> textures on the (3d) CD boxes (-> poor rendering quality) or via 2d
> painting on top of the OpenGL boxes (-> different coordinate systems
> cause trouble and fiddling with them creates messy code with poor
> maintainability).
> b) It didn't feel as intuitive to use.
> c) My prototype did look ugly as all hell ;-)
> http://gentryx.de/~gentryx/gsoc.7.png
>
> Schedule:
> ---------
>
> I've split the project up into the following packages (start/end dates
> and lengths in weeks, some packaged are schedules concurrently over
> several weeks as they go hand in hand).
>
> Start/End Length What?
> --------- ------ ---------------------------------------------------------------
> 0 - 1 1.0 getting to know the code, exploring implementation alternatives
> 1 - 4 1.5 folder selection UI
> 1 - 3 1.0 very simple initial widget which displays CDs and upon
> selection their content (e.g. using QListView or
> QTreeView), with selection and drag & drop
> 3 - 6 1.5 animate CD rotation and track listing (includes testing of
> different designs to max out usability and eye candy)
> 6 - 8 1.0 implement clickable tabs and make levels configurable
> (e.g. standard artist/album or just album or
> year/artist/album/younameit)
> 6 - 8 1.0 implement alternative tree view using by reusing available
> widgets and rendering infrastructure
> 8 - 9 1.0 make persistent and options configurable via menu
> 9 - 12 3.0 buffer time (polishing, more tests etc.)
>
> This adds up to 11 weeks, one week less than expected because I'll
> give a talk at a conference in June (ICCS 2008, anyone there? ^^)
>
> Mid term deliverables would be (as seen in the schedule) a new,
> animated collection view with a folder selection ability -- not
> necessarily polished, as the buffer time is scheduled for the end of
> the term. It would still miss tabs to collapse hierarchies and a
> config dialog.
>
> In the summer I'll begin writing down my PhD thesis. This means that
> I'll be done with coding and according to my experience from my
> diploma thesis, writing fares well with coding for a different
> project. It's a good relieve from writer's block. I estimate to put 35
> to 40 working hours per week into the project.
>
> Same as in the last mail:
>
> > About Me
> > --------
> >
> > I'm a computer science PhD student and as such I take pride in saying
> > that coding is not just my profession, but also my passion (-8 My
> > field of work is Cluster & Grid Computing (parallel programming, many,
> > many big machines). I'm most proficient in C++, Ruby and Java, but I
> > can also write some obscure languages (Object Pascal, x86 assembly,
> > Modula 3 ...shudder) if need be. During my studies I specialized in
> > software engineering and I have plenty of experience with design
> > patterns in general and also Model/View/(Controller) specifically.
> > For some of our applications I've created QT based GUIs (both forms
> > and widgets), based on Model/View. I enjoy learning new stuff and I
> > guess it's fair to say that I'm a quick learner.
> >
> > What I'd like to Learn About
> > ----------------------------
> >
> > - deepen my knowledge of QT (QT4) and the KDE way (code structure,
> > build system etc.)
> > - modern graphics programming (most of my knowledge of this is based
> > on my experiences in the early 90s demo scene -- fire and plasma
> > effects, shade bobs etc. :-) )
> > - user interface programming (e.g. drag & drop)
>
> I'd be grateful for any feedback and hints.
>
> Happy easter!
> -Andreas
Well I'm disappointed that you don't plan on using OpenGL. The
prototype is pretty ugly, but it's also a prototype. I don't know much
about OpenGL though, so perhaps having so much text in opengl isn't
feasible. Decent looking text seems like a pretty basic feature
though...
I don't like the file filter idea. The date filter we have now makes
more sense. If I want to browse by directory, I use the file browser.
Ian
More information about the Amarok
mailing list