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

light-client: Type Generalization #416

Open
brapse opened this issue Jul 8, 2020 · 1 comment
Open

light-client: Type Generalization #416

brapse opened this issue Jul 8, 2020 · 1 comment
Labels
light-client Issues/features which involve the light client

Comments

@brapse
Copy link
Contributor

brapse commented Jul 8, 2020

This issue is a Refactor of #387 with the intention of being more actionable

Problem

The core types defined in the tendermint crate and used in the light-client crate are broad, complex and subject to change between versions of tendermint. This makes them difficult to generate during tests and cumbersome to integrate against. We want looser coupling between functions and types allowing our core logic to be robust against minor changes in the serialized form of data structures.

Goals

  • Reduce the size of the dependency graph
  • Have a clear mocking & testing strategy for core data types
  • Have a clear migration path for tendermint core data structure changes

Ideal

  • All of our data types are generic enough to be invariant to tendermint core data structure changes

Approach

This task is complex and should be broken down into several steps. It is likely that we will have to compromise between generality and developer economics. The first step is to produce an ADR outlining a potential strategy to navigating such a tradeoff.

@brapse brapse added this to the v0.16.0 milestone Jul 8, 2020
@romac romac added the light-client Issues/features which involve the light client label Jul 8, 2020
@romac romac changed the title Type Generelization Type Generalization Jul 8, 2020
@ebuchman
Copy link
Member

I think we pretty much achieved all this with the traits in the original version, which are documented in ADR-02. Maybe would be helpful to first document the ergonomic challenges with that version, and if/how they might be overcome within the refactored structure.

@xla xla changed the title Type Generalization light-client: Type Generalization Jul 18, 2020
@thanethomson thanethomson modified the milestones: v0.16.0, v0.17.0 Aug 26, 2020
@ebuchman ebuchman modified the milestones: v0.17.0, v0.18 Aug 28, 2020
@ebuchman ebuchman modified the milestones: v0.18, v0.19 Nov 22, 2020
@thanethomson thanethomson removed this from the v0.20 milestone Apr 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
light-client Issues/features which involve the light client
Projects
None yet
Development

No branches or pull requests

4 participants