As Nathan already mentioned, we will be once again participating in Google Summer of Code this year. GSOC can be a lot of fun, but can also be very intimidating or frustrating for both students and mentors.
Luckily for everyone, some kind folks have written up a nice post called The DOs and DON’Ts of Google Summer of Code: Student Edition (and I hear there may be more such posts on the way?). We thought it was a good read, and maybe if you’re considering in participating in Google Summer of Code, reading (and following) that advice will help make Google Summer of Code both smoother and even more fun than it already is!
Addendum: Also, I think a lot of difficulty in projects GSOC, and in a lot of free software development, is caused by natural human shyness. Which makes sense. But in general, if you’re afraid or embarrassed to ask questions or participate, remember that your mentor is here to help you. So keep that in mind! (… and also the aforementioned do’s and don’ts post’s advice.)1 Comment »
Creative Commons is once again participating in the Google Summer of Code, an opportunity for students to spend the summer writing open source software. Students have the benefit of being mentored by established open source developers (we think ours are pretty good), and organizations develop their network of contributors. We’ve participated since 2006, with mixed success. Some projects go nowhere, while others, like last summer’s work on the OpenOffice.org plugin, have far exceeded our expectations.
We have a lot of ideas, and this year we’re looking for students interested in working on integrating Creative Commons into the larger ecosystem. Creative Commons licenses have revolutionized sharing on the web by reducing the friction between creators and users of work. We want to further reduce that friction by integrating CC license selection, display, and content discovery into other applications and tools. In the past we’ve had students develop extensions and add-ons for OpenOffice.org/LibreOffice, Drupal, WordPress, and Banshee. There’s some good code there, and we love the work that’s been done. We want this year’s prospective students to think about what applications they use that could integrate CC license selection or — at least as importantly — content discovery. Use our existing code as a starting point for ideas, and craft your proposal to tell us how your project will integrate CC licensed content into users’ daily life.
Not a student? We’ve started a hit list of applications on the wiki, and if we’re missing your favorite, add it along with some thoughts about how you’d like to use CC.
I’m looking forward to a great GSoC this year, and can’t wait to see the great ideas that come from students and the community!1 Comment »
Coding period of GSoC 2010 officially ended 16th. I was able to release the new stable version of the OpenOffice Plug-in on that day. So it’s time to have a look back on what I did for the past 4+ months and discuss about the issues I met.
The proposal for the development had following tasks.
- Supporting OpenOffice.org 3.0 – 3.1.
- Adding support for CC0.
- Adding support for Draw.
- User Interface Improvements.
- Adding references to important pages like FAQ and About.
- Provide help around what each option means (“what is Share Alike”).
- Display license information when opening CC licensed documents.
- Other improvements for the UI.
- Speed up the first time license insertion process.
- Support for Internationalization.
I started working on the project since mid April. Moving the code base to OpenOffice.org 3.1 SDK was easy. I also updated the other libraries to their newest version. Then I tried to implement the Draw support. I found that implementation for Draw should be same as the implementation for Impress. So adding Draw support was fairly easy, but I had some problem with the page sizes. The available code did not conceder about the page sizes and the margins. The next problem was; the visible license notice was added to the master page of the Draw/Impress document like a background of an Impress document. Therefore the user can not arrange the notice as he wants.
While I fixing those issues, Nathan asked me to have a look at the Flickr Image Re-Use plug-in. Then I started look at it and integrating its functionality to the CC plug-in. I had to update the API wrappers for the Flickr plug-in to make it working. Then I started using that code to add image reuse support for Open Clip Art. I also improved the loading time of the Flickr dialog.
Then I started RDF adding RDF Metadata in the document. Currently this works only in Writer documents, because OpenOffice.org currently supports adding RDF only for writer documents. Then I get back to improve the image insertion I added Wikimedia Commons and Picasa for that. So the users can now add images using four well known image sharing sites; Flickr, Picasa, Wikimedia Commons and Open Clip Art.
The next thing I did is the UI improvement and adding public domain tools. Those two things were carried in parallel. After discussing with my mentors Nathan and Christopher we decided to use a tabbed window. This will make the licensing less confusing and easy to use.
Next was the internationalization phase. I used the existing i18n repository to add some translations to the licensing dialog, but still there are new strings available in the dialog that should be added to Transifex. Hope those new strings will added in the future. These translations files (.po files) need to be converted to Java resource bundles (internationalization method used in Java). The source folder includes a script for this, and the instructions can be found in the README.
For the last few weeks I was testing and trying to find out the issues related to the plug-in.
Though the new version released as a stable release, there are some problems which actually out of our control. This plug-in will not work in Mac OS Leopard where Java 64bit is the default; this is a known issue in OpenOffice.org. In additions to that, Mac OS X also have a problem in displaying AWT windows (issue 92926). I am still trying to see whether there is anything I can do.
The next issue is with Linux. We tested the plug-in in Debian and Ubuntu, in both cases if the plug-in is installed through the extension manager, the menus either become gray or they will not be available at all. This issue is most probably a problem in 9.10 and 10.04 because the plug-in worked well in Ubuntu 9.04 and Windows. I am glad to say that I have found a workaround for this. If the plug-in installed using the terminal there will not be any problem. Users can use both CLI and GUI versions of the unopkg (Extension manager).
To use the CLI version run
/usr/lib/openoffice/program/unopkg -f ccooo.oxt
and for the GUI version use
/usr/lib/openoffice/program/unopkg gui -f ccooo.oxt
Actually this is not an issue of the plug-in itself it should be a problem with Ubuntu. Similar plug-ins likeOoo2GDand Open Cards are also affected by this problem.
I tested this plug-in in Windows and Linux in both x86 and x86-64 versions and it work without any problem (in Linux with the workaround).
Windows users can simply install it by double clicking the plug-in. Ubuntu (may be other Linux users also) need to install it trough the terminal using
/usr/lib/openoffice/program/unopkg gui -f ccooo.oxt
/usr/lib/openoffice/program/unopkg -f ccooo.oxt
The source code of the plug-in can be found at http://code.creativecommons.org/viewsvn/ccooo/branches/akila-gsoc-2010/
Comments and Feedbacks
While I was searching the Internet to find more issues related to the plug-in, I found some blog posts and comments about the plug-in. I have listed them below.
All of these feedbacks were good, except the Mac OS X issue. I am trying to fix it as soon as possible.
To add new feedbacks, users can use the extension page at extension repository. Still there can be issues related to the plug-in. Those issues and feature requests can be added to the CC issues list.
Nathan suggested a feature for Flickr; to extract add images from a given URL. So users can copy and paste the URL to OpenOffice.org and the plug-in will automatically download the image and add licensing data also. This can be used for others services also.
In addition to that localization should be completed.
This is time time to thank all the people who helped me in achieving this. I should thank the following people specially for helping me;
- Nathan Yergler: for helping me with good suggestions in the pre GSoC period and in the community bonding period.
- Christopher Allan Webber: for mentoring me in this process and for all the good suggestions he gave.
- Nathan Kinkade: for helping with the SVN issues (yes I had some :)).
- Alex Roberts and Greg Grossmeier: for their valuable suggestions in making the GUI.
Now it is the time to rip off the “test” part from the plug-in name “Creative Commons Licensing (test)” :). The plug-in was released for beta testing since May 2010 and it was downloaded more than 400 times. But making a perfect program is impossible thing. So I appreciate if the users can report any issues and suggestions as I mentioned in the Feedback section. I will always try to fix/implement them.
More information about the plug-in and the screen shots are available in the wiki page.6 Comments »
This is a short one. This week, I did only a few things related to the plugin: First, planned features and bugs are now listed in the issue tracker. Second, you can now specify default attribution in the form of rights holder and URL. I did also work on the default licensing mechanism, but it probably needs a complete overhaul.
For this week, I will be looking into more REST API stuff, get rid of the shortcodes so even with a deactivated plugin, there will still be content (parsing the elements WordPress inserts instead, using DOM methods) and approach the mentioned rewrite of the default licensing mechanism.No Comments »
One week ago, my laptop’s harddisk broke down during the afternoon. I had been accustomed to occasional data loss before — sometimes, pictures would be garbled and on one incident, a 100 MB sound file was corrupted and could not be copied. However, as the kernel printed unpleasant warnings during every startup, aborting the normal boot process, insisting that the file system was damaged, I decided it was the proper time to panic and check the backups.
Getting a replacement drive took me several days. As I did not have money to spare, my first hurdle was activating the GsoC prepaid card. To make it short, I was not able to activate the card using the error-prone web site, but succeeded in doing it by phone. When I finally held the new hard drive in my hands, I felt like an RPG character, who had in a side quest acquired the item necessary to continue his main endeavour; on sunday, almost all backups were applied.
Regarding the plugin, I have fixed a number of small bugs and also added several new features, listed below:
- Default licensing: Users can now choose a license that gets applied to every attachment if they do not choose a specific license.
- Post thumbnail figures: WordPress post thumbnails can now be embedded as figures with annotated markup, just like inline content. Since many theme authors do not properly filter the markup returned by the WordPress function
the_post_thumbnail()(and similar ones), expecting only an <img> element, this option is disabled by default.
- Fallback links for multimedia content: <audio>, <video> and <object> elements now sport a fallback link for browsers that do not support HTML5.
- Support for alternate content and plugin directories: Since WordPress 2.6, you can change the names of the wp-content and plugins directories; earlier versions of the plugin did not cope with that. I had struggled with this issue before, but after Moritz Metz provided a working default configuration for wp-config.php, everything fell into place fast.
- New stylesheet: I modified the existing grau style, using 80×15 icons. I am pondering setting it as the standard stylesheet for the plugin. This is how it looks:
For this week, I will focus on making default licensing more expansive, adding differing license options for different types of media content and maybe even for single users. I will also try to modify the existing stylesheets so they work well with post thumbnail figures. As Nathan Kinkade suggested, I may expand the scope of the plugin to also manage licensing metadata of pages and posts.2 Comments »
For the last two weeks I was focusing on the User Interface and the Picasa support. At first lets look at the new changes to the license insertion dialog. I have changed the UI to something similar to the license choosing page in Creative Commons website. The new UI is quite simple to understand and it will not confuse the user. I have also included the tips about each choice. Currently you can see them when you move your mouse over the “i” image in the right side of each choice. The tip is displayed in a single line and that cannot be changed. I am going to add a small dialog for each of the tip which will activate when you click the “i” for the choice.
The next thing I did in the past two week was Picasa support for the insert image menu. Now you can add creative commons licensed images. Currently you cannot select the images by license and the image sizes when inserting the image to the document. I am hopeing to add this feature very soon.No Comments »
This week I was busy and lazy in turns, so I worked on the plugin only on two days. These are the tasks that I finished:
- Setting up a test WordPress installation, to start with a clean slate.
- Installing the Hook Sniffer plugin; which prints out every WordPress hook triggered on a page load.
- Creating a simple form interface (screenshot).
- Putting all this together into a dummy plugin that adds the non-functional interface to the WordPress upload manager.
I am aware that this is not much and will try to improve on my progress for the coming week. Currently I am trying to find out how to correctly handle the form input and write the incoming data into appropriate database fields, license representation in the media manager will probably come after that.
As always, the code is in the official Git repository.1 Comment »
Who I am
I’m Nils Dagsson Moskopp, a 22 year old student of philosophy and computer science, living in Berlin (German speakers may check out my blog). I dislike the act of programming, but love the results, so I seem to have no other choice than to do it from time to time.
Recently, after submitting a proposal, I got accepted into the Google Summer of Code program, being mentored by Nathan Kinkade. In the rest of this entry, I will do my best to explain how it came to that and what kind of software I intend to create.
As far as I know, there currently is no automated, easy way to have human- and machine-readable markup for specific subsections of a blog post in the blogging software WordPress; it is only possible to have an entire page licensed under one specific license. Further complicating the issue is the fact that the WordPress media manager actually does not know about licenses accociated with specific content. This poses a problem for the not-so-uncommon use case of embedding CC-licensed media, mainly photos.
I was first confronted with the idea of having an automated way to markup media with Creative Commons licensing information when reading Matthias Mehldau‘s post More precise Creative Commons HTML-Codes. He envisioned an annotation containing not only the well-known CC license symbols, but also the jurisdiction and a button to show the markup used, for easy re-embedding. Well versed in graphics design, he also created a mockup:
Matthias Mehldau’s Mockup
Shortly after that, Julia Seeliger posted a suggestion how a Creative Commons plugin backend for WordPress could look like. She suggested integrating the official license chooser or a drop down list within the WordPress upload form.
We three chatted about these ideas, me even actually implementing some parts (see next section), but nothing qualifying as currently usable came from that. When approximately one year later, I did come upon the CC wiki site describing the developer challenge titled Support for CC licenses in WordPress Media Manager, I chose to apply for that with Google Summer of Code.
As mentioned in the introduction to the last section, a tool that provides easy licensing management for WordPress media content, automating subsequent insertion, currently does not exist. Several existing projects, however, have features related to this goal; code re-use may be possible.
In 2006, George Notaras created the Creative-Commons-Configurator WordPress Plugin. It allows the user to choose a global license for his or her blog, using
the web-based license selection engine from CreativeCommons.org and adds localized machine- and human-readable license information to pages and feeds. Similar plugins, putting global licensing information into footer and sidebars, exist.
For GSoC 2009, Dinishika Nuwangi made a WordPress plugin called wprdfa (not to confuse with wp-rdfa). Unfortunately, the project has an empty README file. Judging from a quick glance at the source code, part of its intended purpose is to add buttons to the TinyMCE editor integrated into WordPress, although on installation I was unable to see this functionality. The related developer challenge still seems to be open, on the page the plugin is described as
Also in 2009, I created two pieces of software, inspired by a post on the WHATWG mailing list. First, a web application generating HTML5 license markup (enriched with Microdata, see next section), second a WordPress plugin capable of generating similar markup using both Microdata and RDFa. And there was much rejoicing.
It is important to note that since then the HTML5 standard has changed and the generated markup is no longer valid.
On a less technical note, the German blog Spreeblick has a unique way of presenting the license information, only showing a small “cc” in the bottom left corner; on hovering, author name and a link to the source are presented (live example). However, while Spreeblick is using WordPress, the folks behind it have no intention of releasing their plugin: As Max Winde told me in April 2009, it is tightly entangled with their image layout functionality and would require complex cleanup.
I plan to implement the presentation part using the new HTML5 elements figure and figcaption. Together, they can be used to denote content
with a caption […] that is self-contained and is typically referenced as a single unit from the main flow of the document. A code example shows how markup using the figure element may looks like:
<!-- content goes here -->
Naturally, as a rather general markup language HTML5 does not contain any elements to give this construct more specific meaning, such as marking up which license applies to said content. However, two markup extensions provide this capability at the attribute level, the complex and established RDFa and the simpler, newer Microdata proposal, part of HTML5. While both standards are sufficiently open, RDFa is endorsed by Creative Commons; for this reason I will not stray into Microdata territory unless I have time to spare at the end of GSoC.
To this point, I have been only accounting for machine readability. Nevertheless, with CSS it is easily possible to beautify the visual presentation in nearly any way imaginable. The following two screenshots, taken with the now-defunct WordPress plugin I created in 2009, exemplify this — both are based on the same markup.
On the author side, I plan to have the plugin look like the Spreeblick one (screenshot), which will mean adding options to the WordPress media uploader:
- an additional drop down list, for choosing one of the six main CC licenses
- an additional text input for the author or rights holder
- an additional text input for specifying the source URI
Media could then be inserted the usual way, with the RDFa annotation automatically generated.10 Comments »
This past year was my last at the University of Toronto, making this summer my last chance to participate in the Google Summer of Code. I searched hard for a project and mentor organization that would suit my interests, and when I noticed that the Creative Commons Drupal module was in need of some developer love, I knew exactly what I wanted to spend my summer doing. With John Doig as my CC mentor, and Kevin Reynen (the module’s maintainer and initial author) as an unofficial Drupal mentor, I’ve been privileged to have spent the past few months updating and extending the module.
A couple years ago, development for Drupal 4.7 was begun, but it was never quite completed. CC Lite came to be the reliable choice for Drupal 6. However, CC Lite’s scope is limited — it allows you to attach a license to content in Drupal, but that’s about it. The main CC module’s vision is broader — to fully integrate CC technology with the Drupal platform — and I hope I’ve helped to realize that just a little.
Some of the module’s features:
- it uses the CC API for license selection and information (so, for example, when new license versions are released, they become available on your Drupal site automatically)
- you can set a site-wide default license/jurisdictoin, and user’s can set their own default license/jurisdiction
- ccREL metadata is supported, output in RDFa (and, optionally, RDF/XML for legacy systems)
- supports CC0, along with the 6 standard licenses and the Public Domain Certification tool
- you can control which licenses and metadata fields are available to users
- basic support for the Views API has been added (including a default /creativecommons view)
- there’s a CC site search option
The module is still listed as a beta release, as some folks have been submitting bug fixes and patches over the past few weeks, though it’s quite usable. Special thanks to Turadg Aleahmad, who’s helped with a lot of the recent bug fixes towards the end of the GSoC term, and committed to being active in future development. If you’re into Drupal development, we could use help with testing, and any translations would be greatly appreciated too.
Right now, the focus is on getting to a stable release, but we’ve got lots of ideas for the future too. Thanks to John and Kevin for their support through the summer, and to Turadg for his recent help. I look forward to seeing the module put to good use!
I’m a musician, writer, software developer, free culture / free software advocate and recent graduate of the University of Toronto — get in touch at http://blaise.ca/No Comments »
So after setting up EC2, S3, grabbing the files from S3, SCP-ing the python scripts and running them, one would expect to see some results. Upon the polite request of Asheesh here is a sampler.
The first script (dealing with urls that change their license, named licChange.py) results in an output which lists the URLs (that change their license [type, version or jurisdiction]), the license info and the date(s) of change:
http://blog.aikawa.com.ar/ [['by-nc-sa', '2.5', 'ar'], ['by-nc-nd', '2.5', 'ar']] ['21/Sep/2007:11:38:56 +0000', '22/Sep/2007:05:40:22 +0000']
The line above shows that the license for the URL ‘http://blog.aikawa.com.ar/’ was changed from ‘by-nc-sa 2.5 Argentina’ to ‘by-nc-nd 2.5 Argentina’ some time between 11:38:56 GMT on the 21st of September 2007 to 05:40:22 GMT on 22nd of September 2007. The format may seem a bit awkward but you can expect a facelift for the results file. I was previously planning to re-read the file to generate statistics but we can have a seperate file for storing data and another one for the stats.
Similarly, the following lines out of the results file for licChange.py from 2007-09 show license changes for ‘http://0.0.0.0:3000/’ and ‘http://127.0.0.1/actibands/castellano/licencias.htm’ and *many other internal URLs:
http://0.0.0.0:3000/ [['by-nc-sa', '3.0', ''], ['by-nc-sa', '3.0', ''], ['by-nc-sa', '3.0', ''], ['by-nc-sa', '3.0', ''], ['by-nc-sa', '3.0', ''], ['by-nc-nd', '3.0', 'nl'], ['by-nc-nd', '3.0', 'nl']] ['17/Sep/2007:08:10:28 +0000', '17/Sep/2007:17:50:28 +0000', '18/Sep/2007:16:25:47 +0000', '19/Sep/2007:13:03:23 +0000', '19/Sep/2007:13:11:16 +0000', '20/Sep/2007:22:16:09 +0000', '20/Sep/2007:22:16:39 +0000']
http://127.0.0.1/actibands/castellano/licencias.htm [['by-sa', '2.5', 'es'], ['by-nc-sa', '2.5', 'es'], ['by-sa', '2.5', 'es'], ['by-nc-sa', '2.5', 'es'], ['by-sa', '2.5', 'es'], ['by-nc-sa', '2.5', 'es']] ['27/Sep/2007:20:50:44 +0000', '27/Sep/2007:20:50:44 +0000', '27/Sep/2007:20:51:00 +0000', '27/Sep/2007:20:51:00 +0000', '27/Sep/2007:20:51:23 +0000', '27/Sep/2007:20:51:23 +0000']
The licenses for http://0.0.0.0:3000/ are ported for Netherlands (nl) and the one for http://127.0.0.1/actibands/castellano/licencias.htm are ported for Spain (es). Note that presently all the occurences of any URL that changes its license is outputted, this will be changed in the next nightly build. This included a better formatted result file with stats on total number of URLs changing licenses and even stats distinguishing changes between license change and version change.
Akin to this (licChange.py) there are 3 more scripts, licChooser.py, licSearch.py and deedLogs.py.
licChooser.py grabs metadata usage information and generates stats in absolute numbers and percentage of all entries, eg.: “16 out of 100 items are tagged as Audio [16%] of total entries and 29% of items with Metadata”
licSearch.py grabs information from the logs for search.creativecommons.org like the query, the engine and the search options (commercial use and derivatives).
deedLogs.py looks at the logs for the deed pages, employs MaxMind GeoIP to do a location lookup and grabs the deed page being loked at.
So this is what we have so far.No Comments »