Operation Tame: Attack Plan
Problem Statement
Because of the unwieldy size and low maintenance of edx-platform, we see:
code complexity
code coupling
circular dependencies amongst modules
unclear interfaces and boundaries
lack of code organization
code located in surprising places
tests duplicated and in multiple places
lack of documentation
lack of testing standards
As a result of the above, we see:
high developer cognitive load
slow tests
escaped bugs
low team velocity
high tech debt
Plan of Attack
We are attacking this issue from various directions, including:
Creating Component Architecture documents in the Architecture space with
Sequence Diagrams
Component Diagrams
Developing an agreed upon Testing Best Practices with Testing tools for interface testing with realistic data.
Developing a hierarchical system-level architecture diagram with clear roles and responsibilities
Phase 0 (CURRENT): Create spreadsheet enumerating all folders within LMS, CMS, and openedx/common.
Include sub-folders that have large enough sub-features/responsibilities.
Fill out the following columns: path, name, role & responsibility, known violations.
Phase 1 (DESIRED): Group folders from Phase 0 into logical containers, each with their own role and responsibility.
Create a dependency hierarchy for a desired layered architecture.
Denote points of desired decoupling by both space (independent deployment units) and time (async connections)
Phase 2 (ASSESS): When working in an area, a team can take the desired behavior from Phase 1 and assess the subsystem.
Define synchronous and asynchronous interfaces.
Document violations of abstractions and layering.
Phase 3 (MODIFY): When working in an area, a team can refer to the assessment in Phase 2 and update the subsystem as desired.
Agents
@Robert Raposa, @Andy Armstrong (Deactivated), @Scott Dunn (Deactivated), @Nimisha Asthagiri (Deactivated)