/!\ *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.

  • Community:

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.

  • Core Developers:

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.

  • Alignment:

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

  • Orphaned products:

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.

  • Inexperience with Open Source:

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.

  • Length of Incubation:
    We will remain in incubation for a period of no less than two years so we can properly invest and build a community of users, contributors and committers around our goals.
  • Homogenous Developers:

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.

  • Reliance on Salaried Developers:

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.

  • Relationships with Other Apache Products:

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.

  • A Excessive Fascination with the Apache Brand:

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:

  • Mailing lists:
    • private@cava.incubator.apache.org (with moderated subscriptions)
    • dev@cava.incubator.apache.org
    • users@cava.incubator.apache.org
    • commits@cava.incubator.apache.org
  • Subversion Directory:

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

  • Git Repositories:

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

  • Issue Tracking:

JIRA Cava (CAVA)

Initial Committers

  • Antoine Toulme (toulmean at apache dot org) *
  • Jim Jagielski (jim at apache dot org) *
  • Chris Leishman (chris at leishman dot org)
  • Jonathan Rhea (jonathan dot rhea at gmail dot com)
  • Steven Shroeder (me at steven-schroeder dot com)
  • Joseph Delong (joseph at delong dot me)
  • William Meister (william dot k dot meister at gmail dot com)
  • Jon Stevens (jon at apache dot org)
  • Selvamohan Neethiraj (sneethir at apache dot org)
  • Larry McCay (lmccay at apache dot org)
  • Debo Dutta (dedutta at cisco dot com)
  • Michael Wall (mjwall at apache dot org)
  • Zak Cole (zak at whiteblock dot io)
  • Vinayakumar B (vinayakumarb at apache dot org)
  • Pierre Smits (pierresmits at apache dot org)
  • Jean-Baptiste Onofré (jb at nanthrax dot net)
  • Furkan Kamaci (furkankamaci at gmail dot com)
  • Mikhail Kalinin (noblesse dot knight at gmail dot com)

Interested Developers

  • Nicolas Massart (nmassart at gmail dot com)

Sponsors

ConsenSys would sponsor this project.

  • Champion:
  • Jim Jagielski ( jim at apache dot org )
  • Nominated Mentors:
  • Jim Jagielski ( jim at apache dot org )
  • Dave Fisher (dave2wave at comcast dot net)
  • Kenneth Knowles (kenn at apache dot org)
  • Jean-Baptiste Onofré (jb at nanthrax dot net)
  • Michael Wall (mjwall at apache dot org)
  • Furkan Kamaci (furkankamaci at gmail dot com)
  • Sponsoring Entity:
  • The incubator
  • No labels