Rights on the Desktop with liblicense

Nathan R. Yergler, Creative Commons
Asheesh Laroia, Creative Commons

Agenda

Creative Commons

share, reuse, and remix — legally

3

CC License Deed
CC License Legal Code
	  
	  <a href="http://creativecommons.org/licenses/by/3.0"
	  rel="license">CC BY 3.0</a>
	  
      

Why Machines?

Programs should be able to answer simple questions about licensed works.

RDF

Previous Recommendation

<!--
   metadata
-->

Pervasive Problems

CC Rights Expression Language

Work Properties

License Properties

Work Properties

License Properties

Principles for Publishing ccREL in HTML

RDFa

Principles for Free-Floating Content

XMP

The Basics

License URL

CC License Deed

Web Statement

Magnatune: William

*click*

Magic!

CC License Deed with Additional Metadata

But what about...

MP3

(WCOP/WOAF in ID3)

OGG Vorbis

(LICENSE/CONTACT)

FLAC

(Vorbis Comment)

Microsoft Office

?

liblicense

liblicense: Overview

Mmm... layer cake

liblicense layer cake

Interacting with Licensed Content

What license does this file have?

C


	ll_init();
	printf("%s\n", ll_read("/home/nathan/gnomophone.mp3", LL_LICENSE));
	ll_stop();
    

Python


	license_url = liblicense.read('/home/nathan/gnomophone.mp3')
    

Set the license for this file

C


	ll_init();
	ll_write(
	   "/home/nathan/gnomophone.mp3", 
	   "http://creativecommons.org/licenses/by/3.0/", LL_LICENSE);
	ll_stop();
    

Python


	liblicense.write('/home/nathan/gnomophone.mp3', 
	   'http://creativecommons.org/licenses/by/3.0/')
    

What about more permissions?

C


	ll_init();
	printf("%s\n", ll_read(
	   "/home/nathan/art.pdf", LL_MORE_PERMISSIONS));
	ll_stop();
    

Python


	more_perms = liblicense.read('/home/nathan/art.pdf',
	   liblicense.LL_MORE_PERMISSIONS)
    

* This depends on the development version and will be packaged early next week.

I can haz chooser?

Python


def license_chosen(chooser):
   print chooser.get_license()

widget = LicenseWidget(license)
widget.connect("destroy", license_chosen)
        
widget.show()
    

* This is woefully under-documented; we're working on that.

I can haz chooser?

Questions

Demo * 3