Skip to content

Instantly share code, notes, and snippets.

@cmeiklejohn
Created December 19, 2018 16:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cmeiklejohn/c14bbcacc2180f974a7a9eb5ee8d3fe5 to your computer and use it in GitHub Desktop.
Save cmeiklejohn/c14bbcacc2180f974a7a9eb5ee8d3fe5 to your computer and use it in GitHub Desktop.

Understand the change that we're trying to make and where it fits into the system conceptually.

In our case, we're looking at adding another membership strategy to Partisan. The membership strategy we're looking to add is a superset of one of the existing strategies (HiScamp is a superset of Scamp functionality.)

Determine the application programming interface used between this component and the rest of the system.

Each membership strategy in partisan uses a well defined interface -- figure out how this interacts with the rest of the system and how the existing strategy (Scamp, in this case) operates using this API.

Design a plan for extending this isolated component incrementally.

Since, we know that HiScamp is a superset of the Scamp functionality, we know that we want to extend what is already there. Therefore, we should outline a plan of incremental steps that get us to the desired goal.

For example, we can look at the protocol we are implementing and break down the work into small, incremental, chunks that can be verified as they are implemented. First, we can start taking distances into account, then we can add the L2 views, etc.

Each step should have a way to verify that the change we made is working, and that should be part of the plan.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment