View Attendee List
- André Veríssimo (Appsilon)
- Eric Nantz (Eli Lilly)
- George Stagg (Posit)
- Paweł Rzymkiewicz (Appsilon)
- Sam Parmar (Pfizer)
- Winston Chang (Posit)
Web-assembly and WebR Discussion
- George Stagg and Winston Chang joined our working group session to discuss the web-assembly portion of Pilot 4
- To run the web-assembly version of the application, the app must be executed in a web server
- The {httpuv}` R package provides a shim that webR uses within Appsilon’s teal webR demo app which is similar to a setup with a Python Shiny app running in Shinylive
- In the (near) future, there will be a Shinylive R version with a package that helps the user create static files directly from a Shiny app written in R.
- For this pilot, we could send the FDA reviewers a simple R script that sets up
{httpuv}
to run a web server that outputs a link they can click on to view the application locally. In fact, there is now a new function calledrunStaticServer
in the development version of{httpuv}
that could be used. Hopefully the new version of{httpuv}
will land on CRAN soon. - Now that we’ve verified that the FDA reviewers can accept compressed archives (
.zip
) inside a transfer in the eCTD gateway, the Pilot 4 app files could be compressed into an archive that uppacks to a directory containing all of the webR and web-assembly files in a subdirectory, with an R script that starts{httpuv}
and runs the files and outputs a local link to view the app. - Verified that R 4.2.2 (version used for the Pilot 2 application) contains binary installations of
{httpuv}
- Web-assembly applications creat a virtual file system as part of its execution. In terms of how additional R packges are loaded into the application, it is recommended to have these packages in the virtual file system.
- The package
.tar.gz
installers can be downloaded from the WebR binary R package repository and stored in the compressed archive for the app. - There aren’t real benefits to having Shiny-related packages included directly in the WebR runtime, as we aren’t in the early days of tech anymore
- Initial loading of the app requires an upfront step of reading the package files in the web-assembly process that takes a bit of time
- To enhance the current Appsilon web-assembly demo app, we need to download the binary
.tar.gz
installers of the package files as part of the package remote sources. It would also required the creation of aPACKAGES
text file which can be done in R directly as seen in this documentation. - If we need to obtain a specific version of the web-assembly engine, it could be done via Node and NPM if that is a critical need.
- Down the road, it might be possible to save a particular version of the web browser as a way to ensure web-assembly runtime reproducibility
- George reported that he’s had situations were the same binaries used in a web-assembly app led to different results
- George recommends that instead of downloading the WebR minified JS from a CDN, that we download the minified JS and store it in the app archive. Hence changing the lines here to a relative URL.
- A key advantage from a security standpoint is that any binaries executed by web-assembly are gauranteed to be running in a browser and using a sandboxed virtual file system, which would eliminate possibilities of any host system modifications.