# Retention at Rank 1

|                 |                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------- |
| **Report Date** | 2024-07-02                                                                                  |
| **Submitted by**| Timothy Wu                                                                                  |


## Member details

- Matrix username: @timwu20:matrix.org
- Polkadot address: 1RaxuqWvyd6sdAEiansxmtget47PVcsSR38d9V2uPzKu2vo
- Current rank: 1
- Date of initial induction: Seeding
- Date of last report: N/A
- Area(s) of Expertise/Interest: Alternative client, Consensus protocols, WASM, SCALE


## Reporting period

- Start date: 2023-06-01
- End date: 2024-07-02


## Evidence
|  Areas of Contribution | Tasks  | Links   |Notes   |
|---|---|---|---|
|Go SCALE Codec | Maintenance and improvements to the Go SCALE Codec used in the Gossamer project |  refactor(pkg/scale): revise VaryingDataType to an interface ([#3669](https://github.com/ChainSafe/gossamer/pull/3669)) | Updates `scale.VaryingDataType` (aka. rust enums) to an interface to allow for cleaner instantiation of variants when decoding.  No longer uses reflection in the default implementation of `scale.VaryingDataType`. |
|Go SCALE Codec | Maintenance and improvements to the Go SCALE Codec used in the Gossamer project |  feat(pkg/scale): Add Marshaler and Unmarshaler interfaces and functionality ([#3617](https://github.com/ChainSafe/gossamer/pull/3617)) | Adds custom encoding and decoding support |
| WASM Runtime  | Introduction and maintenance of native Go WASM runtime using [`wazero`](https://github.com/tetratelabs/wazero) | [#3290](https://github.com/ChainSafe/gossamer/pull/3290), [#3352](https://github.com/ChainSafe/gossamer/pull/3352), and [#3617](https://github.com/ChainSafe/gossamer/pull/3617)  | Updates the default WASM runtime from `wasmer` to `wazero` for the Gossamer project.  We ended up having to fork the `wazero` repository to support exporting of shared memory to support the freeing bump allocator.  This significantly reduced our memory usage in the Gossamer project as well as alleviated our need for cgo bindings to non-native WASM runtimes. |
| Consensus Protocols | Implementation of a standalone GRANDPA package in Go | lib(pkg): standalone finality-grandpa package ([#3235](https://github.com/ChainSafe/gossamer/pull/3235)) | A translation of the standalone `finality-grandpa` package from Rust to Go. We will be using this with an analogous client integration of the standalone `finality-grandpa` package to achieve a complete refactor of our GRANDPA implementation in Gossamer. |
| Consensus Protocols | Integration of the standalone GRANDPA package in Go | refactor(client/consensus/grandpa): revise generic params, fix justification signing and verification ([#3909](https://github.com/ChainSafe/gossamer/pull/3909)) | Begins to integrate the standalone `finality-grandpa` Go package into Gossamer and provides justification signing and verification |


## Misc

- [ ] Question(s): 

- [ ] Concern(s): 

- [x] Comment(s): 
    - I currently hold the role of technical lead of the Gossamer project. I am responsible for the technical direction of the project, as well as providing technical guidance and coaching to the other members of the team, some of whom are fellowship members.
    - I am the main the technical point of contact when it comes to the Gossamer project, and we interface with members of the web3 foundation via a monthly sync.  We try to be active as well in the Host Implementors chat on Element.
    - We recently got our [treasury proposal](https://polkadot.subsquare.io/treasury/proposals/808) successfully approved for funding of the Gossamer project.  [I talked briefly on AAG](https://www.youtube.com/live/bdmRGmsVet4?si=0U9HyiPYMf2ItNia&t=5921) regarding our proposal and future roadmap.
    - Looking forward to leading the Gossamer project towards a full node release, as well as leading the development efforts to fulfill the JAM milestones using the Go programming language.


