2017-08-17 Meeting Notes

Date

Special Guests

Jeremy Bowman (Deactivated)Brian BeggsEric Fischer (Deactivated)

Goals

  • Determine what's blocking us from adopting React org-wide, and figure out a way to fix it
  • Discuss the asset pipeline's pain points; think through ways we can solve them
  • Let's punt the Webpack standardization discussion till Tyler is back next week

Discussion items

TimeItemWhoNotes
30 minsAssest Pipeline: what's wrong with it? Why do we want to fix it?Dennis Jen (Deactivated)I get the general sense that it's not well understood and is a source of pain for developers. What's the deal?
20 minsLet's get real about React.Ari Rizzitano (Deactivated)OEP-11 landed months ago. Why haven't we started using React yet? What's standing in our way and how can we address it?

Notes

  • This week Eric discovered docker devstack wasn't watching assets! We need to solve this so Dahlia (and other product teams working on edx-platform) can work effectively on client-side code.
  • Background on caching within lms vs studio:
    • Within LMS, static files get an md5 hash within the filename
    • Within studio, the static directory is named after the current git commit hash. Everything within this directory can be safely cached.
  • Does studio use the requirejs optimizer?

Goals

  • Keep assets small
  • Use HTTP2
  • Reduce the number of round trips
  • Address static assets within separately-installed Django apps
  • Build assets all through one process separate from Django. Why?
    • Webpack is built with frontend compilation in mind
    • Python asset-building tools don't necessarily stay up to date with the JS ecosystem
  • Effective development environment tools
    • Fast builds
    • Sourcemaps
  • Handle theming
    • Eat our own dog food re: theming
  • Asset builds for CI/production:
    • Should happen separately from AMI builds
  • Use the same process/practices for all IDAs

Process

  • Store static assets with their associated Django apps
  • Kill symlinks
  • Make sure our process isn't at odds with Bootstrap's standard means of organizing assets
  • Build incrementally!
  • Use our findings to establish and share best practices with the community
  • Break the right stuff
  • Determine specific requirements for LMS assets & CMS assets
  • Document the current state of the pipeline
  • Enumerate everything we want to kill; make plans to kill it
  • Weekly(?) checkin re: static assets
  • Our asset build process(es) should work across different OS's/platforms

Action Items