[OpenID] JanRain library licensing (was: Re: On OpenID 2.0)

Dries Buytaert dries at buytaert.net
Wed May 16 07:43:34 UTC 2007


On 11 May 2007, at 20:06, Josh Hoyt wrote:
>> I'll close with this too - as someone who has implemented a lot of  
>> "open
>>  specs" in the past couple years - having multiple implementations in
>> the wild is actually a very good thing... I've found anyway. Helps  
>> make
>> sure we're reading and writing to the spec appropriately ...
>
> Sorry to single you out, James, but I'm tired of hearing this
> justification for *yet another* implementation. The rest of this
> message is about this topic in general and not directed solely at you.

> There are already many implementations. If your interest is in
> interoperability or spec conformance, your time would be much better
> spent working on conformance testing tools or just testing *existing*
> implementations against each other. One of the reasons that I always
> encourage people to use the libraries that JanRain wrote is so that
> we'll get more in-the-wild testing in different environments and get
> feedback that helps us resolve issues.

What you should focus on, IMO, is a (a) well-documented reference  
implementation and (b) conformance tests that others can use to  
validate their own implementations.  This is common practice -- and  
is what people do with XML-RPC servers, RSS/Atom feeds, Jabber, SMTP,  
HTTP, Java Virtual Machines, you name it.

Saying that there should only be one implementation is like saying it  
would be a lot easier to build the web, if there was only one  
webserver implementation, one web programming language, one CMS  
implementation, and one browser implementation.  It's true but naive.

I'm getting tired of the "you shouldn't roll your own" argument.   
When I just started working on Drupal, people told me exactly that:  
"Contribute to existing CMSes instead!".  Often this argument is  
valid, but occasionally it is not.  I don't regret the fact that I  
ignored that advice.  That said, Drupal uses 3rd party libraries  
where we think that is useful (i.e. Drupal uses the JQuery Javascript  
library), and we use our own code when we think that better suits our  
needs.

We looked at JanRain's implementation in the past, and for Drupal, we  
wanted to have a smaller implementation that duplicates less code and  
that integrates better with our existing framework. Our current Open  
ID module is 12 KB, the one from JanRain is 290 KB. I think Drupal  
itself is only 650 KB.  We already have input filters, we already  
have a database abstraction layer, we already have code to do HTTP  
requests, we already have code to validate URLs,  etc, etc -- and  
we'd rather not duplicate these.

Personally, I think there are two things you can do: (1) you can  
focus on your own (reference) implementation and try to maintain your  
marketshare, or (2) you can facilitate others that write their own  
implementation by providing conformance tests, documentation,  
resources, etc.  I don't think (1) is the winning strategy ...

As soon Wordpress, Typo3, Joomla, Drupal or Firefox ship with an  
OpenID client, we're likely to eat your implementation's  
marketshare.  At that point, OpenID will, in part, depend on our  
contributors (i.e. people like James).  For example, if we are slow  
to pick up advances in the OpenID protocol, or if we only release a  
new version of our software once every two years, then this might  
affect OpenID. We all know how that goes; just look at HTML 4 vs  
XHTML 1 vs HTML 5 vs XHTML 2 vs CSS1 vs CSS2 and the multitude of  
browser woes surrounding that.

The million dollar question is: how can this be avoided?

The reference implementation helps you bootstrap, but ultimately, the  
conformance tests is what will matter.

--
Dries Buytaert  ::  http://www.buytaert.net/



More information about the general mailing list