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

component status alignment #2026

Open
agliga opened this issue Nov 16, 2023 · 3 comments
Open

component status alignment #2026

agliga opened this issue Nov 16, 2023 · 3 comments
Assignees
Milestone

Comments

@agliga
Copy link
Contributor

agliga commented Nov 16, 2023

Introduce additional metadata in the ds-versions.json file to help us programmatically link ebayui-core component to the Design System components/patterns they implement.

Proposed changes to DS versions JSON

Instead of a 1:1 mapping of ebayui-core component name to version, map ebayui-core component name to an object containing multiple pieces of metadata about its design system relationship:

property type required? description example
name string yes canonical name for this component in the eBay Design System (see internal reference doc) "video"
version string | number strongly encouraged version # of the DS component spec implemented "2.4.0"
status string no additional status info when applicable, e.g. as "alpha", "beta", "deprecated" "beta"

If a component maps to multiple Design System components, map it to an array of metadata.

For example:

{
  "textbox": [
     { "name": "text-field", "version": "1.4" },
     { "name": "text-area", "version": "1.5" }
  ],
  "video": {
     "name": "video",
     "version": "2.4.0",
     "status": "beta"
  }
}

Proposed changes to DS versions script

This script pulls component-specific metadata from the ds-versions.json file and prepends it to the component's readme.

  • Update script to support the refactored structure of the JSON file (as documented above)
  • Add a step to the script that dynamically adds a link in the component's readme that navigates to the playbook.ebay.com design system documentation for that component

Proposed process changes

  • Before each release, ensure that the metadata in ds-versions.json is up-to-date
@agliga agliga added this to eBayUI Nov 16, 2023
@agliga agliga added this to the 13.2.0 milestone Jan 25, 2024
@agliga agliga moved this to In Progress in eBayUI Jan 25, 2024
@agliga agliga moved this from In Progress to Pull request in eBayUI Jan 31, 2024
@agliga agliga moved this from Pull request to In Progress in eBayUI Jan 31, 2024
@ArtBlue ArtBlue modified the milestones: 13.2.0, 13.3.0 Feb 16, 2024
@agliga agliga modified the milestones: 13.3.0, 13.4.0 Mar 19, 2024
@agliga agliga modified the milestones: 13.4.0, 13.5.0 Apr 16, 2024
@agliga agliga modified the milestones: 13.5.0, 14.0.0 May 15, 2024
@ArtBlue ArtBlue modified the milestones: 14.0.0, 14.1.0 Jun 27, 2024
@agliga agliga modified the milestones: 14.1.0, 14.3.0 Aug 13, 2024
@agliga agliga modified the milestones: 14.3.0, 14.4.0 Sep 20, 2024
@agliga agliga modified the milestones: 14.4.0, 14.5.0 Oct 25, 2024
@cordeliadillon
Copy link
Contributor

@agliga, I updated the issue description with the approach we discussed earlier today. I'll work on changes to the JSON file and put up the PR. I'll also get you the appropriate playbook URL prefix to add to the script, and then you can start on script updates. Looking forward to working with you on this! Excited that the Playbook page and readmes will dynamically link to each other.

@HenriqueLimas
Copy link
Member

@agliga @cordeliadillon, shouldn't the skin module be the primary entry point for determining the version of the Design System (DS) being used? The script should verify the existence of a component rather than checking which DS version is implemented, as the version is already specified by the skin module (see example).

My point is that the JavaScript libraries (ebayui-core and ui-core-react) shouldn't need to maintain a JSON file with DS version links, as this information is already managed by the skin module. The skin module defines the DS version, while the JS libraries handle behavior, not styling.

I understand that there may be cases where variants are missing or not fully compatible with the DS version implemented by the skin. However, maintaining these JSON files over time is a significant burden and may not always be accurate. Additionally, these JSON files can become outdated or incorrect.

@ArtBlue ArtBlue modified the milestones: 14.5.0, 14.6.0 Nov 22, 2024
@agliga agliga modified the milestones: 14.6.0, 15.0.0 Dec 19, 2024
@agliga agliga removed this from the 15.0.0 milestone Jan 22, 2025
@agliga agliga added this to the 15.1.0 milestone Jan 22, 2025
@cordeliadillon
Copy link
Contributor

I think there are 3 possible approaches here:

  1. Current: eBay UI Core inherits Evo Version from Skin
    • Pros:
      • Only maintained in one place
    • Cons:
      • Some gaps, as not all components have a 1:1 mapping between Skin and eBayUI
      • Doesn’t reflect functionality change
  2. eBay UI Core maintains Evo Version metadata separate from Skin
    • Pros:
      • Explicit, specific status per library
    • Cons:
      • A lot of redundancy
      • Can get stale if updating this is not a defined part of component dev process
      • Gets out of sync when there are Skin-only version updates
  3. eBay UI Core specifies Evo Version metadata where needed
    • What this could look like:
      • Default to inheriting from Skin
      • If Core specifies a version, use the higher of Core & Skin version
      • Core defines metadata for components that don’t have 1:1 Skin mapping
    • Pros:
      • Reduce redundancy
      • Kind of matches Skin/Core's general model, where Core builds on top of Skin
    • Cons:
      • For code maintainers, I imagine it wouldn't be super clear when metadata needs to be explicitly added here, vs relying on what's in Skin. Requires some cross-referencing.

Let's discuss in our next meeting!

@ArtBlue ArtBlue modified the milestones: 15.1.0, 15.2.0 Feb 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

No branches or pull requests

4 participants