Announcing the XBlock Rendering Summit

TLDR: we’re holding a 3-hour XBlock Rendering Summit on Wednesday, August 7, 2024, from 18:00 - 21:00 UTC. Details here.

The problem

As some of you may already be aware, there are difficulties when trying to render XBlock views invididually in MFEs. We ran into them originally with frontend-app-library-authoring, more recently with the React Video Player, they threw a wrench into the release of the new Studio Unit Page in Redwood (link further down), and they affect the viability of the authoring experience in the upcoming version of Content Libraries.

The difficulties can be summed up as follows: for security reasons - particularly on the authoring side - we’d ideally render XBlocks in iframes, thus isolating them from the instance’s domain cookies. However, the main built-in XBlocks (Video, HTML, and Problem) have a lot of frontend dependencies which are currently expected to be provided by the runtime environment. This means that these dependencies have all to be loaded for each independent iframe. The browser does this in parallel, with the result that any page attempting to render more than, say, 10 blocks, will inevitably grind to a halt.

This can perhaps become self-evident by looking at the chunk of the PR that attempted to do this for the new Studio Unit Page:

The Learning MFE gets around some of these problems by iframing the entire unit page, which in turn still gets rendered by edx-platform. While this addresses the security issue, it is, however, less than ideal:

  • It stops us from removing frontend code from edx-platform
  • It enables built-in XBlocks to continue relying on an edx-platform-provided build- and runtime environment
  • It makes it harder for XBlocks to take advantage of more modern technologies such as React
  • etc…

Wat do?

It’s high time we get our heads together and figure a way forward so we can hopefully unlock some great features for Sumac and beyond. We started the conversation a few months ago, continued it at the conference, and now we need to finish it.

This is a formal invite to a 3-hour summit on Wednesday, August 7, 2024, from 18:00 - 21:00 UTC, to get down and dirty with all this and hopefully arrive at a plan. More details, including an agenda, at this page:

https://openedx.atlassian.net/wiki/spaces/FEDX/pages/4366663684/XBlock+Rendering+Summit+Part+1+2024-08-07

Please take the time from now until then to scrutinize the existing proposals in that page or to add ones that aren’t there. Include as much detail as you can. Feel free to post comments with questions or other notes, or just otherwise meaningfully add to that page so we can optimize synchronous time at the summit itself.

See you then!

Apologies for the taggery, but making sure the following people are aware: @braden, @Glib_Glugovskiy, @Felipe, @jmakowski, @kmccormick, @dave, @feanil, @brian.smith, @e0d, @jristau1984, @Kelly_Buchanan. If you want direct invites, let me know!

5 Likes

@arbrandes I would love an invite to this summit. Thanks!

I’m interested as well to participate. Can you send me and invite?

@arbrandes I would have attended this summit but unfortunately the timing of the summit is quite late at night for me. Would there be any recordings or notes shared after the summit?

Apologies! For the next one(s) I’ll try to find an earlier time.

Note, though, that if you have thoughts on the subject (comments, questions, suggestions, anything), you’re more than welcome to outline them asynchronously, either here or in the wiki page itself, and we’ll make sure to address them, either before, during, or after the summit.

Yes, the whole summit will be recorded! I’ll post it here soon after it ends, including a searchable transcript.

Again, the summit is just meant to be a focus point, not the whole discussion. Even if we reach some sort of conclusion during the synchronous part, it’ll be echoed and open for discussion here in the forums to start with, and will also be up for review in an upcoming ADR or OEP.

1 Like

I’d love to participate. Can I get an invite?