Parse, which provides a cloud platform for mobile and desktop apps, plans to open-source all of its SDKs, starting with kits for iOS, OS X and Android.
Opening up the kits will allow developers to see how the SDK code functions within their app and interacts with the Parse backend. Developers also can identify bugs and work with the Parse team on solving them, Parse said.
Parse SDKs power more than 800 active app-device pairs, Lutsenko said. In building up the SDKs, Parse has had to deal with such issues as finding a way to make a public-facing API easy to use while continuing to ship features fast without breaking functionality, said Lutsenko. To address this, the public API was structured as a façade for internal code and functionality that consistently change, and a loosely coupled architecture model was developed for speed and stability.
Parse's SDK move should have happened earlier, according to analyst John Rymer of Forrester Research. "My question: Why did Parse wait so long to take this step?" With the open-sourcing, Parse gets the potential of a lot more advice, contribution and testing of its SDKs while customers potentially get better software and maybe even more SDKs, Rymer said in an email. "Releasing the SDKs as open source signals that the code is stable enough for outsiders to bang on it and potentially extend it. Many developers prefer open source licenses as they can evaluate the source to troubleshoot without issue. I see no business downside, as Parse doesn't monetize its SDKs through developer fees."
In an accompanying post, Lutsenko discusses under-the-hood features, including an asynchronous API, decoupling architecture, and API consistency. "Some of the important functionalities of the Parse SDK include communicating over the network, persisting data to disk, and returning data to the developer so that they can update their UI," he said. "All of this needs to happen asynchronously, in parallel and off the main thread. With this in mind, it should be no surprise to you that the most important part of our SDK is how we do asynchronous programming."