/!\ *FINAL* (!)

This proposal is now complete and has been submitted for a VOTE.

Abstract

Cava is a set of libraries and other tools to aid development of blockchain and other decentralized software in Java and other JVM languages.

Please note: Cava is a contraction of "ConsenSys Java". The community is considering an alternate name in this discussion thread.

UPDATE: The community has settled on using the name "Tuweni".

Proposal

Cava is a set of libraries and other tools to aid development of blockchain and other decentralized software in Java and other JVM languages. It includes a low-level bytes library, serialization and deserialization codecs (e.g. RLP), various cryptography functions and primatives, and lots of other helpful utilities. Cava is developed for JDK 1.8 or higher, and depends on various other FOSS libraries.

Background

Cava was built as an open source project from the grounds up to accelerate the maturation of the blockchain ecosystem, particularly in relation with enterprise products predominantly built in Java. Cava is used by several products today: Orion, Pantheon, and Artemis from Pegasys.

Cava libraries are also used in various experiments regarding scalability, such as Canto.

Several other community members would want to leverage Cava and would benefit from working directly on the project outside of the influence of the original corporate sponsor, ConsenSys.

Rationale

Cava is organized as set of libraries that form the basis of most blockchain, distributed ledgers or cryptography work.

Most of the work built for Cava was meant for Ethereum, but can be reused across other blockchain technologies.

There is a need for blockchain implementors to use well trusted, production-ready software to bootstrap their efforts.

Initial Goals

The goal is to form a community of developers and adopters who will be able to collaborate openly around blockchain technologies and mature frameworks to reduce risk when implementing blockain-related projects.

Current Status

The project is well established and counts 2 active committers. Some contributions were made from the community.

The project has made several releases, distributed through Maven Central, with GPG signatures and proper Maven metadata published.

Meritocracy:

Active discussions on github issues and PRs has helped identify new possible commiters.

Our main goal, moving to Apache is to promote our project as a meritocracy under the guideline of the Apache Way to help foster a community around our efforts.

Blockchain protocol developers organize well in communities, and some lively discussions take place over Twitter, Gitter, Telegram.

We would like to create a community for dedicated Java developers to contribute to the blockchain space.

We currently have a little activity through the channels mentioned above, but no channel dedicated specifically to Cava is seeing a lot of traction.

Cava was built by two developers with a long experience in open source work. Both lead separate open source projects. One of the developers is the PMC Chair for Apache Buildr and a committer for Apache ODE.

We believe there isn't a blockchain TLP for Java at Apache at this time and would like to participate in establishing a presence in that domain of expertise.

We would rely and integrate closely with a number of projects hosted by the ASF such as Apache Camel.

Known Risks

The contributors are committed to the development of the blockchain space and are employed by a leading vendor in blockchain.

The source code is used in a production setting by critical projects.

However, the number of initial developers and contributors is small, and we will need to ramp up our recruitment efforts.

The project was started from scratch as an open source project. All committers have experience with open source projects.

We did not make the effort of creating a detailed roadmap and organizing a collaborative approach to reaching to the community for feedback. We aim to rely on the ASF infrastructure, especially Jira, to help create more visibility in this regard.

The current list of committers is made of folks working or having worked for the same company. We will aggressively expand to new populations of developers, from a geographical and domain perspective.

We believe there is a category of enterprise Java developers who are not experimenting with blockchain technologies because it looks immature or is built in other languages. We believe addressing this gap will help create a healthy community around the project.

The project is made first and foremost of volunteers. One of the initial committers is salaried by one of the sponsors.

Given the level of interest into the project, we firmly believe the project would continue without salaried developers contributing to the project.

We will work with other Apache and open source projects to help ensure we offer developers using our framework a cohesive approach to building blockchain middleware products. Currently the project doesn't have strong tie ins to other Apache projects, but we will investigate how to strenghten our relationships with middleware integration projects such as Apache Camel, queues and transport projects such as Apache Kafka, and database projects such as Apache Ignite and Apache Cassandra.

We rely on the Apache Way to help bake in the best community around our project. We are educated about the sensitivity of the Apache brand and how to best preserve it. We will make sure to work with the Incubator PMC and the PRC to ensure the brand policies are respected.

Documentation

You can read more about Cava at our current github repository: https://www.github.com/consensys/Cava

We publish as part of each build a complete project documentation in Dokka and Javadoc formats: https://consensys.github.io/cava/docs/kotlin/0.6.0/cava/

Initial Source

All initial source is under the git repository present at https://www.github.com/consensys/Cava.

The source is under Apache License v2.0. All source files have headers with a copyright notice.

All contributors have signed a ICLA to assign copyright to ConsenSys, AG.

Source and Intellectual Property Submission Plan

The source is under Apache License v2.0. All source files have headers with a copyright notice.

All contributors have signed a ICLA to assign copyright to ConsenSys, AG.

We have no web properties (domain names or hosted content) outside of the github repository and the bintray repository.

External Dependencies:

The dependencies all have Apache compatible licenses. These include
BSD, CDDL, CPL, MPL and MIT licensed dependencies. A report of the dependencies is compiled and checked for valid licenses for each build, the latest is: https://851-137528592-gh.circle-artifacts.com/0/reports/license/license-dependency.html

Cryptography

The proposal involves cryptographic code directly and indirectly.

Required Resources:

https://svn.apache.org/repos/asf/incubator/cava

https://git-wip-us.apache.org/repos/asf/incubator-cava.git

JIRA Cava (CAVA)

Initial Committers

Interested Developers

Sponsors

ConsenSys would sponsor this project.