Difference between revisions of "Summer of Code 2013"

From Creative Commons
Jump to: navigation, search
Line 1: Line 1:
 
Creative Commons is participates in Google's Summer of Code as a mentoring organization. Student submissions for SoC 2013 will take place April-May; see the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 GSoC 2013 homepage] for more details. If you want more information, you can send email to [mailto:dan@creativecommons.org Dan Mills], or visit our irc channel at [irc://irc.freenode.net/cc Freenode/#cc].
 
Creative Commons is participates in Google's Summer of Code as a mentoring organization. Student submissions for SoC 2013 will take place April-May; see the [http://www.google-melange.com/gsoc/homepage/google/gsoc2013 GSoC 2013 homepage] for more details. If you want more information, you can send email to [mailto:dan@creativecommons.org Dan Mills], or visit our irc channel at [irc://irc.freenode.net/cc Freenode/#cc].
  
This year Creative Commons is planning to launch new products and tools to help authors and consumers use, share, and remix content. Here are some ideas to get you started.
+
=== A Little Background ===
  
=== Project: Media Widget ===
+
This year Creative Commons is planning to launch new products and tools to help authors and consumers use, share, and remix content. The first experiment we're launching is called [[OpenHome]], go read the wiki page for it before you continue reading this one.
 +
 
 +
'''Seriously''', go read [[OpenHome]], this page will still be right here waiting for you.
 +
 
 +
Ok? Now you have a general sense of what the overall project is about. Here are some ideas to get you started. Keep in mind these are only starter ideas, which you can feel free to mix and match or propose something new if you think it's worth exploring.
 +
 
 +
(By the way, if you visited this page in the last couple of days, you may notice that the ideas have changed somewhat. The same ideas are still here, we just combined a few together, because they seemed too easy on their own!)
 +
 
 +
=== Project: Homepage Themes ===
 +
 
 +
; Brief Explanation
 +
: OpenHome has a basic view which currently displays images only. However, OpenHome is meant to be a mash-up of a variety of media which includes images, documents, and more. We need smart ways to categorize, organize, and display this content. What's more, we may start by focusing on one kind of user to start with, but we will quickly need to think about other user types. This project is about creating OpenHome templates and features for two kinds of users:
 +
 
 +
: * A university professor who wants a home page for their written papers.
 +
: * An amateur artist looking to show off their artwork and writing.
 +
 
 +
: Based on these users, we will perform user research and come up with specific needs, which we will then build our app to support. You don't need to do the user research itself--but you'll be involved in making rough prototypes we will user-test.
  
; Brief explanation
+
; Expected Results
: The CC media widget will allow content from a user's CC homepage (a product we're working on) to be embedded into other sites, like Tumblr, WordPress, etc. Our main interest is in specialized widgets that excel at displaying particular media types, not a generic "file list" widget. For example, a great image widget probably looks and feels different from an academic paper widget.
+
: As mentioned before, you'll be responsible for early prototypes we will user test (for example, via [http://usertesting.com usertesting.com]), and based on that feedback we'll adjust the themes/views.
  
; Expected results
+
: We expect to need different styles for each user, as well as at least a few different views for the content: a "timeline" view, a "content type" view, and a "metrics" view that provides graphs/counters for how many times the content has been viewed/favorited/etc.
: A widget that is able to take CC licensed files and their metadata and visualize it in neat ways that users find compelling. The widget must also include the licensing metadata/attribution information: which license it's released under, the author's name/handle, and so on. Clever ways of displaying this information in a way that is accessible but not annoying will be a plus.
 
  
 
; Knowledge Prerequisite
 
; Knowledge Prerequisite
 
: JavaScript, HTML/CSS, node.js
 
: JavaScript, HTML/CSS, node.js
  
; Skill level
+
; Skill Level
: medium to low.
+
: Medium
  
 
; Mentor
 
; Mentor
 
: Dan Mills or other CC tech staff member
 
: Dan Mills or other CC tech staff member
  
=== Project: Media Fingerprinting Library ===
+
=== Project: CC Web Content API ===
  
 
; Brief explanation
 
; Brief explanation
: CC would prefer that all content on the Web include correct licensing metadata. Alas, that is not the case. So we're interested in code that will allow us to identify a given item across the Web, even if there's no metadata alongside it. The tricky part is: people often crop or resize images, clip videos, re-encode content, or quote only pieces of text. So a simple hash is not sufficient: we need more intelligent fuzzy matching. That's what this project is about.
+
: All CC licenses require attribution when using the licensed content. We've found that for most people, though, it's too cumbersome to do it correctly--even even when they have the best intentions. Not only that, but in virtually every case, the content author would never find out that their content was used, even if it was attributed correctly.
 +
 
 +
: So, we're interested in ways of making attribution completely automatic for websites, while also providing a way for content authors to find out where their content is being used, and even a way for those using the content to send a message or give "kudos" ("thanks") to the author.
 +
 
 +
: This is where the CC Web Content API comes in: it's a JavaScript library that scans the content on a page, and communicates with the OpenHome service to find out if any of it is CC licensed. If it is, it can '''automatically''' add a widget to the content providing the correct attribution data (author, etc) as well as a couple of buttons for e.g. sending a message to the author, or marking it as a favorite.
 +
 
 +
;Expected Results
 +
: For this to work, there are four things that need to be completed:
  
; Expected results
+
: 1. A way for OpenHome to fingerprint or add metadata into content when the content is first added to OpenHome. This is not the core focus of this project, but you need at least some basic metadata or fingerprinting to get to the next step.
: A library that provides two methods: 1) Given a media file, output a fingerprint, and 2) Given a file and a fingerprint, return the likelihood of the file matching the original file. You can focus your efforts on only one or two media types, or you can do more if it's possible.
+
: 2. An API for OpenHome to receive a URL and return the metadata for the file, if it is known.
 +
: 3. A JS library that implements the CC Web Content API. The library should be easily configurable to allow scanning only certain kinds of media (e.g., only images with a certain class property), and it should also check if there is already embedded metadata on the page.
 +
: 4. An HTML/CSS widget that the JS library will add to media files that were determined to be CC licensed. It should work on at least one kind of media file (for example, images).
  
: The library can be in a low-level language (C/C++) or you can use a higher-level language (JavaScript) if it's feasible. Speed is not a major concern at this point.
+
; Optional
 +
: If you want to go further, you can implement two features:
  
: Bonus: An additional API/method to detect content inside other files (e.g., a PowerPoint file that includes a CC licensed image, or a still image inside a video).
+
: 1. A "message author" button in the widget, which would (after a login or CAPTCHA) send a message to the author through the OpenHome service. The author can get an email, or the message can appear in a private area of their OpenHome page, whichever you prefer.
 +
: 2. A "kudos" button. This similar (in implementation) to the message feature, but instead of a message it is simply a very easy way to say "thanks" to the author--think "favorite" or "like" button. Kudos can appear in a public section of the author's OpenHome page.
  
 
; Knowledge Prerequisite
 
; Knowledge Prerequisite
: Media formats/encodings, JavaScript, C/C++.
+
: JavaScript, HTML/CSS, node.js
  
; Skill level
+
; Skill Level
: high.
+
: Medium
  
 
; Mentor
 
; Mentor
 
: Dan Mills or other CC tech staff member
 
: Dan Mills or other CC tech staff member
  
=== Project: JS Attribution Helper ===
+
=== Project: Media Fingerprinting Library ===
  
; Brief explanation
+
; Brief Explanation
: All CC licenses require attribution when using the licensed content. We've found that for most people, though, it's too cumbersome to do it correctly--even even when they have the best intentions. So we're interested in ways of making attribution completely automatic. This is where the JS Attribution Helper comes in: it scans content on a page, and if it determines that any of it is CC-licensed, it adds attribution automatically.
+
: CC would prefer that all content on the Web include correct licensing metadata. Alas, that is not the case. So we're interested in code that will allow us to identify a given item across the Web, even if there's no metadata alongside (or within) it. The tricky part is: people often crop or resize images, clip videos, re-encode content, or quote only pieces of text. So a simple hash is not sufficient: we need more intelligent fuzzy matching. That's what this project is about.
 +
 
 +
; Expected Results
 +
: A library that provides two methods: 1) Given a media file, output a fingerprint, and 2) Given a file and a fingerprint, return the likelihood of the file matching the original file. You can focus your efforts on only one or two media types, or you can do more if it's possible.
  
; Expected results
+
: The library can be in a low-level language (C/C++) or you can use a higher-level language (JavaScript) if it's feasible. Speed is not a major concern at this point.
: A JS library that works in conjunction with a service to scan media on a Web page, and 1) determine if the content is CC licensed by looking at embedded metadata or other methods (outside of the scope of this project), and 2) adds attribution information in a clean, unobtrusive manner for any CC content found.
+
 
 +
: Bonus: An additional API/method to detect content inside other files (e.g., a PowerPoint file that includes a CC licensed image, or a still image inside a video).
  
 
; Knowledge Prerequisite
 
; Knowledge Prerequisite
: JavaScript, node.js
+
: Media formats/encodings, JavaScript, C/C++.
  
; Skill level
+
; Skill Level
: medium.
+
: High
  
 
; Mentor
 
; Mentor
Line 60: Line 90:
 
=== Project: Metadata Embedding Library ===
 
=== Project: Metadata Embedding Library ===
  
; Brief explanation
+
; Brief Explanation
 
: In order to make it easier to track CC licensed content, it's possible to embed metadata into files (see our pages on [[XMP]] and [[Category:Filetype|filetype support]]). However, it's difficult for users to do this. We'd like to build a service that takes media files and is able to add licensing metadata, and the first step is to create a library that can do the low-level work.
 
: In order to make it easier to track CC licensed content, it's possible to embed metadata into files (see our pages on [[XMP]] and [[Category:Filetype|filetype support]]). However, it's difficult for users to do this. We'd like to build a service that takes media files and is able to add licensing metadata, and the first step is to create a library that can do the low-level work.
  
; Expected results
+
; Expected Results
 
: A library that is able to get/set XMP metadata on as many file formats as possible. We'll make a prioritized list of file types and agree on a core set before you start. JS is preferred for the library, but it could be written in some other language and have JS bindings.
 
: A library that is able to get/set XMP metadata on as many file formats as possible. We'll make a prioritized list of file types and agree on a core set before you start. JS is preferred for the library, but it could be written in some other language and have JS bindings.
  
Line 69: Line 99:
 
: JavaScript, possibly other languages/frameworks (see above).
 
: JavaScript, possibly other languages/frameworks (see above).
  
; Skill level
+
; Skill Level
: medium.
+
: Medium
  
 
; Mentor
 
; Mentor
 
: Dan Mills or other CC tech staff member
 
: Dan Mills or other CC tech staff member
  
=== Project: "Kudos" Widget ===
+
=== Project: Media Widget ===
  
; Brief explanation
+
: The CC media widget will allow content from a user's CC homepage (a product we're working on) to be embedded into other sites, like Tumblr, WordPress, etc. Our main interest is in specialized widgets that excel at displaying particular media types, not a generic "file list" widget. For example, a great image widget probably looks and feels different from an academic paper widget.
: There are many reasons why content makers decide to contribute their content to the commons by applying a CC license. We'd like to experiment what it would be like to add one more: direct "kudos" from Website visitors to them (in the future, we can expand the system to include different ways of saying "thanks"--including perhaps small donations).
 
  
: To that end, we're looking to build a widget that content authors could embed on their sites, and some basic infrastructure to enable the system to work. We're particularly interested in whether we could keep track of the reuse/remix chain for works (content that gets used to make new content), and tie that into the widget so that when a site visitor gives thanks, all of the authors of a work can get that warm fuzzy feeling.
+
; Expected Results
 
+
: A widget that is able to take CC licensed files and their metadata and visualize it in neat ways that users find compelling. The widget must also include the licensing metadata/attribution information: which license it's released under, the author's name/handle, and so on. Clever ways of displaying this information in a way that is accessible but not annoying will be a plus.
; Expected results
 
: A Website/service that lets content authors register, and gives them a button they can embed on their pages. When clicked, the button presents a few "kudos" messages, and/or a text box where the visitor can add a personalized message. Authors get an email notification, and can visit the site to view all their "kudos".
 
  
 
; Knowledge Prerequisite
 
; Knowledge Prerequisite
 
: JavaScript, HTML/CSS, node.js
 
: JavaScript, HTML/CSS, node.js
  
; Skill level
+
; Skill Level
: medium.
+
: Low
  
 
; Mentor
 
; Mentor
 
: Dan Mills or other CC tech staff member
 
: Dan Mills or other CC tech staff member

Revision as of 05:36, 12 April 2013

Creative Commons is participates in Google's Summer of Code as a mentoring organization. Student submissions for SoC 2013 will take place April-May; see the GSoC 2013 homepage for more details. If you want more information, you can send email to Dan Mills, or visit our irc channel at Freenode/#cc.

A Little Background

This year Creative Commons is planning to launch new products and tools to help authors and consumers use, share, and remix content. The first experiment we're launching is called OpenHome, go read the wiki page for it before you continue reading this one.

Seriously, go read OpenHome, this page will still be right here waiting for you.

Ok? Now you have a general sense of what the overall project is about. Here are some ideas to get you started. Keep in mind these are only starter ideas, which you can feel free to mix and match or propose something new if you think it's worth exploring.

(By the way, if you visited this page in the last couple of days, you may notice that the ideas have changed somewhat. The same ideas are still here, we just combined a few together, because they seemed too easy on their own!)

Project: Homepage Themes

Brief Explanation
OpenHome has a basic view which currently displays images only. However, OpenHome is meant to be a mash-up of a variety of media which includes images, documents, and more. We need smart ways to categorize, organize, and display this content. What's more, we may start by focusing on one kind of user to start with, but we will quickly need to think about other user types. This project is about creating OpenHome templates and features for two kinds of users:
* A university professor who wants a home page for their written papers.
* An amateur artist looking to show off their artwork and writing.
Based on these users, we will perform user research and come up with specific needs, which we will then build our app to support. You don't need to do the user research itself--but you'll be involved in making rough prototypes we will user-test.
Expected Results
As mentioned before, you'll be responsible for early prototypes we will user test (for example, via usertesting.com), and based on that feedback we'll adjust the themes/views.
We expect to need different styles for each user, as well as at least a few different views for the content: a "timeline" view, a "content type" view, and a "metrics" view that provides graphs/counters for how many times the content has been viewed/favorited/etc.
Knowledge Prerequisite
JavaScript, HTML/CSS, node.js
Skill Level
Medium
Mentor
Dan Mills or other CC tech staff member

Project: CC Web Content API

Brief explanation
All CC licenses require attribution when using the licensed content. We've found that for most people, though, it's too cumbersome to do it correctly--even even when they have the best intentions. Not only that, but in virtually every case, the content author would never find out that their content was used, even if it was attributed correctly.
So, we're interested in ways of making attribution completely automatic for websites, while also providing a way for content authors to find out where their content is being used, and even a way for those using the content to send a message or give "kudos" ("thanks") to the author.
This is where the CC Web Content API comes in: it's a JavaScript library that scans the content on a page, and communicates with the OpenHome service to find out if any of it is CC licensed. If it is, it can automatically add a widget to the content providing the correct attribution data (author, etc) as well as a couple of buttons for e.g. sending a message to the author, or marking it as a favorite.
Expected Results
For this to work, there are four things that need to be completed:
1. A way for OpenHome to fingerprint or add metadata into content when the content is first added to OpenHome. This is not the core focus of this project, but you need at least some basic metadata or fingerprinting to get to the next step.
2. An API for OpenHome to receive a URL and return the metadata for the file, if it is known.
3. A JS library that implements the CC Web Content API. The library should be easily configurable to allow scanning only certain kinds of media (e.g., only images with a certain class property), and it should also check if there is already embedded metadata on the page.
4. An HTML/CSS widget that the JS library will add to media files that were determined to be CC licensed. It should work on at least one kind of media file (for example, images).
Optional
If you want to go further, you can implement two features:
1. A "message author" button in the widget, which would (after a login or CAPTCHA) send a message to the author through the OpenHome service. The author can get an email, or the message can appear in a private area of their OpenHome page, whichever you prefer.
2. A "kudos" button. This similar (in implementation) to the message feature, but instead of a message it is simply a very easy way to say "thanks" to the author--think "favorite" or "like" button. Kudos can appear in a public section of the author's OpenHome page.
Knowledge Prerequisite
JavaScript, HTML/CSS, node.js
Skill Level
Medium
Mentor
Dan Mills or other CC tech staff member

Project: Media Fingerprinting Library

Brief Explanation
CC would prefer that all content on the Web include correct licensing metadata. Alas, that is not the case. So we're interested in code that will allow us to identify a given item across the Web, even if there's no metadata alongside (or within) it. The tricky part is: people often crop or resize images, clip videos, re-encode content, or quote only pieces of text. So a simple hash is not sufficient: we need more intelligent fuzzy matching. That's what this project is about.
Expected Results
A library that provides two methods: 1) Given a media file, output a fingerprint, and 2) Given a file and a fingerprint, return the likelihood of the file matching the original file. You can focus your efforts on only one or two media types, or you can do more if it's possible.
The library can be in a low-level language (C/C++) or you can use a higher-level language (JavaScript) if it's feasible. Speed is not a major concern at this point.
Bonus: An additional API/method to detect content inside other files (e.g., a PowerPoint file that includes a CC licensed image, or a still image inside a video).
Knowledge Prerequisite
Media formats/encodings, JavaScript, C/C++.
Skill Level
High
Mentor
Dan Mills or other CC tech staff member

Project: Metadata Embedding Library

Brief Explanation
In order to make it easier to track CC licensed content, it's possible to embed metadata into files (see our pages on XMP and). However, it's difficult for users to do this. We'd like to build a service that takes media files and is able to add licensing metadata, and the first step is to create a library that can do the low-level work.
Expected Results
A library that is able to get/set XMP metadata on as many file formats as possible. We'll make a prioritized list of file types and agree on a core set before you start. JS is preferred for the library, but it could be written in some other language and have JS bindings.
Knowledge Prerequisite
JavaScript, possibly other languages/frameworks (see above).
Skill Level
Medium
Mentor
Dan Mills or other CC tech staff member

Project: Media Widget

The CC media widget will allow content from a user's CC homepage (a product we're working on) to be embedded into other sites, like Tumblr, WordPress, etc. Our main interest is in specialized widgets that excel at displaying particular media types, not a generic "file list" widget. For example, a great image widget probably looks and feels different from an academic paper widget.
Expected Results
A widget that is able to take CC licensed files and their metadata and visualize it in neat ways that users find compelling. The widget must also include the licensing metadata/attribution information: which license it's released under, the author's name/handle, and so on. Clever ways of displaying this information in a way that is accessible but not annoying will be a plus.
Knowledge Prerequisite
JavaScript, HTML/CSS, node.js
Skill Level
Low
Mentor
Dan Mills or other CC tech staff member