Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


The Hyperledger Besu community would like to apply for the project to be moved from incubation to active status. Below outlines an assessment of the requirements of graduating from incubation status to active status and how Hyperledger Besu meets each requirement. From a high-level, we believe we believe the project is ready for active status because:

  1. Diversity of Community and Contributors: Besu has built an extensive and active community around its project. Some data points around the community include:
    1. There are 28 external contributors outside of the PegaSys team with 111 contributions (as of July 2019). Since Besu's submission and approval to Hyperledger, there have been 21 contributors from the PegaSys team and 8 contributors from outside of the PegaSys team.
    2. There have been over 100 community-raised issues on the project since November 2018, when the project was launched. This demonstrates the engagement and excitement around the project.
    3. Dozens of companies building blockchain applications have tested out Besu, provided feedback, and demonstrated its usability for their application. There are several organizations that are deeply integrated in our stack, including web3 labs and iobuilders. These teams are major contributors using Besu and providing feedback on the codebase.
  2. 1.0 Release Occurred in April 2019: Besu had it’s 1.0 Release demonstrating its production readiness months prior to this proposal. 
  3. Besu is Meant for Production: Several enterprises are building permissioned networks to use Besu in production. It is also a fully compatible client that runs in production in mainnet Ethereum.
  4. The Besu Team Is Already Involved in the Community: Since being accepted as a project in August 2019, the Besu team has been participating in the following activities:
    1. Added support for Besu in Caliper (Oct. 20)
    2. Participated in the CI/CD working group conversations and sharing our project’s research and best practices (Sep .- Oct.)
    3. Attended the Maintainer summit in Minneapolis (Oct. 8-9)
    4. Presented a talk at the Hyperledger booth at Sibos (Sep.23-25) 
    5. Submitted several talks for consideration for the Hyperledger Global Forum and participated in planning of agenda (Sep. - Oct.)
    6. Attended the Hyperledger meet-up at Devcon in Japan (Oct. 9)
    7. Presented privacy solution at Architecture WG - Privacy Confidentiality track (Sep. 20)

...

Category

Requirement

Besu Community Response

Legal

All code has been made available under the Apache License and is free of incompatible dependencies

Complete.

Project name has been checked for trademark issues

Complete.

DCO check

Besu Repo:

(lftools) user@dev > ~/Projects/besu > (master) $ git id
7fbdcbcaa9632351b65323331385864e45e714a7
(lftools) user@dev > ~/Projects/besu > (master) $ lftools dco check
Checking commits in branch origin/master for commits missing DCO...
(lftools) ✘ user@dev > ~/Projects/besu > (master) $

Besu Docs Repo:
(lftools) user@dev > ~/Projects/besu-docs > (master) $ git id
34c4aa7931f0632b5bcd62c73b75c84841000b60
(lftools) user@dev > ~/Projects/besu-docs > (master) $ lftools dco check
Checking commits in branch origin/master for commits missing DCO...
(lftools) ✘ user@dev > ~/Projects/besu-docs > (master) $

Run by David Huseby

License check

Notes for besu scan 2019-10-24:

  1. The Gradle check-licenses file at /gradle/check-licenses.gradle in lines 139-152 appears to list license choices for a few third party dependencies (to be separately provided and not checked into the source code repo). Two of those listed are for licenses other than Apache-2.0: * javax.ws.rs - CDDL-1.1 * org.checkerframework - MIT Is besu using these dependencies? If so, then under the Hyperledger IP Policy these should likely be included in a license exception request to the Governing Board. I expect it is likely that the GB would grant exceptions to use these as build-time dependencies.
  2. Hyperledger's documentation license is Creative Commons Attribution 4.0, CC-BY-4.0. None of the files in besu contained CC-BY-4.0 notices. Consider adding notices to any Hyperledger documentation files, such as: SPDX-License-Identifier: CC-BY-4.0 Most of these documentation files should be listed in the "No license found" tab of the license scan report spreadsheet.
  3. Although virtually all besu source code files contain Apache-2.0 license notices, there are a small number of files with no license information. In the "No license found" tab of the spreadsheet, the files with "No license found" do not contain license notices that were detected from our scanning. Where possible, for those that contain Hyperledger code, Apache-2.0 comments should likely be added. This can be done by adding a comment with an SPDX short-form identifier, such as: SPDX-License-Identifier: Apache-2.0 Note that any files in this tab labelled as "third party directory", "excluded file extension" or "empty file" likely do not need to have these notices added. More information for #2 and #3 can be found on the Hyperledger wiki, at https://wiki.hyperledger.org/display/HYP/Copyright+and+License+Policy

Scan report:

besu-2019-10-24.xlsx

Community Support

The project must have an active and diverse set of contributing members representing various constituencies

Hyperledger Besu has had an active community. We have 55 contributors (as of July 2019) and over 200 members of our public Gitter channel and 70 on RocketChat. There have been 28 external contributors since the projects’ inception in November 2018 with 111 external contributions total.

The project is not highly dependent on any single contributor (there are at least 3 legally independent committers and there is no single company or entity that is vital to the success of the project)

While PegaSys is the main organization that is contributing to Besu, there are several organizations and contributors contributing to Besu, including web3labs. We have instituted a process for adding external maintainers with our first external maintainer being voted on these past few weeks.

Release plans are developed and executed in public by the community.

The releases of Pantheon and now Besu have been in a public forum available on the GitHub and the Gitter channel, and RocketChat. We also have set up a bi-weekly contributor call in which release activities are discussed. Meeting minutes and agendas are posted publicly on the Besu Wiki.

Finer grained details are managed via Jira. Epics, and stories are maintained in Jira, and tracked against versions.

Test

Sufficient test coverage

See below.

The project must include a comprehensive unit and integration test suite and document its coverage. Additional performance and scale test capability is desirable.

Currently there are comprehensive unit, integration and acceptance tests with Besu. Merges to master are prevented if there are failing tests.

Performance and scale testing is under development through a partnership with WhiteBlock.

Documentation

Sufficient user documentation

Hyperledger Besu team maintains a robust documentation site here

The project must include enough documentation for anyone to test or deploy any of the modules.

Done. See above.

Alignment

Requirements fulfillment

Hyperledger Besu team maintains a robust Documentation site that provides details on requirements, use cases, and other expectations for the project.

The project must document what requirements and use cases it addresses.

Hyperledger Besu team maintains a robust Documentation site that provides details on requirements, use cases, and other expectations for the project.

The project must document how it fits within the Hyperledger Architecture

Besu’s architecture can be seen in this blog post. Because it's a mainnet Ethereum client, Besu represents some new considerations and opportunities for the Architecture Working group which require further discussion.

Compatibility with other Hyperledger projects

This is a work in progress that we are excited to continue to engage with the community on. Our team attended the maintainer summit Oct. 8-9 to begin exploring these options.

Where applicable, the project should be compatible with other active projects.

This is a work in progress that we are excited to continue to engage with the community on.

Alignment

Release numbering: the project should use the Hyperledger standard release taxonomy, once that is agreed upon.

Besu uses the appropriate naming taxonomy.

Project must make a release, even a “developer preview”, before graduation.

The past releases and the respective documentation for Hyperledger Besu can be found here.

Infrastructure

Gerrit or Github repo has been created

Done and code has been moved. https://github.com/hyperledger/besu

https://github.com/hyperledger/besu-docs

Mailing lists have been created and are archived

Done: https://lists.hyperledger.org/g/besu

Other communication means used, such as slack channels, are set up

Done:

https://chat.hyperledger.org/channel/besu

https://chat.hyperledger.org/channel/besu-contributors

Project is set up with Continuous Integration

Done

All information necessary for someone to join the community and be able to start contributing is duly documented (location of repo, list of maintainers, mailing lists addresses, slack channels if used, etc) following the Hyperledger Project standard practice (CONTRIBUTING.md, MAINTAINERS.txt, SECURITY.md, etc)

We currently have documentation in the current Docs and Wiki site referenced above.

CII Badge

A team seeking to graduate from incubation shall have started the CII Badge application and be nearly complete with incomplete badge requirements referenced in their graduation proposal. 100% of the applicable criteria for the CII Badge is a requirement for releasing a 1.0 of the project. That does not mean the project must have 100% of all criteria, just 100% of the applicable criteria. This is to allow for projects such as test harnesses, that have “N/A” answers for questions that don't offer that as an option.

CII Badge was completed. Seen here.

Other Considerations

Sufficient real world use

The project should be used in real applications and not just in demos. Because not all real applications may be discussed publicly, in such cases statements providing as much detail as possible should be made.

Sufficient scalability

The project must demonstrate sufficient scalability and document its scalability over various dimensions such as:

  • Maximum number of transactions per second
  • Maximum number of transactions per chain
  • Maximum size of a block

Minimum test code coverage expected, such as, for example:

  • Minimum coverage for Security & cryptography
  • Minimum coverage for other functionality
  • Minimum coverage for Business logic/smart contract

Besu has several real world use cases. There are several that are not public. Here are links to a couple of public real world applications being developed using Hyperledger Besu:

  1. LiquidShare
  2. IoBuilders
  3. ZarX

Scalability - PegaSys has performed several monitoring and benchmarking assessments of Besu.

PegaSys also has a research & development team fully dedicated to the long-term scalability of Ethereum and Hyperledger Besu.

...