Preface: I’m asking a question, not making a claim in this post. Please read this accordingly.

This new SSE extension that Microsoft recently pushed out is very odd in one respect that I don’t understand. Some have voiced satisfaction that this RSS/OPML extension has been released under a Creative Commons license.

My reading of the license is that while the specification has been released under the license, your ability to implement the specification and write software based on it is not clarified by the use of CC. The license says that you can:

… copy, distribute, display, and perform the work

Is that my license to implement SSE?

Regarding the license, Microsoft says:

As to software implementations, Microsoft is not aware of any patent claims it owns or controls that would be necessarily infringed by a software implementation that conforms to the specification’s extensions.

It’s this part that matters, not the fact that it’s CC licensed. In fact, I don’t see any big benefit from licensing this using CC… do I want to be able to make derivative licenses? While I don’t think that it is harmful for people to do this, it strikes me that the emphasis has been placed on something that doesn’t really matter. The part that matters is the bit where Microsoft says what you can do with implementations based on the license, which is that they will offer a:

… royalty-free patent license on reasonable and non-discriminatory terms…

Hmm. Reasonable. Non-discriminatory. Hmm. Vague.

RSS 2.0 is in the same boat based on this interpretation:

RSS 2.0 is offered by the Berkman Center for Internet & Society at Harvard Law School under the terms of the Attribution/Share Alike Creative Commons license.

I just don’t know what that means in terms of my ability to implement RSS 2.0. It seems clear that I could create Phil’s Simple Summary format and base it on RSS 2.0, however.

For comparison, RSS 1.0 specifies this in the “Rights” part of the spec:

This copyright applies to the RDF Site Summary 1.0 Specification and accompanying documentation and does not extend to the RSS format itself.

That is clear: the license applies to the documentation, not anybody’s right to implement it.

Please set me straight:

When I write a spec for a format or API and release the documentation under a CC license, does it have any implications for someone’s ability to implement that format or API?


: Contrast this non-clarity with the OASIS Open Document Format for Office Applications intellectual property information. That explicitly spells out the fact that you can make royalty-free implementations of the specification and that Sun and OASIS won’t enforce any of their applicable patents that may affect implementations.

GmailUI: Making Desktop Applications Behave like Websites

Stefano recently pointed me to a Thunderbird plugin called GmailUI that adds a few cutesy keystroke features to Thunderbird. It’s quite useful, especially the archive feature. The only thing that I don’t like is that I now have to press ctrl-j to mark a message as junkmail and move it to my junk folder. But it’s a net improvement regardless of this.

This is the first time that I’ve purposely modified a desktop application behave more like a website.

Watching Rodney Mullen on Google Video

Rodney Mullen

I skateboarded pretty seriously for about 7 years when I was in high school and college and had a lot of fun doing it. One of the most insanely creative and mind-blowing skaters on the scene back then was a guy named Rodney Mullen. I think he had a 13-year streak of 1st place finishes in every contest that he entered.

I have to assume that most of you aren’t familiar with this guy, but watching him skate is like watching Michael Jordan. He’s just so impressive. Last night, I started typing his name into Google’s video search and sat in amazement watching him.

Check it out.

Google Analytics

Many people probably saw that Google Analytics was released today, but probably not as many people actually tried it out. I immediately installed it on Béa’s Kitchen and was eager to try this thing out.

I have to say that this is probably one of the coolest things that Google has released, which is unfortunate since it’s also by far the worst user experience that I have had with any of their other products. The site was incredibly slow all day and unresponsive at times. Eventually, I received a notice saying that Google was upgrading accounts and that the service was unavailable when I tried to log in. Although there are FAQs stating that it takes a few hours for data to display in the cool graphs and reports in Google Analytics, I didn’t actually believe this; I’m so conditioned to getting everything on-demand these days.

There are broken links in the admin interface of GA, links to FAQs that don’t exist and other basic stuff that I’m really not used to in Google products. I’m optimistic but generally disappointed with GA so far.

Web Services: Outside in vs. Inside out

When I write code, I make frequent use of third party libraries (or modules or extensions, depending on the language) to save me time and increase the speed with which I can write a given application. Most frequently, I use libraries issued under Open Source licenses like the GPL, LGPL, Apache, CPL, MPL or BSD license. This is nothing new and if you write code, you probably do the same thing.

At this point, I rarely read license terms. Why? Because I usually don’t have to. I can see “Licensed under the Mozilla Public License” and know what that means because I have already read the terms of the MPL. Having to sit down and read the license terms of all of the libraries that I use would be a major distraction from my “real” work. Instead it’s just a matter of: Look for a license that I’m familiar with. Download library. Install. Use. Repeat.

Imagine my surprise when I started trying to integrate various web services and RSS feeds into my StyleFeeder project. I’ve seen Google Maps pop up all over the place, novel uses of Amazon’s APIs, Yahoo! APIs, Flickr RSS feeds and others. My expectation based on the rate at which these services are being integrated throughout the Web was that they were licensed under fairly liberal terms. But it just ain’t so.

If you were writing an application, would you incorporate a library in your application that was licensed under terms like this?

  • Required you to read and understand several pages of legalese
  • Is free right now although you might be charged for it at some point in the future at a price that you cannot negotiate in advance
  • Can stop working at any time for any reason without notice
  • Can undergo functional changes at any time without notice
  • Can be rate-limited at any time without notice
  • Does not have any service level agreement
  • Places restrictions on the data you generate using the library, some of which are bizarrely techno-legalistic and open to interpretation

Didn’t think so.

Now, when you’re working inside a big organization, all of these funny licensing oddities generally go out the window and true web-service integration nirvana can be achieved. But out here in the real world where people with clever ideas are sometimes viewed as troublemakers, being on the wrong end of a corporate law department with a big stick can be a deterrent from using services like this.

We need to see some change in the area of Web Services licenses. I’d love to be able to look at a web service offering somewhere, evaluate it and glance at the license. Oh, the General Web Service License? Sure, I know about that and I understand the terms of use for that license. Great, I can use it in my application.

Creative Commons has a set of licenses that can easily be applied to any creative work. We have an array of licenses available for software. Why do we have a one-license-per-organization model for web services licenses? There’s probably some historical context behind this, but my guess is that a generally accepted WS license that protects the interests of publishers and developers is probably possible at this point.

And, I hasten to add, it’s more important than ever. Web services are about to be flipped outside in. This terminology warrants some explanation. The traditional Web service model can roughly be depicted like this:

In this model, applications act as consumers for Web services. I need to display the current weather on my desktop, so a desktop application consumes data provided by a web service. I need to place an order for a stock, so my application makes HTTP calls to a Web service. This is normal. It’s what we’re used to: XML over HTTP. And when we’re talking about integrating different services that using different technologies, it makes sense to use platform-neutral data formats over the most widely accepted application-level protocol for data exchange.

Let’s also note some other characteristics. Control of the end-user experience shifts to the consumer of the service (since Web Services are for machines, not humans) when it is packaged up for users. The service publisher incurs a fairly apparent cost in producing and maintaining the service, but how do they support it? Remember, most of the really interesting Web Services are being produced by for-profit companies. As Ben Hyde pointed out to me, these Web Services are usually not profit centers. Mostly, they’re used to drive business to that organization’s traditional revenue channel (sell more books, put location-specific ads on maps, etc.). But, ultimately, a lot of control is handed over to the consumer of the Web service.

If you had to think of one technology company that doesn’t like to hand over control, which one would it be?

And did you notice the architecture behind Windows Live?

Here’s my read on their direction: collect a massive array of applications that are (a) created by third parties (b) that are packaged to (c) run on top of Windows Live which is not incidentally (d) controlled by Microsoft. Sounds like a platform strategy to me. I drew a picture describing this Outside-in approach to Web Services:

Control shifts back to the owner of the container in which these little web applications are supposed to run. If you have OS X’s Dashboard or Yahoo! Widgets installed, think of it as a big centralized repository of widgets that are accessed via your browser.

Let’s make a big circle and wrap this up with the licensing discussion. Let’s assume that Microsoft’s approach for Windows Live will be somewhat comparable to Microsoft Windows: a tightly controlled environment that will embrace and extend existing protocols and standards such that you can write “standards”-based code that mysteriously only runs on Microsoft platforms. Admittedly, that’s pretty cynical. But I’ll stick with it.

And my fear is that Microsoft may not be alone in thinking along these lines. People are wondering out loud what Google and Yahoo! are doing with their mapping APIs, wondering specifically how they will make money off of the service and how much they will tighten the screws on applications that they think are either too popular too inappropriate. The easiest answer is for them to start providing the canvas on which we can paint our art. And if you own the canvas, you own the art. If that’s the direction that we all want to go in, let’s make it a concious choice. Or not.

We will serve our own interests by getting ahead of these outside-in Web Service architectures by creating some licenses that can be understood and applied in clear terms so that innovative developers can do innovative things without spending time and money getting a lawyer to decipher them. Distributedness (if that’s even a word) and loose coupling are foundational principles on the Internet and Web Services fit really well on top of these principles. We need to make sure that we have an environment in which we can continue to use them in the future under terms that are understandable and that offer a predictable set of protections for publisher and consumer alike.