Last week Kinkade asked me for a brief overview of how the license engine, web services and other bits of code all fit together to create the joy that is creativecommons.org. "Sure," I thought; "that's simple!"
Er, maybe not. Fourty-five minutes, five marker colors and multiple digressions later, I had the following diagram of life as it is today.
"The Present", by Nathan Y.; CC BY-SA 2.0
Life sucks.
Asheesh joined us and we started talking about how we can make this better. The above, while eminently sucky, has grown up during my time at Creative Commons. All those decisions made sense at the time, but in aggregate we've got lots of duplicated code, a branch of code named the gradually-increasing-sanity-branch
which doesn't (I take the blame for that one), and plenty of unnecessary complexity. Half an hour later, we had mapped out The Glorious Future® :
"The Glorious Future", by Nathan Y.; CC BY-SA 2.0
A little simpler, huh? And the "future" diagram shows all the functionality of the present, plus three packages not displayed on the original diagram. Our immediate goal in moving in this direction is the completion of cc.license
(labeled as "cc.licenze" in the diagrams to distinguish it from the existing implementation) which will replace the existing XSLT processing using for issuing licenses and wraps the RDF (which is the canonical representation of the licenses anyway). We'll also manage to dramatically reduce the number of svn:externals
we use, which is good since we're moving away from Subversion for some projects. My goal is to get this upgrade done as soon as possible so we can focus on things that are actually interesting instead of our own infrastructure.