If you own an iPhone, you’ve undoubtedly used an app that has the “Pull to Refresh” functionality. You know, where you pull a screen down to refresh the contents on the page. That was originally the work of Loren Brichter, now a Twitter employee who built it for his Tweetie 2 iPhone app (now called Twitter for iPhone). Another group of developers, Enormego, rebuilt the functionality and open-sourced it (apparently with Brichter’s blessing) a while back. Which brings us to yesterday, when it landed in Facebook’s new iPhone app.
The fact that Facebook is using it isn’t an issue at all. The problem is that they then wrapped it into their Three20 iOS library (which they also open-source), but did so without proper attribution. The Enormego guys looked at the code and quickly realized it was nearly an exact copy of theirs. They immediately put up a post entitled “What ever happened to common courtesy?” And rightly so.
But not to fear. It appears that this wasn’t a case of Facebook attempting to steal something as their own. Instead, a few Facebook developers have responded to Enormego apologizing for the mistake which they’re calling an oversight.
Specifically, here’s what Facbeook’s Jeff Verkoeyen (who maintains Three20) had to say in a comment:
This is definitely an oversight on my part. I merged the code in from a Three20 fork by another developer in the community. I contacted the developer of that fork and requested permission to use the code, but going forward I need to be more careful about the code we merge into the library. You are completely in the right to be surprised by this situation and I fully intend to rectify it.
Seeing as this code is clearly based on, and likely replicated from, your source, I will be doing a couple of things.
First, I’m going to speak with the developer in question about this. Both of us contributed to this issue, myself specifically by merging code without fully researching the original source. But I also need to be able to trust code from Three20’s forks, and this means I need to be able to trust that attribution is correctly maintained.
Second, I’d love to speak with you about correctly attributing this source to you. Feel free to contact me anytime at XXXXXXX
I sincerely apologize for the attribution fail. Looking forward to chatting with you and discussing what we should do going forward.
Shaun from Enormego responded favorably to that. And then Facebook’s head of open source programs, Dave Recordon, added another comment just for good measure:
Hey Shaun, I’m David Recordon and head up our open source programs at Facebook.
As Jeff said, we clearly didn’t realize that this was actually your open source code when it was submitted via a GitHub pull request back in February. I’m sorry that we messed this one up.
As for fixing this, the code clearly came from EGOTableViewPullRefresh and we’re updating the four file’s within Three20 to directly reflect that and link back to your project. This patch will be pushed to GitHub shortly.
Verkoeyen followed up one more time to let them know he added the attribution to GitHub.
The situation looked like it may spiral out of control there for a second as even Brichter himself started tweeting about it. “Just so there’s no confusion, Facebook should have credited Enormego for their open source pull to refresh implementation, not me,” he tweeted earlier tonight.
Looks like crisis averted.