Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Future of Frontend Development in Open edX

The Future of Frontend Development in Open edX

Presented at Open edX Conference 2017 in Madrid
Video available at https://youtu.be/PpgaVjcMoL0?t=905

The frontend is the face of the Open edX platform: the part users see, interact with, and recognize. It’s our goal to ensure this interface is usable by everyone, including users on mobile devices, users with disabilities, and users with poor internet connectivity. Come learn about our ongoing journey towards a flexible and modern frontend that delights both users and developers, and get a sneak peek at the open-source toolkit we’re building for the Open edX community and beyond.

Ari Rizzitano

May 24, 2017
Tweet

More Decks by Ari Rizzitano

Other Decks in Technology

Transcript

  1. The Future of Frontend Development in Open edX FedX: What’s

    Next? Ari Rizzitano, edX Open edX Conference 2017
  2. “ ” FedX mission Empower the edX development community by

    continually defining, evangelizing, and supporting front end best practices.
  3. UX Pattern Library • Homegrown CSS framework & HTML styleguide

    for Open edX platform • Defines colors, fonts, etc. as well as a few UI patterns • http://ux.edx.org/ 8
  4. Performance • Heavy page weight (static assets) • Slow render

    time • Much worse for mobile browsers or slow network connections 11
  5. Accessibility • Solving for a11y requires domain knowledge, attention to

    detail, and extensive manual testing • This overhead scales exponentially with code duplication 15
  6. Goals • Deliver an optimal experience for all users •

    Develop with maintenance in mind • Make it easy and enjoyable for developers to contribute to the Open edX frontend 20
  7. Conscious Decoupling • Separation of concerns: data, logic, and appearance

    • Consistent, versioned integration points so each service can change independently • Frontend as distributed system 22
  8. Data • Content of the UI • Informs the logic

    layer • Comes from server or user input • Integration points: web APIs, component parameters 23
  9. Logic • Behavior and organization of the UI • JS

    + HTML • Must be consistent, accessible, and embody best practices • Integration points: web APIs, selectors 24
  10. Appearance • How the UI looks • CSS + HTML

    • Must be extensible and receptive to theming • Integration point: selectors 25
  11. All Together Now 26 server rendered UI data (JS state)

    templates JSON logic (JS, HTML) appearance (CSS) selectors AJAX/XHR requests existing server-side templates user actions
  12. Web Fragments • Pluggable user interfaces via Django application •

    Usable within edx-platform and XBlock implementations • Approved via OEP-12 29
  13. Asset Management 30 with • Handles JS as well as

    SASS • Not dependent on Django • Enables modern ES2015 code via Babel
  14. • Themeable, extensible CSS framework • Version 4 (beta release

    coming soon) • Approval in progress via OEP-16 31
  15. • JS framework encouraging encapsulation and modularity • Interoperates well

    with legacy code • Approved for Open edX via OEP-11 32
  16. Component Library • Environment-agnostic chunks of UI • Consistent markup,

    easy to style or theme • Accessible functionality is baked in! 33
  17. Get Involved • #front-end in the Open edX Slack •

    edx-code mailing list • PRs always welcome • Watch the OEP repo:
 https://github.com/edx/open-edx-proposals/ • Come find us this week! 34