License work



Hi everyone,

I've managed to get some of the preliminary support for licenses
implemented right now.  No GUI or way to add licenses, but they're all
stored in the database.  The GUI stuff will be next I guess.

Here's a general overview of how things are set up.

There are two new tables created in the database, one called "licenses"
that contains information on the licenses known to this version of
f-spot and another called "photo_license" (yes, it's singular) that maps
each photo to a single license.

Here's the schema for licenses:


licenses (  id            INTEGER PRIMARY KEY NOT NULL,  
            name          TEXT UNIQUE,  
            uri           TEXT UNIQUE,  
            allowReproduction BOOLEAN,  
            allowDistribution BOOLEAN,  
            allowDerivative   BOOLEAN,  
            allowCommercial   BOOLEAN,  
            requireNotice     BOOLEAN,  
            requireShareAlike BOOLEAN,  
            immutable         BOOLEAN);

id -> integer used for the system to map licenses
name -> the name of the license (i.e. "CC Attribution-NonCommercial-ShareAlike 2.5" or "Public Domain")
uri -> link to where you can find info on the license (i.e. "http://creativecommons.org/licenses/by-nc-sa/2.5/";)
allowReproduction -> does the license allow for reproduction
allowDistribution -> can you redistribute the work
allowDerivative -> can you make derivative works
allowCommerical -> can you use for commercial purposes?
requireNotice -> do you need to give the original author credit?
requireShareAlike -> do you need to use same license?
immutable -> can this license definition be modified?

The general thought behind the last one is that the licenses that come
predefined with f-spot should be marked as immutable as there may be
confusion is some folks made a change so something like by-nc-sa allowed
commercial exploitation.

Most of the other boolean values are contained in the CC RDF definitions
for the licenses.

We join licenses to photos using photo_license

CREATE TABLE photo_license (  photo_id      INTEGER,  
                              license_id    INTEGER);

This should really be pretty straight forward.  With the exception that
photo_id should only be in there once.  For most purposes, we shouldn't
worry about multiple licenses on a single photo as it will just get
really confusing.

Internally this is all handled by the creation of a LicenseStore object
that is created and passed into the PhotoStore object when the Database
initializes itself.

Obviously, feedback on the above is GREATLY appreciated.

So here's what I've gotta do now.

1) Add a menu to attach a license to a photo.  I was thinking that this
could be the same right clicky thing that is currently used to add tags
to photos (i.e. right click->add license).

2) Make a way to show visibly if a license is attached to a photo.  Not
sure about the best way to do this.

3) License search.  This will probably be some sort of dialog or
something.  Although, ideally it would be another element in the sidebar
with the tags.  For example, a tree like this could appear as another
"tag":

Licenses (checking would show only licensed photos)
-> Public Domain
-> Creative Commons
---> By-Nc-Sa
---> By-Sa
---> By
------------------
->Properties
---->allow reproduction
---->allow distribution
---->allow derivative
---->allow commercial use
---->require notice
---->require share alike

Here's the tricky part, where I need some HIG gurus.  Logically it seems
that the top section of such a dialog should be an "or" clause (Ie. All
public domain AND all by-nc-sa photos), while the bottom set of
properties should be an "and" clause ("show all photos that allow
commercial use and don't require notice")

Thoughts are appreciated on this stuff.  The implementation of the
browse by license is still a ways off though.  First job is to get the
menu to set licenses done.

Thanks!

--Patrick






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]