G-Research / fasttrackml

Experiment tracking server focused on speed and scalability
https://fasttrackml.io/
Apache License 2.0
98 stars 19 forks source link

CI/CD: Host the latest stable and edge versions of FML as public demo #1126

Open suprjinx opened 6 months ago

jgiannuzzi commented 3 months ago

Here is a crazy idea to avoid all the security issues associated with hosting something that hasn't been developed with public-facing hosting in mind: what about compiling fml to webassembly and then hosting it on github pages? It would then run entirely in the user's browser, as a separate, private, instance. We would of course load it with a pre-populated DB for demo purposes.

For a user that wants to then feed their own data by running some experiments, I believe that our various installation methods (especially the pip one) are super user-friendly and would get them to spin up their own instance for experimentation.

fabiovincenzi commented 3 months ago

Here is a crazy idea to avoid all the security issues associated with hosting something that hasn't been developed with public-facing hosting in mind: what about compiling fml to webassembly and then hosting it on github pages? It would then run entirely in the user's browser, as a separate, private, instance. We would of course load it with a pre-populated DB for demo purposes.

For a user that wants to then feed their own data by running some experiments, I believe that our various installation methods (especially the pip one) are super user-friendly and would get them to spin up their own instance for experimentation.

@jgiannuzzi I did some investigation about this, and that would have been a great solution, but I think right now it's a bit difficult to compile fml to WebAssembly, due to some dependencies it uses that involve some systemcalls that are not supported by WebAssembly, in particular I see problems for tcplisten used by the fiber library.

jgiannuzzi commented 3 months ago

I think this could be done by exposing a function that mimicks fetch and ends up calling httptest into the fiber app. The compiled webassembly module will end up with a different entrypoint that the regular main function anyway.