Difference between revisions of "Developer Challenges"

From Creative Commons
Jump to: navigation, search
 
Line 6: Line 6:
 
Some challenges have been met and completed -- those have been moved to the [[Completed Tech Challenges]] page.   
 
Some challenges have been met and completed -- those have been moved to the [[Completed Tech Challenges]] page.   
  
== Developer Aids, Libraries, and Specifications ==
+
== Embedding Specifications and Implementations ==
 
 
=== License metadata validation web application ===
 
 
 
'''1 implementation'''
 
 
 
This application should work much like the [http://www.w3.org/RDF/Validator/ W3C RDF Validation Service]. It may even re-use some of the same code. Instead of parsing RDF from a text input box or URL and displaying represented triples, the license metadata version should extract RDF potentially embedded in HTML from a text input box or URL, parse the RDF, and display license and work properties instead of raw RDF triples.
 
 
 
'''Update:''' Nathan Yergler's excellent [http://www.yergler.net/projects/ccvalidator/ ccValidator] meets the challenge! Please send Nathan bug reports, feature requests, and patches. If you have a different (better, thinks you) implementation in mind, don't be dissuaded by existing code -- the W3C RDF validator has used at least two different implementations.
 
 
 
''TODO'' move to completed archive, add web service version challenge
 
  
 
=== License claim embedding specifications for more file types ===
 
=== License claim embedding specifications for more file types ===
Line 25: Line 15:
 
''TODO'' Make specs/implementations a top-level category, with each format it's own challenge.  Upon completion of a spec, issue a challenge for implementations in different languages and addition of support to existing libraries.
 
''TODO'' Make specs/implementations a top-level category, with each format it's own challenge.  Upon completion of a spec, issue a challenge for implementations in different languages and addition of support to existing libraries.
  
=== api.creativecommons.org wrappers ===
+
== Developer Aids and Libraries ==
  
cctools/api_clent java/php/python
+
=== [[License metadata validation web service]] ===
  
=== APIs for Creative Commons license metadata ===
+
Creative Commons offers [[Creative Commons Web Services|web services]] for integrating license selection into applications, and we have a [http://validator.creativecommons.org License Metadata Validator].  How about mashing the two of them up?  A web service which allowed applications to validate license metadata would allow applications to integrate another aspect of CC licensing with minimal effort.
 +
 
 +
=== [[CC Web Service Wrappers]] ===
 +
 
 +
We currently offer language-specific wrappers for the [[Creative Commons Web Services]] in Python, Java and PHP.  Help make it easier for other developers to integrate license selection by writing a wrapper library in your language of choice.  Lisp, anyone?
 +
 
 +
=== [[APIs for Creative Commons license metadata]] ===
  
 
'''3 implementations'''
 
'''3 implementations'''
  
We provide RDF metadata for each our our licenses and the public domain dedication. Many developers will find it easiest to access this metadata via a programming language-specifc API. [http://cclicense.sourceforge.net/ cclicense.php] is an example of such an API for PHP web developers. Ada, C++, E, Java, Lisp, ML, Perl, Ruby, Smalltalk, Tcl (and many more!) are all up for grabs. Bonus points if your implementation can dynamically discover and wrap new licenses using the Creative Commons metadata vocabulary.
+
We provide RDF metadata for each our our licenses and the public domain dedication. Many developers will find it easiest to access this metadata via a programming language-specifc API. [http://cclicense.sourceforge.net/ cclicense.php] is an example of such an API for PHP web developers. Ada, C++, E, Java, Lisp, ML, Perl, Ruby, Smalltalk, Tcl (and many more!) are all up for grabs. Your wrapper should also include a small driver program to demonstrate how it can be used to pull license information.  Bonus points if your implementation can dynamically discover and wrap new licenses using the Creative Commons metadata vocabulary.
  
 
'''Update:''' APIs for [http://workspaces.gotdotnet.com/cclib C#] (Steve Griffin) and [http://yergler.net/projects/ccrdf/ Python] (Nathan Yergler) have been created in response to this challenge.
 
'''Update:''' APIs for [http://workspaces.gotdotnet.com/cclib C#] (Steve Griffin) and [http://yergler.net/projects/ccrdf/ Python] (Nathan Yergler) have been created in response to this challenge.
  
''TODO'' Add request for sample user interface to drive the implementation
+
=== License metadata in XML formats ===
  
 
=== License metadata in SMIL and SVG ===
 
=== License metadata in SMIL and SVG ===
Line 49: Line 45:
 
''TODO'' generalize to all xml formats, split into separate challenges
 
''TODO'' generalize to all xml formats, split into separate challenges
  
=== Companion File metadata specification ===
+
=== [[Companion File metadata specification]] ===
 +
 
 
It is impractical to embed metadata in some file formats, so we need a specification for a "companion" metadata file that would define license and other metadata information.   
 
It is impractical to embed metadata in some file formats, so we need a specification for a "companion" metadata file that would define license and other metadata information.   
  

Revision as of 19:30, 4 January 2006


We have ideas. Lots of ideas. And some of them might just be darn cool. So we challenge you, dear developer, help us out and win fame and glory (and maybe, just maybe, a job).

Some challenges have been met and completed -- those have been moved to the Completed Tech Challenges page.

Embedding Specifications and Implementations

License claim embedding specifications for more file types

We currently publish license claim embedding recommendations for MP3 and Ogg files. We want to publish similar recommendations for every popular "media" file format including Quicktime, Windows Media, PDF, GIF, JPEG, PNG, Flash... Can you research a file format and suggest a specification? We also need people to provide implementations of our recommendations in various languages, e.g., a Java library that embeds, reads, and verifies license claims. See the cctools project for existing implementations.

TODO Make specs/implementations a top-level category, with each format it's own challenge. Upon completion of a spec, issue a challenge for implementations in different languages and addition of support to existing libraries.

Developer Aids and Libraries

License metadata validation web service

Creative Commons offers web services for integrating license selection into applications, and we have a License Metadata Validator. How about mashing the two of them up? A web service which allowed applications to validate license metadata would allow applications to integrate another aspect of CC licensing with minimal effort.

CC Web Service Wrappers

We currently offer language-specific wrappers for the Creative Commons Web Services in Python, Java and PHP. Help make it easier for other developers to integrate license selection by writing a wrapper library in your language of choice. Lisp, anyone?

APIs for Creative Commons license metadata

3 implementations

We provide RDF metadata for each our our licenses and the public domain dedication. Many developers will find it easiest to access this metadata via a programming language-specifc API. cclicense.php is an example of such an API for PHP web developers. Ada, C++, E, Java, Lisp, ML, Perl, Ruby, Smalltalk, Tcl (and many more!) are all up for grabs. Your wrapper should also include a small driver program to demonstrate how it can be used to pull license information. Bonus points if your implementation can dynamically discover and wrap new licenses using the Creative Commons metadata vocabulary.

Update: APIs for C# (Steve Griffin) and Python (Nathan Yergler) have been created in response to this challenge.

License metadata in XML formats

License metadata in SMIL and SVG

1 implementation

SMIL (multimedia playlists) includes support for RDF/XML metadata. We need examples of including license metadata in SMIL for the purposes of denoting that a SMIL playlist itself is published under a Creative Commons license or that individual components of the playlist are licensed. Even better if you can use dc:source to specify parent playlists/works. (SVG has similar support for RDF/XML metadata.) Read more about the motivation in this cc-metadata post.

Update: Lucas Gonze has created a CreativeCommons SMIL Module

TODO generalize to all xml formats, split into separate challenges

Companion File metadata specification

It is impractical to embed metadata in some file formats, so we need a specification for a "companion" metadata file that would define license and other metadata information.

Operating System Support For Creative Commons Metadata

Recent and upcoming operating systems will have built-in support for application-level metadata. See Gnome, Vista, and Tiger. How can Creative Commons take advantage of these technologies to enable CC-aware search and applications on the next generation desktop? Wanted: research briefs on how to expose CC license info for objects in each major OS or framework. Support for the external metadata files should be included.

Content Creation Applications

GUI for embedding license claims in files and generating claim verification RDF

We have a command line tool that embeds license claims in MP3 and Ogg files and generates claim verification for these files according to our license metadata embedding guidelines. We need a GUI version of this tool (or versions, for different platforms). The most basic implementation would allow a user to choose a file, enter some information (at least copyright holder, license chosen, and URL of the page that will verify the embedded claim), embed the claim in the file, and display verification RDF for copy&paste into the verification web page. More sophisticated implementations might help a user manage their tagged files or interface with specific web publishing systems to make publishing verification metadata transparent.

TODO Move to "retired" or done -- written pre CcPublisher.

Build Creative Commons licensing into more content creation applications

We have a list of existing applications that allow users to choose a Creative Commons license for content created within the applications. Any application in which a user creates "content" is a candidate, from multimedia authoring systems to weblog publishing software. We've made it easy to offer Creative Commons licenses to users via our satellite licensing interface.

TODO Link to web service docs, provide some "most wanted" or app ideas, including mock-ups, screenshots of existing implementations.

Build licensing into web content applications

wordpress, *nuke*, cmses, etc.

Open source application support for XMP and Creative Commons license info

1 implementation

XMP is an open, RDF-based format that can embed metadata in PDF files. Currently only Adobe applications support such embedding. Similar XMP and Creative Commons support should be added to Open Office and other open source document creation applications.

Update: Maarten Sneep has created a macro for embedding XMP in files created by pdflatex.

TODO Retire and split between embedding and content creation apps

Content Display, Player, and Sharing Applications

Browser toolbar or plugin that extracts and displays license metadata embedded in a page

1 implementation

You've probably seen our "some rights reserverd" and "no rights reserved" (for public domain works) buttons on many web pages, but there's more. Whenever a user copies HTML generated by our license selection application they get the button and also a block of metadata describing the licensed work and the license it is offered to the public under. You can't normally see that information without viewing the web page's source. A toolbar or plugin that exploited this hidden information could take many forms. One possibility: If a page has valid license metadata, place a (cc) icon on the toolbar. Mousing over the icon brings up a transient window which displays the license characteristics associated with the license and any descriptive metadata also present.

Update: Nathan Yergler has created mozCC, a browser extension for Mozilla-based browsers. We need similar implementations for IE and Safari.

TODO Change to replicate mozCC functionality for other browsers: IE, Safari, Opera, Konqueror, Epiphany, etc.

Integrate CC Metadata into Browser Aides

Integrate CC metadata extraction into browser tools such as Piggy Bank, Alexa Toolbar, etc.

Media player and file sharing applications that read, verify, and display license claims embedded in files

Media players and file sharing applications should read, verify and display license claims embedded in files. Two example scenarios:

Media Player: When playing a MP3 or Ogg file, the player software should look for a license claim and attempt to verify the claim against the verification URL specififed in the claim. If RDF metadata at the verification URL does verify the embedded claim, the player should give some indication of such. For example, a (cc) icon in the player's imitation LCD screen. The icon could be an active link to the verification page. Also, any work metadata found at the verification URL may be used to further enhance track information displayed to the user. Any single file should only need to be verified once, not every time it is played.

File Sharing Client: A file sharing client could do everything that a media player does above (indeed, often a media player is built into file sharing clients). In addition, verified licenses should be included in search results. Again, a (cc) icon, or perhaps a green light (sharing ok), might be displayed next to search results. Note that in search results all metadata (including everything from filename to license information) comes from other clients. After downloading a file, the local client should verify a license claim for itself before displaying a positive indicator in a "media library" view or exporting license metadata in respose to external searches. Again, any single file need only be verified once.

Verify is a program for OS X by Oyez tech lead Chris Karr that demonstrates some of the above features in a stand-alone application.

TODO Include reference to Limewire implementation.

Advanced Media Player Search/Browse UI

Implement a user interface for a media player which allows searching and browsing files based on CC metadata properties. One way (perhaps preferred) to meet this challenge would be to utilize whatever OS level support is available.

TODO audio, video, images, etc


Automatic Sense Candy and "Art" (Re-)generation

1 implementation

Screen savers, collage makers, mood music generators and similar could make excellent use of CC-licensed work, and automatically create derivative works. Networked and "smart" versions thereof could usher in a new age of bad art, and some great art. This challenge, inspired by Nathan Yergler's ccSaver, is one that could use many highly variable implementations.

TODO Add content pool listing/link on challenge specific page.

Distribution & Deployment

Distro repositories

ccPublisher, mozCC et al, get them into distro repositories

LiveCD

with cc content and whatever state of the art cc-enabled apps are at the time

License-aware Search Applications

Add license search to a major commercial search engine

Currently we have a demonstration search that works by telling AlltheWeb to limit results to pages that link to Creative Commons licenses. While useful, this is far from our vision of a metadata-aware search engine.

The first requirement for a Creative Commons license-aware search engine is that license metadata (RDF embedded in pages) must be indexed. It wouldn't be necessary to index arbitrary RDF initially -- indexing only Creative Commons license metadata would be a good first step along the path to a Semantic Web-enabled search engine.

Once you start indexing license metadata, you can do two obvious things with it:

Provide users with an interface to filter their results by license or license characteristc. The aforementioned AlltheWeb demonstration interface is an example of the latter.

Display license information in search results. This could be done even if a query does not involve a license filter. If you have license information for a result, display the license in proximity to the result.

As you index and understand more metadata, you'll be able to go beyond these basics, with enhanced format or domain-specific searches and richly annotated results.

We've started a benevolent cycle by making it painless and natural for people to publish quality metadata (automatically included in HTML generated for cut&paste publishing by our license selection application). Continue the cycle by enhancing search with metadata -- providing stimulus for users and other applications to generate yet more and better metadata.


CC search for content repository websites

eg improve http://flickr.com/creativecommons

could be done by outside developers in cases where web service api permits

Write a custom Creative Commons license-aware search engine

1 implementation

You'd have to work at a commercial search engine to tackle the previous challenge. However, an individual or small team could build a search engine exclusively for Creative Commons-licensed content, much as several have been built exclusively for searching blogs.

Update: Prototype up at search.creativecommons.org. Help improve this search engine at its sourceforge project.

TODO feature requests for cc/nutch

Discovery tools

iRate, etc.