Agoric / agoric-sdk

monorepo for the Agoric Javascript smart contract platform
Apache License 2.0
327 stars 208 forks source link

Reconstruct Getting Started around versioned packages #4676

Open kriskowal opened 2 years ago

kriskowal commented 2 years ago

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

Security Considerations

Test Plan

kriskowal commented 2 years ago

cc @turadg

mhofman commented 2 years ago

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