Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Creating Component Architecture documents in the Architecture space with
    1. Sequence Diagrams
    2. Component Diagrams
  2. Developing an agreed upon Testing Best Practices with Testing tools for interface testing with realistic data.
  3. Developing a hierarchical system-level architecture diagram with clear roles and responsibilities
    1. Phase 0 (CURRENT): Create spreadsheet enumerating all folders within LMS, CMS, and openedx/common.
      1. Include sub-folders that have large enough sub-features/responsibilities.
      2. Fill out the following columns: path, name, role & responsibility, known violations.
    2. Phase 1 (DESIRED): Group folders from Phase 0 into logical containers, each with their own role and responsibility.
      1. Create a dependency hierarchy for a desired layered architecture.
      2. Denote points of desired decoupling by both space (independent deployment units) and time (async connections)
    3. Phase 2 (ASSESS): When working in an area, a team can take the desired behavior from Phase 1 and assess the subsystem.
      1. Define synchronous and asynchronous interfaces.
      2. Document violations of abstractions and layering.
    4. Phase 3 (MODIFY): When working in an area, a team can refer to the assessment in Phase 2 and update the subsystem as desired.

Phase 0 Notes:

  • Create plan for automating metadata extraction from code to output the equivalent of the spreadsheet.
  • Create "Draft Best Practices" page.
    • Creation of new things.  Where does it go?  
    • Cleaning up old things.  Common libs pip installed should no longer be pip installed.

Phase 1 Notes:

  • Next Steps:
    1. Validate seams
      1. Review by stakeholders: Learner, Educator, Business, Analytics, TestEng, Platform, Eng Management
        1. JIRA perspective: https://docs.google.com/a/edx.org/spreadsheets/d/15Uz3JrwPVg51Pj6cw02iPUAAZ53AchbtgZ3g1TPmb7g/edit?usp=sharing
      2. Run-through a few use-cases
    2. Move to logical components within edx-platform 
    3. Dependency analysis to find low-level, high-level, etc components
    4. Move low-level components to their own repos
      1. If modified a lot
      2. if not modified a lot
    5. Best practices (OEP)
      1. clear interfaces
      2. folder structure
      3. etc
    6. Move current pip-installable apps in edx-platform into their own repo (common/lib/*)
    7. Reduce # of acceptance tests
  • Folder example:
    • openedx/
      • capa/
      • discussions/
      • grades
      • course-blocks/
      • courses
      • certificates
      • middleware
      • core
      • cms?

Agents

Robert RaposaAndy Armstrong (Deactivated)Scott Dunn (Deactivated)Nimisha Asthagiri (Deactivated)