Difference between revisions of "Liblicense"

From Creative Commons
Jump to: navigation, search
(Example)
m (Reverted edits by CCID-jeremyhardin (talk) to last revision by Nathan Yergler)
 
(100 intermediate revisions by 13 users not shown)
Line 1: Line 1:
[[Category:Developer]]
+
{{Software Project
[[Category:Metadata]]
+
|Description=Low-level license metadata integration for applications.
[[Category:Desktop]]
+
|Bug tracker=http://code.creativecommons.org/issues/issue?status=-1,1,2,3,4,5,6,7&@sort=-activity&@search_text=&@dispname=liblicense&@filter=status,project&@group=priority&project=4&@columns=id,activity,title,creator,assignedto,status&@pagesize=50&@startwith=0
[[Category:Labs]]
+
|Code repository=http://code.creativecommons.org/viewgit/liblicense.git/
[[Category:Tools]]
+
|Mailing list=http://lists.ibiblio.org/mailman/listinfo/cc-devel
[[Category:Specification]]
+
}}
[[Category:Operating System]]
+
== What is liblicense? ==
[[Category:Technology]]
+
 
 +
liblicense provides a straight-forward way for developers to build license-aware applications.  liblicense utilizes a pluggable module system for reading and writing metadata from specific file types, allowing extensibility for specific content types.
 +
 
 +
* For a brief introduction video, check [http://blip.tv/file/1142312/ Asheesh Laroia talking about liblicense]
 +
* To see '''liblicense in action''' take a look at [[License tagger]], the cross platform file metadata editor.
  
== System Overview ==
+
== Features ==
  
=== Purpose ===
+
* Extract and write license information for files
To provide a simple way for developers to make their applications license aware.  Additionally, supplemental modules aim to provide a method for users to track licenses of files on their system.  This project complements [[Companion File metadata specification]] and [[Tracker CC Indexing]].
+
* Supports enumeration of available licenses
 +
* Wraps internationalized license information for Creative Commons licenses
 +
* Bindings for dynamic languages (currently Python and Ruby)
 +
* Extensible support for file types using module system
 +
* No specific GUI library dependency allows applications to build the graphical chooser most appropriate for their platform.
  
=== Architecture ===
+
== Future Improvements ==
[[Image:System_architecture.png]]
 
  
[[Image:System_architecture.svg | svg version]]
+
* Supports [[WebStatement|verification]] URLs for metadata verification
  
== Config Modules ==
+
== Architecture ==
* '''in_use'''() - returns whether or not the corresponding config system exists on the computer
+
[[Image:System_architecture.png]]
* '''get'''() - returns the current default license uri
 
* '''set'''(uri) - sets the default license uri and returns 0 upon success (non-zero for errors)
 
  
== I/O Modules ==
+
[[:Image:System_architecture.svg|Liblicense Architecture - SVG]]
* '''mime_types''' - null terminated list of handled mime-types (all indicates external storage method which works for any file)
 
* '''read'''(filename) - returns the license uri for the given file (embedded license takes precedence)
 
* '''write'''(filename,uri) - writes the license uri for the given file
 
  
== License Files (.rdf) ==
+
== Bindings ==
=== Attributes ===
 
  
* cc:license
+
* [[Liblicense/Python|Python]]
** about
+
* [[Liblicense/Ruby|Ruby]]
** permits
 
** requires
 
** prohibits
 
* dc:title - The human readable name of the license.
 
* dc:description - Description of the license.
 
* dc:coverage - The jurisdiction of the license. (country code from [http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html ISO3166])
 
* dc:language - The language of the license. (language code under [http://www.ietf.org/rfc/rfc3066.txt RFC3066])
 
* dc:relation
 
** hasVersion - version number
 
** isReplacedBy - indicates retired license ([http://www.ietf.org/rfc/rfc2396.txt URI])
 
** isBasedOn - indicates ported version ([http://www.ietf.org/rfc/rfc2396.txt URI])
 
* dc:type - always "License"
 
* dc:creator
 
* dc:publisher
 
* dc:identifier - URI of license ([http://www.ietf.org/rfc/rfc2396.txt URI])
 
  
=== Example ===
+
== Media ==
<pre><rdf:RDF
 
  xmlns="http://creativecommons.org/ns#"
 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
 
>
 
  <rdf:Description rdf:about="http://creativecommons.org/licenses/by-nd/2.0/za/">
 
    <dc:title>Creative Commons Attribution No Derivatives</dc:title>
 
    <dc:description>This license allows for redistribution, commercial and non-commercial,
 
as long as it is passed along unchanged and in whole, with credit to you.</dc:description>
 
    <dc:coverage>
 
        <dcq:ISO3166>
 
            <rdf:value>za</rdf:value>
 
        </dcq:ISO3166>
 
    </dc:coverage>
 
    <dc:language>
 
        <dcq:RFC3066>
 
            <rdf:value>en</rdf:value>
 
        </dcq:RFC3066>
 
    </dc:language>
 
    <dc:hasVersion>2.0</dc:hasVersion>
 
    <dc:isReplacedBy>
 
        <dcq:URI>
 
            <rdf:value>http://creativecommons.org/licenses/by-nd/2.5/za/</rdf:value>
 
        </dcq:URI>
 
    </dc:isReplacedBy>
 
    <dc:isBasedOn>
 
        <dcq:URI>
 
            <rdf:value>http://creativecommons.org/licenses/by-nd/2.5/</rdf:value>
 
        </dcq:URI>
 
    </dc:isBasedOn>
 
    <dc:type>License</dc:type>
 
    <dc:creator>iCommons</dc:creator>
 
    <dc:publisher>Creative Commons</dc:publisher>
 
    <dc:identifier>http://creativecommons.org/licenses/by-nd/2.0/za/</dc:identifier>
 
  
    <rdf:type rdf:resource="http://creativecommons.org/ns#License"/>
+
See [[Operating System Mockups]] for ideas on how '''liblicense''' could be integrated into various platforms.
    <permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
 
    <permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
 
    <requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
 
    <requires rdf:resource="http://creativecommons.org/ns#Notice"/>
 
  </rdf:Description>
 
</rdf:RDF></pre>
 
  
=== Example (i18n) ===
+
== Download ==
<pre><rdf:RDF
 
  xmlns="http://creativecommons.org/ns#"
 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
 
  xmlns:dcq="http://purl.org/dc/terms/"
 
>
 
  <rdf:Description rdf:about="http://creativecommons.org/licenses/by-nd/2.0/">
 
    <dc:title>
 
        <rdf:Alt>
 
            <rdf:li xml:lang="x-default">Creative Commons Attribution No Derivatives</rdf:li>
 
            <rdf:li xml:lang="es-cl">Creative Commons Atribución-SinDerivadas</rdf:li>
 
        </rdf:Alt>
 
    </dc:title>
 
    <dc:description>
 
        <rdf:Alt>
 
            <rdf:li xml:lang="x-default">This license allows for redistribution, commercial and non-commercial,
 
as long as it is passed along unchanged and in whole, with credit to you.</rdf:li>
 
        </rdf:Alt>
 
    </dc:description>
 
    <dc:coverage>
 
        <dcq:ISO3166>
 
            <rdf:value>us</rdf:value>
 
        </dcq:ISO3166>
 
    </dc:coverage>
 
    <dc:language>
 
        <dcq:RFC3066>
 
            <rdf:value>en</rdf:value>
 
        </dcq:RFC3066>
 
    </dc:language>
 
    <dc:hasVersion>2.0</dc:hasVersion>
 
    <dc:isReplacedBy>
 
        <dcq:URI>
 
            <rdf:value>http://creativecommons.org/licenses/by-nd/2.5/</rdf:value>
 
        </dcq:URI>
 
    </dc:isReplacedBy>
 
    <dc:type>License</dc:type>
 
    <dc:creator>Creative Commons</dc:creator>
 
    <dc:publisher>Creative Commons</dc:publisher>
 
    <dc:identifier>http://creativecommons.org/licenses/by-nd/2.0/</dc:identifier>
 
  
    <rdf:type rdf:resource="http://creativecommons.org/ns#License"/>
+
* [http://mirrors.creativecommons.org/software/liblicense/liblicense-0.8.1.tar.gz Latest Release tar.gz]
    <permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+
* Debian and Ubuntu [http://mirrors.creativecommons.org/packages/ repositories].
    <permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+
* Read the [[Liblicense tutorial| tutorial]].
    <requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
 
    <requires rdf:resource="http://creativecommons.org/ns#Notice"/>
 
  </rdf:Description>
 
</rdf:RDF></pre>
 
  
== Frontends ==
+
=== Developers: Using git ===
See [[Desktop Integration]]
 
  
== Timeline ==
+
If you want to check out the source code and develop on it, use this command:
=== 6/18 ===
 
* Finalize liblicense API.
 
  
=== 6/25 ===
+
git clone git://code.creativecommons.org/liblicense.git
* Write liblicense.
+
git submodule init
* Stub config and IO modules.
+
git submodule update
  
=== 7/2 ===
+
That should give you a working copy you can commit to.  In case you wonder: the latter two commandsfill the directories
* liblicense python bindings.
+
* icons/jurisdictions
 +
* license.rdf
 +
* licenses
 +
with content from external repositories similar to ''svn:externals'' for Subversion.
  
=== 7/9 ===
+
== More Information ==
* Gconf config module.
 
* Nautilus IO module.
 
  
=== 7/16 ===
+
* [[Liblicense/Releases|Release History]] and [[Liblicense/Roadmap|Roadmap]]
* Nautilus GUI frontend.
+
* [[Liblicense/Desktop_Integration|Desktop Integration]]
* Gnome control panel frontend.
+
* [[Liblicense/Screenshots|Screenshots]]
 +
* [[License RDF|RDF Reference]]
 +
* [[Liblicense/Metadata_Table|File Metadata Information]]
 +
* [http://code.creativecommons.org/doc/liblicense/ Library Documentation] (generated from source)
 +
* [[Buildbot]] helps test out liblicense on various platforms.
  
=== 7/23 ===
+
== See Also ==
* Sugar Journal backend.
 
* Sugar frontend.
 
  
=== 7/30 ===
+
* [[Companion File metadata specification]]
* Bug hunting.
+
* [[Tracker CC Indexing]] - also there is a great chart showing progress on reading/writing different filetypes (copied above).
* Frontend polishing.
 
  
=== 8/6 ===
+
{{Challenge Enabled}}
{{stub}}
 
  
=== 8/13 ===
+
[[Category:Developer]]
{{stub}}
+
[[Category:Metadata]]
 +
[[Category:Desktop]]
 +
[[Category:Labs]]
 +
[[Category:Tools]]
 +
[[Category:Specification]]
 +
[[Category:Operating System]]
 +
[[Category:Technology]]
 +
[[Category:Integration]]
  
=== 8/20 ===
+
__NOTOC__
{{stub}}
+
{{lowercase}}

Latest revision as of 20:53, 23 September 2015

Description of Software Low-level license metadata integration for applications.
Bug Tracker Link to Bug Tracker
Code Repository Link to Code repository
Mailing List Link to Mailing list

What is liblicense?

liblicense provides a straight-forward way for developers to build license-aware applications. liblicense utilizes a pluggable module system for reading and writing metadata from specific file types, allowing extensibility for specific content types.

Features

  • Extract and write license information for files
  • Supports enumeration of available licenses
  • Wraps internationalized license information for Creative Commons licenses
  • Bindings for dynamic languages (currently Python and Ruby)
  • Extensible support for file types using module system
  • No specific GUI library dependency allows applications to build the graphical chooser most appropriate for their platform.

Future Improvements

Architecture

System architecture.png

Liblicense Architecture - SVG

Bindings

Media

See Operating System Mockups for ideas on how liblicense could be integrated into various platforms.

Download

Developers: Using git

If you want to check out the source code and develop on it, use this command:

git clone git://code.creativecommons.org/liblicense.git
git submodule init
git submodule update

That should give you a working copy you can commit to. In case you wonder: the latter two commandsfill the directories

  • icons/jurisdictions
  • license.rdf
  • licenses

with content from external repositories similar to svn:externals for Subversion.

More Information

See Also


Liblicense
Have an idea about this page? Want to help build the CC ecosystem? Check out the challenges related to Liblicense, or add one of your own below.
Open Challenges
{{#ask: Is Complete::no

Related To::Liblicense|format=table}}

Completed Challenges
{{#ask: Is Complete::yes

Related To::Liblicense|format=table}}

{{#forminput:Challenge|35 Challenge[related_to]=Liblicense }}