FC-0007 - Gathered Requirements
The following table summarizes the list of requirements gathered from the OEP, comments there in, as well as conversation and meetings with stakeholders.
ID | Related to... | Source |
| Requirement/Feature/Problem |
R0001 |
| OEP - Motivation | Inconsistency between MFEs and the legacy codebase | |
R0002 |
| OEP - Motivation | Inconsistency between the UIs of MFEs themselves (en vogue UI paradigms, no common headers/footers..) | |
R0003 |
| OEP - Motivation | Regression in customizability | |
R0004 |
| OEP - Motivation | Changes that affect multiple MFEs are costly (code duplication, webpack build time) | |
R0005 |
| OEP - Motivation | Inefficient use of network bandwidth (No routing between MFEs, repeated dependencies being downloaded in webpack) | |
R0006 |
| OEP - Motivation | Incosistent Documentation | |
R0007 |
| OEP - Motivation | Inconsistency in deprecation efforts (versioning?) | |
R0008 |
| OEP - Specification | Review top level architecture elements (Integration, SPAs, Shared Dependencies, MFE Component Architecture) | |
R0009 |
| OEP - Specification | Review OEP in context of other Community efforts | |
R0010 |
| OEP - Integration Strategy | Review 5 proposed solutions (javascript runtime, web comp runtime, Weback module Fed, single-spa, Piral) | |
R0011 |
| OEP - Integration Strategy | Cost of Conversion | |
R0012 |
| OEP - Integration Strategy | Cost of Integration (tradeoffs of proposed solution against independent MFEs) | |
R0013 |
| OEP - Integration Strategy | Hosting of build artifacts (object storage, CDN) | |
R0014 |
| OEP - Integration Strategy | Lazy Loading | |
R0015 |
| OEP - Integration Strategy | Efficiency of Development | |
R0016 |
| OEP - Integration Strategy | User impact | |
R0017 |
| OEP - Integration Strategy | Maturity | |
R0018 |
| OEP - Integration Strategy | Project Health | |
R0019 |
| OEP - SPA | Domain Containers (SPAs) for LMS and CMS | |
R0020 |
| OEP - Shared Dependencies | Shared Dependencies (React, Paragon, React-router etc...) | |
R0021 |
| OEP - MFE Component Arch | MFE Components architecture (lifecyle, plugin interface, messaging, shared state etc...) | |
R0022 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | Reduced Bundle size of runtime |
R0023 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | Page load performance |
R0024 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | page UX and cross MFE navigation |
R0025 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | consistency over flexibility (eg REACT version, Paragon version etc...) |
R0026 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | Code Reuse |
R0027 |
| David | https://github.com/openedx/open-edx-proposals/pull/410/files#r1041418854 | Documentation |
R0028 | R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020796342 | MFE modularity and swapability |
R0029 | R0007 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020796922 | Versioning of MFEs and error handling due to Versioning |
R0030 | R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020794629 | Can an MFE be server side rendered and still be compatible with the container arch. |
R0031 | R0015 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019689488 | changes to devstack when developing on individual MFE's. How are other MFE's and containers loaded? Via npm or via source? |
R0032 | R0015 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020794246 | developer workflow: will this result in GIT repo overload? Do MFE's live in a poly-repo? mono-repo per domain? |
R0033 | R0002 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019684161 | Gathering of global requirements for common UX elements like headers and footers |
R0034 | R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019698067 | Dynamically loaded MFEs vs NPMs for shared UX and for selective loading of MFE's at runtime |
R0035 | R0019, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019696132 | Gobal state data such as authentication, authorization claims etc... |
R0036 | R0019, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020794737 | Events, PubSub, Callbacks Cross-MFE-messaging |
R0037 | R0007, R0019, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019700784 | Container / MFE Interface versioning and breaking changes |
R0038 | R0002, R0019, R0020, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019701164 | Enforce a consistent version of Paragon |
R0039 | R0019, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1026929915 | Orchestration/bootstrapping/initialization of MFE. AppProvider.Provider. |
R0040 | R0003, R0019, R0020, R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1020793201 | How to handle deployment specific MFE's such as openEdx vs Edx Brands (previously done by NPM alias) |
R0041 | R0005, R0013, R0014 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019677152 | Lazy loading and codesplitting tradeoffs |
R0042 | R0021 | Adam | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019670774 | What is an MFE |
R0043 | R0005 | Brian | https://github.com/openedx/open-edx-proposals/pull/410/files#r1019646830 | Container routing to MFE entry points and MFE internal routing |
R0044 | R0010, R0019, R0020, R0021 | Adolfo | Google Meet | MFE should be able to run independently from the stack, for development purposes |
R0045 |
| Adolfo | Google Meet | Infrastructure Creep (Piral Registry) |