Web replay has undergone a major architectural change over the last several months which has both hugely improved replaying performance and put things in a good place for integrating with machines in the cloud. It feels like a good time to look into the remaining steps for cloud support.
There is a related concern here which needs to be considered in tandem. Right now we only support recording on macOS, and replaying on macOS. The supported platforms need to be extended to linux and windows, at least --- linux is a common platform for CI systems, and many web developers are on windows. With our current strategy this would require separate cloud installations for each platform, so that we can replay recordings made with that platform. This is daunting, especially because macOS cloud options are very limited (low demand probably, plus hardware constraints imposed by Apple).
Web replay's recording boundary is set so that code from the underlying platform does not actually run when replaying --- platform APIs are redirected, and when replaying they produce recorded outputs instead of running their underlying logic (this gets a little fuzzy though with the middleman call system used to call the platform after diverging from the recording, but that's ok to ignore for now). This means that, in principle, a recording made on one platform could be replayed on another. I'd like to see if this can actually be done.
If this can be done, the steps that need to be done to get both cloud integration and cross platform support working are roughly as follows, and not necessarily in order:
Port web replay to linux, with full recording and replaying support.
Support replaying macOS recordings on linux.
Partially port web replay to windows, so that recordings can be made on windows and replayed on linux.
Develop a cloud based system that uses linux to replay recordings made on any platform.
One important thing this strategy avoids is needing to support rewinding on windows. When I first tried to port web replay to windows a couple years back, this was the main sticking point I ran into. This could maybe be fixed by only supporting win64 firefox and not win32 (windows-on-windows was doing some tricky, opaque things), but not having to rewind at all would be much easier (it would, however, walk back comment 0 to some degree, oh well). We could then look into removing the snapshot system used when rewinding, which is very complex and difficult to debug, and fork() new processes instead. This would be both much simpler and potentially more flexible and performant; I haven't considered using fork() in the past because windows does not support fork(), but this strategy provides an alternative solution to that issue.
Disclaimer: work I'm doing on web replay is done on my own time, and is not part of my official work at mozilla. If you have a problem with me working on this, please talk to me directly.