Skip to content

RSP V3 Reconciliation Plan

Larry Davis edited this page Feb 25, 2020 · 7 revisions

Preface

In order to support RSP V3 effectively, the highest priority should be getting Spectrum CSS back in sync with their fork. This will allow them to absorb changes to Spectrum CSS without merge conflicts or import scripts, and enable us to do the required feature development from a common starting place.

Plan

In order to do this, we must do the following, in this order:

1. RTL Support.

Since RSP V3 is supporting RTL, every component needs to be touched to have RTL support in Spectrum CSS.

RTL touches every border, padding, margin, width, and height in every component, and if we don't have it in Spectrum CSS, then every single update to any of those properties causes a merge conflict with RSP V3's fork.

This PR implements RTL support and needs to be finished/reviewed by the team: https://github.com/adobe/spectrum-css/pull/532

2. Reconcile changed components in RSP V3's fork

There are a number of components that have had changes in RSP V3's fork that we need PRs for so the changes can be reviewed by the Spectrum CSS team.

  • breadcrumb - layout switched to block, has .is-reversed state
  • button - Tool removed, manual RTL support for hold, Action Button Emphasized implemented, mobile :active changes, ButtonGroup and ButtonGroup Connected implemented
  • buttongroup - Tool removed, focus outline fixed
  • dialog - CSS grid, changes to warning/error
  • fieldgroup - --positionSide added, horizontal added, SUIT issues
  • fieldlabel - changed to flex layout, added --positionSide, form changed
  • inputgroup - added is-disabled, datepicker endField and friends, focus-ring tweaks
  • link - added quiet link, added secondary link, changed underline and cursor
  • menu - focus fix, selected color changed
  • search - DNA var changes, markup changes
  • stepper - line height, focus changes
  • tags - Icon/Avatar markup changes, clearbutton renamed, deletable -> removable
  • textfield - markup changes, SUIT issues
  • treeview - added Treeview Heading

These components and their priorities are documented here: https://github.com/adobe/spectrum-css/wiki/V3-Changes-and-React-Sync

3. Perform beta releases with RTL support and RSP V3 changes

Once the RTL PR is in, we should release beta major versions for all of the components. RSP V3 can then be updated to use those beta versions and delete the 40+ unnecessary components from its fork, leaving only those that still need a PR.

4. Perform remaining breaking changes

Any additional breaking changes should be made AFTER the beta versions are released, that way RSP V3 does not have to absorb breaking changes when moving to use the Spectrum CSS published packages.

Breaking changes are listed here: https://github.com/adobe/spectrum-css/labels/breaking%20chang

A rough schedule for those changes is here: https://github.com/adobe/spectrum-css/projects/11

5. Release Spectrum CSS 3.0.0 bundle

Once those breaking changes are done, documented with migration guides, etc, we can perform the Spectrum CSS 3.0.0 release and the individually versioned components, with full RTL support and all the planned breaking changes

Rationale

Following the outline above will put us in a good position to support React Spectrum V3, and will have releases out that, after a small modification to their build process, can be included in their repository to avoid the need for a fork for at least 40 of the components.

Timeline

if we can get beta releases out with RTL support by 3/6, we can proceed with the rest of the breaking changes the sprint after that, and drop 3.0.0 perhaps the sprint after that. (edited)