CARP Core 1.0 Release

The first stable version of the CARP Core Framework has been released, available for Kotlin multiplatform projects or any JVM runtime through Maven, and for JavaScript/TypeScript as downloadable UMD modules.

This marks the end of CARP Core as a research project (a publication is upcoming), and the start of CARP Core as a mature open-source framework used and maintained in industry by iMotions, one of the original project partners. Through an ongoing collaboration with CACHET, new features are planned to be released as subsequent minor software versions (e.g. 1.1), but the goal is to remain backwards compatible until the next major 2.0 release.

Who can benefit from CARP Core?

Building a platform which can collect sensor data from various devices (e.g., smartphones, desktop computers), connected sensors, and user tasks, and upload this data to a central server⁠—i.e., distributed data collection⁠—is a big task. Several prior platforms provide such functionality (Kumar et al., 2020), including our very own CARP research platform, but often don’t fulfill all identified project requirements. Sensor integrations may be missing, or a custom application or web interface may need to be built. If this is your use case, CARP Core may be for you. As a software framework it is designed with modularity and extensibility in mind, rather than being a full-fledged product. It provides you with extreme flexibility in terms of building your own platform, or extending existing CARP-based platforms.

  • Build your own: although building your own platform is still a massive undertaking, requiring a team of experienced software developers, it may be the best option if your requirements deviate too much from what existing platforms offer. To this end, CARP Core is designed as a lightweight infrastructure-agnostic framework, representing an open standard for distributed data collection based on years of requirements elicitation from industry and research. CARP Core keeps infrastructural dependencies to a bare minimum, e.g., it does not provide any front-end or repository implementations. Instead, it implements multiplatform domain logic common to any distributed data collection project, outlining a suggested architecture to follow to tackle the complexity inherent in such projects. It is open-source and released under the MIT license.
  • Extend existing platforms: the CARP Research Platform (maintained by CACHET) and iMotions Mobile Research Platform (maintained by iMotions) are both built using CARP Core, but, use different applications and web front-ends. Both can be extended using CARP Core, and to a certain degree are interoperable.
    • Contact CACHET in case you are an experienced computer science researcher interested in extending or using the CARP platform and expect to need limited support.
    • Contact iMotions in case your team lacks technical resources. The iMotions solution includes technical support and training services to get started with mobile research. As a paid product, additional feature requests can be negotiated.

Backwards compatibility and interoperability between CARP platforms

Given that CARP Core is a framework, and not an actual platform, it can be confusing to understand what exactly will remain backwards compatible from one release to the next. We decided to tie CARP Core versioning to the functionality exposed by the backend services, and not the CARP Core client module, which is still an alpha prerelease for now.

Practically speaking, this means that if you implement your own client for one of the existing CARP platforms, older clients will continue to work with CARP backends that have upgraded to a new minor release. At least, provided that platform has correctly implemented the migration strategy outlined by CARP Core.

Furthermore, both CARP platforms implement the same CARP Core backend APIs through RPC request objects which are defined in CARP Core. While CARP Core does not require you to use these requests objects when building your own platform, doing so enables easier interoperability between platforms. In theory, it should thus be possible to start out by using the CARP Research Platform or your own hosting during initial prototyping, and later switch to dedicated paid hosting. However, such a migration has not been carried out yet in practice. But, these are exciting opportunities and likely future plans for the evolution of CARP.

References