To provide iOS app builders an alternative caching solution to Apple's Core Data framework, LinkedIn is offering its Rocket Data caching library via open source.
Available under an Apache license, Rocket Data is based on a nonblocking immutable model management system with a persistent synchronization layer. LinkedIn developed Rocket Data while rewriting its mobile app, when it wanted a caching system that would present content to users while still loading data from the network. The company wasn't satisfied with Core Data as a solution, believing it lacked scalability and had several other issues.
Rocket Data, the company said, scales with a large number of model types and schema changes; allows developers to work with any value system, including NoSQL or a simple key-value store; and is secure. "Immutable models have recently gained a lot of traction in the iOS community," because of Apple's Swift language and a push for immutability, LinkedIn staff engineer Peter Livesey said. Immutable models have been used in functional programming languages, and Swift adopts functional paradigms, he said.
Version 2 of Rocket Data adds improvements like an ability to handle data collections across multiple screens and a capability for screens to pause data updates. In offering Rocket Data via open source, LinkedIn hopes to entice developers to enhance it and wants to see how it is used by other parties, Livesey said. They also get a potential replacement for Core Data. "In general, it seems a lot of developers are still using Core Data because they feel like they don't really have too many other options," said Livesey.
Though LinkedIn used Core Data in a few applications, the company found it inadequate for its mobile application, citing complexity, a lack of thread-safety models, dropping of frames, and having to migrate the database whenever a schema changes. "Using [Rocket Data], we've been able to easily add caching to all features with very little additional work from developers," Livesey said. "The cache and data providers are automatically kept consistent across screens. Despite updating the schemas of multiple models every week, we have never needed to add code for any migrations. And best of all, our application has never crashed due to a Core Data exception."
Documentation for Rocket Data is available on GitHub.