# Design System
Out of [this list](https://github.com/alexpate/awesome-design-systems), Carbon seems like one of the strongest candidates.
## Unique Strengths
- System-oriented (not a more general site UI, e.g Bulma)
- React Component Library
- Navigable, updated documentation (in English!)
- Opinionated UI/UX patterns around using the design system's own components to enable managing data
## Questions Being Investigated / WIP Questions
- Do we dive 100% into their philosophy immediately and risk over-investing in something that may not scale, or do we slowly migrate over?
- What are JS/TS eng requirements for the next framework we adopt?
- How does it play with Typescript?
- How does it play with Webpack?
- How does it play with Worksheets?
- In terms of UX patterns, there is essentially no compatibility, but
- (For SCSS, details below)
- How can we minimize friction for devs and enable them to be productive without forcing them to slog through the Carbon(/etc) docs for 3 days before touching the front-end?
- All Hands Intro
- Adding SCSS alias mixins, like `mq`
- Comment more liberally
- To what extent do we use their code vs ours when overlap occurs? (Ours/Theirs/Keep both)
- For utilities SCSS
- Delete our cruft but keep both, consider adding aliases from ours to theirs in `_aliases.scss` to keep a backdoor open
- For layout SCSS
- Theirs for global config and vars
- Ours for `<section>`s and stuff
- For global component SCSS
- Theirs for global components (sidebar/navbar)
- For component SCSS
- Theirs
- For component JS
- Theirs for new, ours for old
## Answered Questions
- Can we just pull it in as a regular NPM dependency, or is it a more opinionated `create-carbon-app` type deal?
- Regular dependency
## Migration Plan
- How to schedule before/after Webpack migration
- Preferably after, but not sure
- Temporarily can use CDN-based CSS to forego need to implement SCSS-loaders based on old Webpack config
- How to schedule in regards to Mayven stories?
- If the majority of their focus will be on boosting responsiveness, let's just import @carbon/grid and whatever specific utilities they'll need for implementing the responsiveness in Carbon. Since this aspect will just be SCSS stuff that is relatively unopinionated and relatively loosely coupled
## Migration Plan
- Let Ops know there will be visual inconsistency during the migration that we cannot list everytime, but UX updates will always be announced
- For a while, _support_, but don't use, all 3 frameworks (Bootstrap, Foundation, Carbon)
- When to use Carbon:
- For brand new components
- When refactoring smaller components
- Refactoring larger components should be done as its own actual task (if at all)
##