Open kriskowal opened 2 years ago
cc @turadg
I think we also need to take another look at the upgrade process for existing dapps our users may have already created, not just the template, especially in the case of breaking changes (package name or API changes) to the dapp dependencies. For example the recent case of marshal
moving from @agoric
to @endo
. See https://github.com/Agoric/agoric-sdk/issues/4626
What is the Problem Being Solved?
Up to this point, Agoric development velocity has depended upon a workflow where the dapps we are developing are linked into the agoric-sdk yarn workspace. This has allowed us to rapidly evolve the API with relatively little concern for the consequent migration churn for third-party dapps (since there aren’t many and we depend on the goodwill of early adopters as we mature the API’s based on their feedback.)
As we approach a stable Agoric SDK API, we need to begin to practice the discipline of tracking and communicating breaking changes, and conscientiously paying the full price for breaking backward compatibility. This will also help us cut with the grain of the medium: tools designed around semantic versioning will generally help us navigate gradual migrations for breaking changes. The tools will help us communicate breaking changes to users, protect users from breaking changes they are not prepared to adopt, and ensure that the full dependency graph of an application is reproducible.
Description of the Design
preinstall
script from thedapp-fungible-faucet
. This is the default template for new dapps when usingagoric init
.dapp-fungible-faucet
instead of dist tags.dapp-fungible-faucet
dependency version ranges (both Agoric SDK and Endo.js) part of the process for Agoric SDK releases. All shallow dependencies indapp-fungible-faucet
should be pinned to the just-released version from Agoric SDK and the most recent version used by any transitive dependency of Agoric SDK.agoric-cli
can be run throughnpx
oryarn run
with a versioned copy by changingdapp-fungible-faucet
"scripts"
to driveagoric
commands.npx agoric init
to get started instead of cloning Agoric SDK and setting up a system-levelagoric
version linked to it. For example, useyarn agoric ...
commands likeyarn agoric start --reset
oryarn agoric open
.agoric-sdk/packages/agoric-cli
workflow integration test.Security Considerations
Test Plan
dapp-fungible-faucet
.