Tutor Users' Group


It’s become clear that there is an acute need to support new Tutor users and plugin developers. It’s also clear that Tutor maintainers benefit from hearing feedback from people who are using the tool. 

Please join our users’ group for sharing help, tips, and feedback on using Tutor and developing Tutor plugins. Bring your questions, and get ready for some live debugging! Expert or newbie, all are welcome.

Announcements will be posted to Slack in #tutor-maintenance



Agenda and Notes

We meet every other week. Our schedule and video conferencing link is on the Working Group Calendar. The meeting is usually hosted by @Kyle McCormick .

You can add topics below ahead of time, or add them during the meeting.


  • MFE build time (below)

  • Configuring open edx services with tutor

    • Moises and Maksim work on large instances group

    • Some of tutor’s default were meant to simplify setup

    • For large instances, they need to undo tutor’s defaults

    • example: celery queues

      • tutor uses one celery queue

      • at scale, the queue can fill up

        • using patches, large instances has been undoing tutor’s configuration changes

    • edx-platform is complex to follow, with all the indirection

      • related: OEP-45 simplification

    • could be better to have a blank slate

    • edunext had to replicate ansible installation settings, using tutor

    • they are using settings patches

      • yaml settings patch

      • common settings

      • production patches

      • some files don’t have patches

  • Having plugins expose configuration interfaces

    • tutor-contrib-pod-autoscaling

    • rather than add more config settings, the plugin



  • MFE build time

  • why does the network connection break when we have too much parallelism in the build?

    • this seems different than the npm connection limitation. seems that the host’s network connection is failing

      • saturation of bandwidth?

    • to build mfes in sandbox, had to explicitly set max_parallelism=2

  • Solutions

    • Sharing dependencies across MFEs

      • Hinted at in

      • @Kyle McCormick

    • “No New MFEs”

      • @Kyle McCormick

    • Remote registry

      • Axim-provided registry? network of registries, different providers in different regions

      • @Kyle McCormick

    • Local registry

      • This can definitely have multiple versions

      • @Maksim Sokolskiy

    • Local cache. Two potential issues:

      • 1. ensure that it’s actually caching anything at all:

      • 2. version conflicts across MFEs may invalidate a shared cache

      • @Dawoud Sheraz

  • Other solutions (not currently following up on)

    • Pre-built image with some deps

      • Max has tried this

      • Install one mfe’s deps using previous mfe as a base

      • Used pnpm – can handle multiple different versions of package

        • pnpm didn’t work out of the box

      • pnpm , workspace for each mfe





Present: several people



Meeting link: https://meet.google.com/rhs-veey-rrp

Present: @Chintan Joshi , @Danyal Faheem, @Dave Ormsbee (Axim) , @Dawoud Sheraz , @Deimer Morales ,@Maksim Sokolski, @Maria Grimaldi, Qasim Gulzar , @Régis Behmo

  • Integrate Tutor with IntelliJ IDEA/Pycharm (by Qasim Gulzar@edly)

    • Recording:

    • The tutorial instructions will be published soon-ish in a dedicated space.

    • In the meantime, we can reproduce the instructions with the video recording.

    • Instructions are still hackish and a little brittle, we can definitely work to improve them.

  • How to track the eclipse with Tutor (by @Régis Behmo if time permits) (it did not)


  • MongoDb 7 upgrade: scheduled for Redwood

  • utf8mb3 upgrade. We reached the following decisions for Redwood:

    • upgrade the connection string and the database default charset to utf8mb4 for all platforms

    • For existing platforms, upgrade the default database charset (with ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;).

    • For existing platforms, convert tables in a conservative manner, using instructions similar to:

      ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;. The list of candidate tables is available here.

    • Implementation of these decisions can be followed in this GitHub issue:

  • MySQL high memory issue on Arch Linux:

    • It was suggested that Arch users manually create a docker-compose.override.yml file.

    • We should update the troubleshooting instructions for Arch Linux users. @Deimer Morales can you please open a pull request to update the Tutor docs?


  • Auto-mounted directories

    • Can we add mount keywords in our own plugin? → yes, or open a PR to upstream plugin

    • Do we list the keywords anywhere? example, platform-plugin-

      • The exact list is not documented anywhere

  • MFE mounts

    • Tried to mount custom mfe – couldn’t do it

      • used command line mount

      • did not see the mfe on the port

      • seems like folder was mounted, but MFE filter wasn’t added to, so the tutor-mfe plugin didn’t know to build/run the mfe

      • How Zach did it:

  • Let’s talk about MFE image building… why we (usually) don’t need to re-build, and figuring out this Docker build cache madness. (@Régis Behmo )

    • Theoretically, rebuild should only happen if (1) we change an MFE and (2) we’re pushing it to production

    • Errors when installing node_modules

      • npm error, socket reset, registry hangup

    • Docker build cache size needs to be set large enough so that it doesn’t get garbage collected between mfe builds

      • need to change a config item in $HOME/.docker/daemon.json

      • If you think you rebuild too often, try upping docker build cache max size

  • Talked about - kyle will continue to work on

  • Production vs dev flow in docs - docs nudge you towards production flow

  • Remote image building - anyone?

    • edunext has - they build tutor-nightly images on an ec2 instance

      • 20-30 minutes for uncustomized mfe image

    • custom multiarch builder - regis builds macos images even though he doesn’t have a mac

Older Notes

Paste old notes here.