Juergen Brendell over at SnapLogic writes insightfully about the value of open source versus open APIs (application programming interfaces). (This is a related argument to .) Open source is nice and helpful in fostering development communities around a project, Juergen writes, but open APIs go that much further.
But Juergen isn't arguing that you can have one without the other (though if stranded on a deserted island, I think he'd choose open APIs). Rather, he's arguing that developers need open APIs first, with open source a nice complement to them:
What makes contribution-via-API so attractive (as compared with contribution-via-source)?
- You don't need to understand someone else's code, which is a huge factor for many potential contributors.
- You can start with a simple "hello world" example, which is normally provided in the documentation for any of the APIs, and go from there. This is a model that tends to work very well with a lot of people, since you will instantly have something to try and run. Instant gratification for developers.
- No risk of breaking things: The API (should be) designed in such a way that whatever you do will not impact anyone else who uses the service/application.
- No risk of rejection: You just use the API. No maintainer has to agree to your view or vision. You can make your contribution public in any way you like, if necessary completely independent from the actual project.
The source might be there for anyone to work with, but even open-source companies should spend time and effort to design open APIs, since that is often the much easier, less painful way for contributors to get started.
APIs, alone, only get you so far with third-party developers, as Juergen notes: "Some contributors just want to get into the guts of the system, contributing on much deeper levels than just the APIs. In that case, well-designed and inviting code and clear architecture can go a long way to attract those extremely valuable developers." Agreed.
If you want to lower the bar to outside development, you need to make it as easy as possible to contribute with a modicum of advanced preparation. Open APIs are one good way of doing this.
I've written before on the attributes of good open-source communities (corporate and otherwise). I should have added open APIs to the list. Good catch, Juergen.