Flow JVM SDK Phase 1, stabilization and bug fix proposal
Grant category
Please select one:
Open source maintenance
Developer tools / services
Educational material
Description
Ensure the Flow JVM SDK is actively maintained, updated and tested to support any Flow protocol and Cadence changes without breaking backward compatibility. Perform corresponding updates to the JVM SDK examples repo once core SDK changes are completed.
Problem statement
Target audience:
Developers interfacing with Flow using a JVM-based language, such as Java or Kotlin.
Evidence for the need:
The Flow JVM SDK is three years out of date; a refresh is required to ensure stability and security of the codebase.
Proposed solution
The goal of this grant is to reach a stable and secure state of the Flow JVM SDK codebase; namely, to ensure the existing code is thoroughly tested, documented, backwards-compatible, and outstanding bugs/issues resolved. The last milestone of this grant will also deep-dive into lacking feature parity that has accumulated over the last 3 years; this includes researching missing Cadence support (i.e. Flow network upgrades that have been unaccounted for) as well as increasing feature support to be on par with other Flow SDKs (e.g. such as the Go SDK, among others). The outcome of this research will guide follow up grant(s) to implement these changes.
The initial grant will include 6 milestones:
Testing and code coverage: Backfill missing unit tests from legacy implementation, as per test case prioritization in spec document
Resolving outstanding issues and bugs: Address error handling and identify reported bugs that need imminent fixing (unless bugs require more a recent feature set implemented in a future milestone)
Backwards compatibility: Ensuring backwards compatibility where applicable; changes to SDK core functionality should be minimal in the initial grant as we aim to backfill testing for the legacy code first
CI + test automation: Automate test runs with code release using Github actions, implement end to end integration testing that runs during release pipeline. Halt releases if any tests fail.
Documentation updates : Update JVM SDK examples repo as needed to ensure it is still functional and up to date with the SDK codebase.
Future SDK requirements: Breakdown requirements for new functionality in the SDK; this would involve a deep dive into the existing SDK code to identify updates needed based on core protocol, Access API, Go SDK parity, and Cadence changes since the last SDK release.
Impact
In what ways does this benefit the broader Flow developer ecosystem?
The Flow JVM SDK has not been actively maintained since its initial release 3 years ago. A refresh of the codebase will facilitate future development of JVM-based apps interacting with the Flow blockchain. Additionally, the existing SDK has unresolved bugs/issues raised by the community that are hindering the development process when using the SDK.
Milestones and funding
Milestone
Deliverables
Timeline
Risks
USD proposal
Corresponding Github issues
1 - Testing and code coverage, necessary code updates
Implement thorough unit testing on the JVM SDK repo, as per test case prioritization spec (total 46 classes). Ensure repo code coverage meets or exceeds 80%.
3 weeks
As the SDK has not been released in a while, some code may be outdated or fail to run; will make all necessary updates as part of this deliverable before commencing testing.
2 - Resolving outstanding issues and bugs, implementing error handling throughout SDK
Address error handling throughout the SDK and identify + resolve reported issues. Ensure the SDK errors out gracefully in all scenarios; define specific exception classes and detailed error messaging for common exception scenarios.
Automating test runs during code release using Github actions; halt release if any tests fail. Implemented end to end integration testing that runs during release. Release pipeline halts if any tests fail.
1 week
Some of the existing Github actions on the repo have not been run in upwards of 1 year, and most recent runs have failed. Will need to resolve these first before proceeding with CI changes.
Deep dive into the existing SDK code to identify updates needed based on core protocol, Access API, Go SDK parity, and Cadence changes since the last SDK release. The outcome of this deliverable will be a detailed requirements spec. document outlining proposed SDK updates with high level of granularity. Working with the Flow team to facilitate feedback on requirements document and make improvements/tweak as needed.
Flow JVM SDK Phase 1, stabilization and bug fix proposal
Grant category
Please select one:
Description
Ensure the Flow JVM SDK is actively maintained, updated and tested to support any Flow protocol and Cadence changes without breaking backward compatibility. Perform corresponding updates to the JVM SDK examples repo once core SDK changes are completed.
Problem statement
Target audience:
Evidence for the need:
Proposed solution
The goal of this grant is to reach a stable and secure state of the Flow JVM SDK codebase; namely, to ensure the existing code is thoroughly tested, documented, backwards-compatible, and outstanding bugs/issues resolved. The last milestone of this grant will also deep-dive into lacking feature parity that has accumulated over the last 3 years; this includes researching missing Cadence support (i.e. Flow network upgrades that have been unaccounted for) as well as increasing feature support to be on par with other Flow SDKs (e.g. such as the Go SDK, among others). The outcome of this research will guide follow up grant(s) to implement these changes.
The initial grant will include 6 milestones:
Impact
The Flow JVM SDK has not been actively maintained since its initial release 3 years ago. A refresh of the codebase will facilitate future development of JVM-based apps interacting with the Flow blockchain. Additionally, the existing SDK has unresolved bugs/issues raised by the community that are hindering the development process when using the SDK.
Milestones and funding
Total funding proposed: 10,600
Team