onflow / developer-grants

Grants for developers that contribute to the broader developer ecosystem
Apache License 2.0
50 stars 18 forks source link

Flow JVM SDK, Phase 1: stabilization and bug fix grant proposal #250

Closed lealobanov closed 7 months ago

lealobanov commented 10 months ago

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

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. 5000 https://github.com/the-nft-company/flow-jvm-sdk/issues/31
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. 2 weeks - 2000 https://github.com/the-nft-company/flow-jvm-sdk/issues/33 , https://github.com/the-nft-company/flow-jvm-sdk/issues/32
3 - Backwards compatibility Ensure code changes introduced by testing and bug fixes are backwards compatible. 1 week - 800 https://github.com/the-nft-company/flow-jvm-sdk/issues/34
4 - CI + test automation, integration testing 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. 1200 https://github.com/the-nft-company/flow-jvm-sdk/issues/35
5 - Documentation updates Refresh JVM SDK examples repo; ensuring all examples are still up to date and functional after SDK changes. 1 week - 600 https://github.com/the-nft-company/flow-jvm-sdk/issues/36
6 - Future SDK requirements 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. 1 week + feedback/discussion period - 1000 https://github.com/the-nft-company/flow-jvm-sdk/issues/37

Total funding proposed: 10,600

Team

Name Role Bio Contact
Lea Lobanov Full-Stack/Blockchain Developer Founder at Purple Dash. info@lealobanov.com
lealobanov commented 10 months ago

I will also create Github issues on the SDK repo and assign them to this grant shortly. Thanks!