Licensing

Cosync Licensing #

Philosophy #

Cosync Inc, headquartered in Cary, North Carolina, wholeheartedly embraces the values of the open-source community. The company’s approach to monetization revolves around tailoring software enhancements to its open engines, providing software support, and offering subscriptions to the Cosync Portal. The Cosync Portal acts as a web-based user interface tool for effectively managing Cosync JWT hosts and Cosync Storage instances.

Cosync’s decision to open-source its software is driven by the following motivations:

  • Reducing adoption risks for developers.
  • Offering an affordable and predictable pricing alternative for authentication services.
  • Giving control of user authentication data back to developers.
  • Allowing developers to host the authentication stack within their infrastructure.
  • Preventing lock-in to critical infrastructure by a SAAS provider.

The Cosync software offerings comprise the following five components:

  • Cosync Portal - used to manage hosts, applications, and users
  • Self-Hosted Cosync JWT Server - used to implement a Cosync JWT host on a developer’s server
  • Cosync SDKs - used to integrate Cosync JWT services on mobile and web platforms
  • Cosync Samples - sample code for mobile and web platforms
  • Cosync Storage Server Side code - code to handle bridge between Cosync Storage and MongoDB App Service Application

Cosync Portal #

The Cosync Portal is a web application designed for developers to manage Cosync Self-Hosted servers, applications, and their associated users. It is free for evaluation purposes, but for commercial use, developers are charged $29 per month. While not mandatory for effectively using the Cosync JWT Self-Hosted server, the Cosync Portal significantly enhances productivity and integration.

The Cosync Portal can be found here.

The Service Level Agreement that regulates the Cosync Portal can be found here.

Self-Hosted Cosync JWT Server #

The Self-Hosted Cosync JWT Server is a Node.js applicaiton that allows a developer to deploy a Cosync JWT Host on their own servers. The Cosync company goal is to build a strong programming community around its self-hosted Cosync JWT server offering. For developers who are familiar with MongoDB Atlas and Microsoft Azure, setting up this product is a straightforward process. Cosync made the decision to release the software under the MongoDB Server Side Public License (SSPL) as it is a partner of MongoDB and develops various complementary tools for MongoDB Realm developers. You can find a detailed description of the SSPL license here.

In essence, the SSPL license shares similarities with the GNU AGPL license, but it provides stronger safeguards when offering the self-hosted Cosync JWT product as a service without contributing modifications back to the community.

The Self-Hosted Cosync JWT Server can be found on the following gitHub repository.

git@github.com:Cosync/CosyncJWT-Server.git

Cosync SDKs #

The Cosync SDKs include packages and frameworks that developers can integrate into their mobile applications to access the functionality of the Cosync JWT REST API or the Cosync Storage service. All these SDKs are released under the Apache 2.0 license.

The Swift Package Github repository for iOS Swift access to Cosync JWT is named CosyncJWTSwift.

The Android Gradle Github repository for Android Kotlin access to Cosync JWT is named CosyncJWTKotlin.

The React library repository for React Native access to Cosync JWT is named CosyncJWTReact.

The Swift Package Github repository for iOS Swift access to Cosync Storage service is named CosyncStorageSwift.

Cosync Samples #

Cosync provides Sample Application Code for both the Cosync Storage module and the CosyncJWT service. All of the Cosync Sample Application Code is open source, and is released under the Apache 2.0 license.

The first step is to go to our public GitHub repository and download the code examples to your machine CosyncSamples.

The directory structure of the CosyncSamples GitHub repository contains samples for both the Cosync Storage and CosyncJWT services. These samples are for the three languages bindings: Swift on iOS, Kotlin on Android, and ReactNative for cross-platform.

CosyncSamples
│
├── CosyncStorage
│   ├── Swift
│   ├── Kotlin
│   └── React-Native
│
└── CosyncJWT
    ├── Swift
    ├── Kotlin
    └── React-Native

Cosync Storage Server-Side code #

The Cosync Storage Server-Side code comprises a set of functions and triggers that the Cosync Portal installs during the configuration of a Cosync Application for the Cosync Storage module. The code for the Server-Side is written in Javascript and is licensed under the terms of the Cosync Service Agreement, which can be accessed at SLA Agreement.

Although the Cosync Storage Server-Side code is provided in source code form, modifying this code by the developer will invalidate the terms of the Cosync Service Level Agreement. This is the only non-open source aspect of the Cosync product. As a developer, if you encounter a bug or wish to request a feature in the server-side code, please inform us, and we will evaluate your suggestions for potential inclusion in a future release of the service.

CosyncFlow

The Cosync Storage Server Side portion of the Cosync Storage module is responsible for interfacing with the Amazon S3 Storage service, for handling asset management on behalf a client device and collaborative application.

The Cosync Storage Server Side triggers that are installed by the Cosync Portal during configuration of a MongoDB App Services Application for the Cosync Storage module include the following

  • CosyncAssetUploadTrigger
  • CosyncRemoveAssetTrigger

The Cosync Storage Server Side functions that are installed include:

  • CosyncAssetUpload
  • CosyncCreatePresignedURL
  • CosyncRefreshAsset
  • CosyncRemoveAsset
  • CosyncSanitizeFileName

The module also includes two functions that are callable by the client application:

  • CosyncRefreshAsset
  • CosyncRemoveAsset

The CosyncRefreshAsset function is used to by a client Realm application to refresh expired readUrl(s) within a CosyncAsset object. The CosyncRemoveAsset is used to remove an asset from both the MongoDB Atlas data-base and from the Amazon S3 Storage bucket.