Paragon Roadmap

Establish: Paragon Working Group

  • Representatives:
    • A Frontend Engineer from as many themes as possible
    • A11y (Jeff)
    • (UX) UI/Vis Designer
    • ... (get suggestions for others required)
  • Meeting:
    • Bi-weekly, 1 hour
    • Purpose: discuss issues, desired features, distribute workload

Phase 1: Project Tune Up (version 4.0)

"Reset" GreenKeeper

  • Upgrade project dependencies to current versions (prefer an all-at-once approach)
  • Delete Greenkeeper PRs and Issues
  • Ensure Greenkeeper is configured properly
    • Evaluate Renovate as replacement

Clear Stale Issues, PRs, Branches

  • Old issues may be valid, but we will take this opportunity to reset our vision
  • There are 14 Pages of Stale Branches
  • 5 pages of active branches, mostly greenkeeper
  • Clear project board

Upgrade linters to match current MFEs

Get a11y review to understand baseline

Phase 2: Minor Updates (4.x)

Let's work on all non-breaking improvements we can.

  • Create a mechanism to add deprecation warnings for old props.
  • Add per-component npm package exports
    • Support today's import @edx/paragon and also @edx/paragon-{componentName}
      • Look at "Bit"
  • Streamline exported package (today including a component from Paragon may add about 500kb to build)
    • Tree shaking
  • Swap icons to use FontAwesome React inline SVG:
  • Storybook should style with edx-bootstrap v2 theme
  • Add more components with Reactstrap (non-breaking additions)
    • Add passthrough components
    • be judicious about what components we add to augment the library.
  • Docs
    • combine with edx bootstrap, do work to sort out best way to do this.
  • Component Interface Cleanup (maintain backwards compatibility)
    • Paragon components should have similar consistent props
    • write down decisions on naming. WOOw
  • Stop auto-generating ids on things where it doesn't make sense (i.e. <Icon />)
  • Support i18n
  • Analytics
  • remove hardcoded English labels

Major/Minor Grey Area

  • Stop using content in a component for aria-labels. They should be required when it makes sense, but not made for you.

Phase 3: Major Updates (5.0)

All breaking improvements.

  • Remove build targets themeable and static. Lose support for use in legacy applications.
  • Simplify the ways styles are added in Paragon
    • Prefer class strings over imported style objects
    • Remove includes of scss in .jsx files
  • Remove backwards compatibility for legacy props
  • remove asInput()
  • Open Issues (with proposed breaking changes)
  • Leverage Reactstrap (breaking change implementations)
    • Where appropriate swap Paragon implementations with Reactstrap passthroughs/wrappers.


edx-platform is the only consumer of the "static" build:

edx/edx-platform – StatusBarAlert.jsx
edx/edx-platform – account_settings.html
edx/edx-platform – PasswordResetInput.jsx
edx/edx-platform – UpsellExperimentModal.jsx
edx/edx-platform – PortfolioExperimentUpsellModal.jsx
edx/edx-platform – PasswordResetConfirmation.jsx

edx/edx-platform – course-home-fragment.html
edx/edx-platform – StudentAccountDeletion.jsx
edx/edx-platform – StudentAccountDeletionModal.jsx
edx/edx-platform – choose.html
edx/edx-platform – dashboard.html