Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
lealobanov opened this issue Jan 14, 2024 · 1 comment
Closed

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

lealobanov opened this issue Jan 14, 2024 · 1 comment
Assignees

Comments

@lealobanov
Copy link

lealobanov commented Jan 14, 2024

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. 5000 the-nft-company/flow-jvm-sdk#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 the-nft-company/flow-jvm-sdk#33 , the-nft-company/flow-jvm-sdk#32
3 - Backwards compatibility Ensure code changes introduced by testing and bug fixes are backwards compatible. 1 week - 800 the-nft-company/flow-jvm-sdk#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 the-nft-company/flow-jvm-sdk#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 the-nft-company/flow-jvm-sdk#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 the-nft-company/flow-jvm-sdk#37

Total funding proposed: 10,600

Team

Name Role Bio Contact
Lea Lobanov Full-Stack/Blockchain Developer Founder at Purple Dash. [email protected]
@lealobanov
Copy link
Author

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

@lealobanov lealobanov changed the title Flow JVM SDK Improvements - WIP Flow JVM SDK Improvements Jan 14, 2024
@franklywatson franklywatson changed the title Flow JVM SDK Improvements Flow JVM SDK stabilization and bug fix grant proposal Jan 15, 2024
@franklywatson franklywatson changed the title Flow JVM SDK stabilization and bug fix grant proposal Flow JVM SDK, Phase 1: stabilization and bug fix grant proposal Jan 17, 2024
@github-project-automation github-project-automation bot moved this to Closed (withdrawn or passed) in Grants Overview Aug 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Closed (withdrawn or passed)
Development

No branches or pull requests

2 participants