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

https://github.com/openedx/open-edx-proposals/blob/426f6e09ffe615e77aa9205281d77012385a08d4/oeps/architectural-decisions/oep-XXXX-modular-micro-frontend-domains.rst#motivation

Inconsistency between MFEs and the legacy codebase

R0002

 

OEP - Motivation

https://github.com/openedx/open-edx-proposals/blob/426f6e09ffe615e77aa9205281d77012385a08d4/oeps/architectural-decisions/oep-XXXX-modular-micro-frontend-domains.rst#motivation

Inconsistency between the UIs of MFEs themselves (en vogue UI paradigms, no common headers/footers..)

R0003

 

OEP - Motivation

https://github.com/openedx/open-edx-proposals/blob/426f6e09ffe615e77aa9205281d77012385a08d4/oeps/architectural-decisions/oep-XXXX-modular-micro-frontend-domains.rst#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

Reduced Bundle size of runtime

R0023

 

David

Page load performance

R0024

 

David

page UX and cross MFE navigation

R0025

 

David

consistency over flexibility (eg REACT version, Paragon version etc...)

R0026

 

David

Code Reuse

R0027

 

David

Documentation

R0028

R0021

Adam

MFE modularity and swapability

R0029

R0007

Adam

Versioning of MFEs and error handling due to Versioning

R0030

R0021

Adam

Can an MFE be server side rendered and still be compatible with the container arch.

R0031

R0015

Adam

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

developer workflow: will this result in GIT repo overload? Do MFE's live in a poly-repo? mono-repo per domain?

R0033

R0002

Adam

Gathering of global requirements for common UX elements like headers and footers

R0034

R0021

Adam

Dynamically loaded MFEs vs NPMs for shared UX and for selective loading of MFE's at runtime

R0035

R0019, R0021

Adam

Gobal state data such as authentication, authorization claims etc...

R0036

R0019, R0021

Adam

Events, PubSub, Callbacks Cross-MFE-messaging

R0037

R0007, R0019, R0021

Adam

Container / MFE Interface versioning and breaking changes

R0038

R0002, R0019, R0020, R0021

Adam

Enforce a consistent version of Paragon

R0039

R0019, R0021

Adam

Orchestration/bootstrapping/initialization of MFE. AppProvider.Provider.

R0040

R0003, R0019, R0020, R0021

Adam

How to handle deployment specific MFE's such as openEdx vs Edx Brands (previously done by NPM alias)

R0041

R0005, R0013, R0014

Adam

Lazy loading and codesplitting tradeoffs

R0042

R0021

Adam

What is an MFE

R0043

R0005

Brian

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)