Skip to content

The Honors Of Open Source

I just found out that a high-profile web application was using one of my open source libraries. This post reflects on what led there and what happened next…

I started working on URI.js in December 2011. I initially built the thing to demonstrate to @codepo8 and @paul_irish what I wanted their browsers to provide natively. This was sparked by a panel discussion we had with @smashingmag.

The project got way more attention than I had thought a dumb string manipulation utility ever could. People kept filing bugs and sending pull requests - so I kept working on it. For some weird reason URI.js averaged at one release per month. But I never really used the library myself. At least not to an extent that would warrant maintaining it.

Initially I thought writing this library may help forging some native solution - but other than @annevk working on the URL specification not much has happened since. URIs are a mess - a freaking nightmare, actually. That's one of the reasons the seemingly simple problem of URIs has not yet been resolved properly.

I developed a love/hate relationship with my library. On the one hand it was the most thoroughly tested and feature-packed JavaScript URI library out there - something I was proud of. On the other hand even the core of the beast came at heavy 7KB when minified and gzipped - 13KB if you included all the standard extensions. For comparison jQuery weighs 32K - dealing with a whole lot more than just URIs. This is something I'm ashamed of - wasting precious memory for something as dumb as working with URIs. It's something the web environment should've done for us from the get go, but didn't, so we're stuck with throwing a lot of JavaScript at the problem.

Although my ego wanted to know who was using URI.js and for what they were using it, I never dared to ask. In the end I was just happy about having contributed to the web, no matter who (if anyone) profited from my labor. That kind of changed when I stumbled across this tweet:

Wait. What? iCloud, Apple's web app for its cloud storage, was using URI.js? What on earth…? I confirmed URI.js being present and my heart stopped beating. I have no idea why that happened. In that moment I felt both honored and shocked. Honored that a high profile app such as iCloud would use my stuff. Horrified that my code might break their app. They've got tons of traffic - and Apple isn't exactly known for creating bullshit.

I had a closer look at the code and (through testing for fixed bugs, as there is no version attribute) realized they were running version 1.6.2 - released May 19th 2012. WAT? It is August 2013, the current version is 1.11.2. They also added two methods baseEquals() and sortQuery() - without sending a pull request.

Sarcastic Applause

I'm still honored that they use my code. I'm annoyed that it's a year-old version. I'm not happy with them not having contributed their changes.

Comments

Display comments as Linear | Threaded

Zach Leatherman on :

Zach LeathermanI thought it would be fun to make a Chrome Extension that simply scans for the existence of a user-defined set of JS variables and alerts you to their presence. Your story reminded me of it.

I was going to call it Vanity.JS.

Do you know if something like that already exists?

Lars on :

LarsI only know about Chrome Sniffer, but I don't think that you can add custom checks through the GUI

https://chrome.google.com/webstore/detail/chrome-sniffer/homgcnaoacgigpkkljjjekpignblkeae?hl=en

The author does not allow comments to this entry