Government Information Licensing Framework

frank, December 12th, 2008

David Torpie of the Office of Economic and Statistical Research at the Queensland Treasury gave a talk on “Government Information Licensing Framework: a multidisciplinary project improving access to Public Sector Information.” This is a project to give greater access to Australian government data, to make government more transparent, and in doing so to develop a standard set of terms and conditions that are broadly applicable to other government contexts.

David first answered the question of why the Australian government even needs to worry about licensing its works. In Australia, unlike the United States, the government has copyright over works produced by government agencies. Australian copyright law also extends to less-than-creative works (such as telephone directories), which increases the importance that public licensing is clear and simple.

The solution developed at the Queensland Treasury is “digital license management”, or DLM. DLM is a technology to embed license metadata into documents and other works, developed in Java. Benefits include ease of linking from data to license, and finding information based on its license. DLM was developed before a suitable alternative was available; liblicense now provides a similar functionality in C. The team developing DLM is working with CC’s tech team for collaboration, and initial indications are that a dedicated Java tool may prove very useful.

Comments Off

liblicense 0.8 (important) fixes RDF predicate error

asheesh, July 30th, 2008

Brown paper bag release: liblicense claims that the RDF predicate for a file’s license is rather than Only the latter is correct.

Any code compiled with liblicense between 0.6 and 0.7.1 (inclusive) contains this mistake.

This time I have audited the library for other insanities like the one fixed here, and there are none. Great thanks to Nathan Yergler for spotting this. I took this chance to change ll_write() and ll_read() to *NOT* take NULL as a valid predicate; this makes the implementation simpler (and more correct).

Sadly, I have bumped the API and ABI numbers accordingly. It’s available in SourceForge at, and will be uploaded to Debian and Fedora shortly (and will follow from Debian to Ubuntu).

I’m going to head to Argentina for a vacation and Debconf shortly, so there’ll be no activity from on liblicense for a few weeks. I would love help with liblicense in the form of further unit tests. Let’s squash those bugs by just demonstrating all the cases the license should work in.

Comments Off

A Farewell

tannewt, August 24th, 2007

Well, today is my last day. I’ve thoroughly enjoyed my time here at CC. Thanks to everyone here at the office and elsewhere who I interacted with this summer. I’ve met a lot of innovative, hardworking folks and they all deserve a big kudos. While I’ve been here I’ve created liblicense which had been conceived for a while by Jon. I think its at a point where inclusion into content platforms is now the key. We’ve done three releases but technically four. None of this would have been possible without the help of Jason Kivlighn. Back at the University of Washington (UW) him and I were roommates and will be living in the same house this fall. Jason is a super coder who finished his own Google Summer of Code project about halfway through the summer. Instead of just fizzling out he helped me by revamping parts of liblicense and writing modules to support all of the formats we currently support. I wouldn’t have gotten nearly as far without Jason’s help. Before I bid farewell and move on, let me recap a bit of what I did.

Well, my primary project was liblicense. Basically, I was handed down the idea of tracking licenses on ‘the desktop’. I arrived to find tons of UI mockups created by Rebecca for my implementing pleasure. Before I began implementing the UIs I spent the first three or four weeks conceptualizing and implementing the core liblicense library. The first (and second) release was on July 13. After this release I began focusing on Gnome desktop integration. I really enjoyed seeing a frontend to the hardwork I did on the backend. Hopefully, more will be done. At the same time as I did the Gnome integration, Jason mirrored my efforts in KDE4. After the release of the gnome stuff and library changes on July 30, I moved onto Sugar integration. I’ve since finished the Sugar integration and the files are available here: . We’ll probably never officially release it due to its exclusivity to the Sugar interface. I’m proud of where liblicense has come. Like I’ve written before, I think that license awareness is important and liblicense is a small, important step in the right direction.

My other project which I volunteered to help with was the LiveContent liveCD. When I got here Tim was assigned the task of producing the new Creative Commons LiveCD with a target of LinuxWorld (August 8th) as a release date. After a week or so here I offered to technically advise the project. While my intention was to only be a reference I quickly became technically responsible for the CD and its creation. Although this was not what I had bargained for, it was well worth it. To create the CD we utilized livecd-creator, a Fedora LiveCD creator. It was a challenge for me to adapt to a different packaging system (from portage for Gentoo to rpm for Fedora). Additionally, although livecd-creator is a step in the right direction (like liblicense) it did not fulfill all of our needs and resulted in some hacky scripts to build the CD. To counter those frustrations I added an easter egg to the CD which I will not disclose. :-D Having Tim orchestrating the entire project also reduced my stress level quite a bit. However, it is quite nerve-racking creating a LiveCD to be duplicated 1000 times and pushed by both Creative Commons and Fedora. All in all, it turned out great. The next version(s), which I will not be a part of, should be even better.

I’m moving on. While I’ve enjoyed my time here at CC, I’ll not be continuing on these projects. I’ve got a somewhat short attention span for projects and it has run dry for both LiveContent and liblicense. Over the last few days I’ve been brain dumping so that Asheesh can pick up where I left off. This move should be good for the projects because Asheesh is a very smart and driven person. You should check out his current project jsWidget. Since I’m done, I’ll be driving home to Washington (the state not the district) tomorrow morning. When I get there I’ll be enjoying home and working on educational materials for teaching Python in the intro Computer Science course at UW. After that I plan on focusing on my own projects.

Lastly, I’d like to thank everyone here at CC. Alex, our graphic designer, has been a huge help on both liblicense (he wrote the Ruby bindings) and LiveContent ( he did the sweet packaging). Nathan Yergler’s flexibility allowed me to switch between projects on my own will and thus keep stress to a minimum. All of the other CC interns, Tim, Rebecca, Cameron and Thierry, made this summer great because we bonded as a group as we worked hard and hung out at various events. Finally, Jon has been an immense help by entertaining my questions, dealing with my grumpiness and encouraging me on both of my projects. As always, there are many others who made this a great experience but the folks mentioned are those who I worked with day-to-day. Thanks, everyone. I hope that what I started while here at CC sees much use in the future. Cheers.

Comments Off

Licensing on the Gnome Desktop

tannewt, August 3rd, 2007

A few days ago we released version 0.3 of liblicense. This version focused on bringing liblicense onto the desktop and improvements to make that a satisfying experience. The primary things we added to integrate into Gnome were a generic GTK license chooser widget, default license chooser, and nautilus extension. These things combine to demonstrate the power of licensing on the desktop. Additionally, we added optional sqlite3 cache support to speed up the get_licenses() function primarily. Here is a run through of the changes.

The GTK license widget is used extensively throughout the integration. The widget provides an interface to the license choosing functions in liblicense. A user selects a license by toggling various attributes.

GTK Widget in Default Chooser

This is the default license chooser. The GTK widget is in the frame above the buttons. The widget provides get_license and set_license which in this case is used to set the default license for the system. Ideally, the default system license would be used by applications when they embed license data upon save. However, that is ideal and not implemented yet.

The default license is used in the nautilus extension. The default license is used in the file properties license tab whenever a file doesn’t have a license set. The properties tab also utilizes the GTK widget. Once the user selects a license for the file(s) and closes the dialog the data is written to the files using the liblicense io modules. These are C modules which embed and extract license data in particular file formats. Having numerous modules provides decent coverage of file formats. Currently, if Exempi support is enabled, all files can be handled by creating an XMP sidecar file in the absence of any other means of license storage. We’ve also considered other means of license association but see embedding as the ideal option. Here is a screenshot from nautilus.

Nautilus File Properties

The second aspect of the nautilus integration is license loading upon folder open and resulting emblems. All the extension does is reads the license from every file nautilus loads and tags Creative Common’s licensed files with the CC logo and non-CC licensed works with our license icon. Here is a screenshot of the emblems.

Nautilus CC emblems

Thats about it. We’d love feedback before our next release (0.4). On the CC wiki we have a running list of things to do. You can get liblicense 0.3 from the cctools download page The liblicense home is also on the CC wiki available here. Its currently available in source packages, rpms and ebuilds and will be available in debs by the end of today. Lastly, there is a video of liblicense in action on youtube.

1 Comment »

liblicense 0.2

tannewt, July 13th, 2007

Its here. We just released our first version of liblicense. Its pretty basic but should demonstrate what it’ll do. With the next version, 0.3, we’ll clean up things we’ve spotted already and also things that we’ll discover while we build some apps on top of it. Minimally, 0.2 has a command line program, license, which can be used to get, set and list licenses. We’d love feedback on the code itself and its greater role in the desktop. Please simply reply to this post.

The source files are available on sourceforge.

Comments Off

Exempi 1.99.3 Released

jakin, July 11th, 2007

Hubert Figuiere has released Exempi 1.99.3

An important addition in this release is the ability to serialize XMP to a string, making sidecar XMP possible. The soon-to-be-released Liblicense 0.1 already takes advantage of this feature; it uses Exempi to read and write licenses within XMP sidecar.

Hopefully, the API will soon stabilize in preparation for the 2.0 release.

Comments Off