With the release of carp_mobile_sensing version 0.21.0 the software architecture and hence API has changed to some degree. In this post, we want to provide you a little background on this change and point to the main differences to the previous version.
CAMS comply to semantic versioning. However, since we are still in a pre-release, the version number is (still) zero. However, by using version “20” or “21”, we are indicating that this is the 2nd major release of CAMS. We are, off course, working our way to the first “real” release of CAMS in a version 1.0.0. But we’re not ready yet – and the reason why is explained next.
The main reason for releasing CAMS version 2 (0.20.x), was to comply to the CARP Core domain model and architecture.
So – what is new?
First, CAMS now follows the architecture of CARP Core.
As shown in Figure 1, the software architecture consists of a number of sub-systems and all of these have now been implemented in Dart for use in CAMS. This is done in the carp_core Dart package available at pub.dev.
For CAMS, the main change is that now the definition of a study is separated from its so-called deployment, i.e. its execution. Following carp_core, a CAMS study can be configured, deployed, executed, and used in different steps:
- Define a
- Deploy this protocol to a
- Get a study deployment for the phone and start executing this study deployment using a
- Use the generated data locally in the app or specify how and where to store or upload it using a
Note that as a mobile sensing framework running on a phone, CAMS could be limited to support 3-4. However, to support the ‘full cycle’, CAMS also supports 1-2. This allows for local creation, deployment, and execution of study protocols (which in many applications have shown to be useful).
The carp_mobile_sensing page contains a detailed description of this process and provide source code examples.
What is next?
The next major release of CAMS will be to support Dart null-safety. This will be the 3rd release, hence getting the version number of 0.30.x.
Simultaniously, we are moving towards stabiling the overall domain model of CARP Core and release is in a version 1.0.0. Once this is done (in Kotlin), the carp_core domain model in Dart will be upgraded to version 1.0.0 and released. Once this is done, all the packages depending on carp_core will be updated to 1.0.0.
And then ––– we have a first stable release of the Flutter CAMS family of software products.