onflow / developer-grants

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

Cadence Standard Library Wishlist Grant #179

Open j1010001 opened 1 year ago

j1010001 commented 1 year ago

Overview

This grant proposes tasks related to the Cadence Standard Library, which extend its functionality and are ordered in increasing difficulty / effort.

Problem

The Standard Library of Cadence is currently relatively small and only offers essential features. However, it is still missing some essential and useful functionality. This has led to the community creating smart contracts that provide some of the missing functionality.

Providing such functionality as directly in Cadence as built-ins has several advantages over implementing them in smart contracts:

This grant is structured specifically to enable and encourage new Flow contributors to progressively demonstrate their skills and abilities by working through a diverse range of problems with an increasing level of challenge. Each task has a discrete grant award for completion, providing that all technical standards and quality expectations have been met. Issue-specific expectations are defined within issue descriptions, however, the general expectation for all items will be:

Solution

Please see each respective issue for a detailed description, requirements and acceptance criteria.

Requirements

The community developer selected for this grant must submit each fix PR individually in the prescribed order below. This is to ensure work quality as the challenge increases and that contributions meet engineering and quality expectations for Flow. Through this process we can guide and support you and enable you to demonstrate a broader range of problem solving skills. Contributors who consistently meet the expected engineering quality expectations through the course of this grant will be invited to take on larger, more challenging, and rewarding grants for Flow.

Deliverables & Milestones

Milestone Timeline USD proposal
https://github.com/onflow/cadence/issues/2154 TBD TBD
https://github.com/onflow/cadence/issues/2448 TBD TBD
https://github.com/onflow/cadence/issues/2389 TBD TBD
https://github.com/onflow/cadence/issues/564 TBD TDB
https://github.com/onflow/cadence/issues/2482 TBD TDB

Team Qualifications

If you or your group are interested in proceeding with the above, the process to submit a proposal is as follows:

  1. Prepare effort estimates per Github issue above.
    1. For larger issues It is recommended to add subtask breakdown and corresponding subtask estimates. You should provide relevant details when splitting out sub-tasks in a supporting document when submitting your proposal. Once accepted this information can be used to create the corresponding new Github sub-tasks under the relevant issue.
    2. Make sure the proposal includes sufficient detail for the reviewers to understand the work involved and the definition of done.
    3. The submitted proposal should group work into logical milestones indicating which tasks will be delivered and the total USD reward to be paid on completion of that milestone.
  2. Submit your grant proposal by commenting on this issue, or contacting the author on Discord (Jan.#6550).
  3. We will review the proposal and there may be some back and forth iteration to help us understand work specifics and adjust as needed in the event of mis-understandings or other issues that need addressing
  4. Once the grant proposal has been accepted you will be notified and we will request additional information for a signed agreement confirming our commitment to rewards to be paid per each milestone proposed .
darkdrag00nv2 commented 1 year ago

Hi! I would like to apply for this developer grant.

Deliverables & Milestones

Milestone Sub-Task Timeline (Hours) USD proposal
1 - Conversion Functions 20h $1000
onflow/cadence#2154 fromString for Number/Address 10h $500
onflow/cadence#2448 fromBigEndianBytesfor Number 10h $500
2 - Overflow Arithmetic - https://github.com/onflow/cadence/issues/2389 15h $750
Implement Word128 & Word256 15h $750
3 - Check on AuthAccount storage path - onflow/cadence#564 20h $1000
4 - Range in for loop - onflow/cadence#2482 20h $1000
Define Range<T: Integer> type 10h $500
Support looping in for-in 10h $500

Additional Points

The figures above are my estimates and I am very open to discussing them if needed.

About Me

I'm a Software Engineer with ~5 years of technical experience. My primary skills include C++, C, Rust & TypeScript. Recently picked up Go & Scala. I have the past experience of implementing an interpreter for a DSL.

I am a new but an active contributor to Cadence and have contributed to a few standard library related issues. Working on this grant would help solidify my understanding of Cadence & the Flow blockchain.

I have also made some contributions to the interpreter for the smart contract language of the Ergo blockchain.

Email: darkdrag00n@proton.me Discord: darkdrag00n#6796

Links

j1010001 commented 1 year ago

This proposal has now been accepted

darkdrag00nv2 commented 1 year ago

@j1010001 Just an update Milestone 1, 2 & 3 are done now :heavy_check_mark: Final milestone 4 is in progress

j1010001 commented 10 months ago

We can consider the grant as done, remaining is to merge the feature/range-type branch to master (to be done by the repo owners)