Do you have any technical documentation or comments to go with this puffer code?
shyamalschandra opened this issue · comments
Do you have any technical documentation or comments to go with this puffer code?
We have a draft research paper on the website (https://puffer.stanford.edu) and some comments in the code. Nothing else though.
Does the SNR group @ Stanford have any other related papers on this topics?
Finally, do you plan to port to native mobile devices?
Sure, here's some more of our research (also linked in the FAQ):
- https://mosh.org (mobile shell program with a "functional" terminal emulator)
- https://snr.stanford.edu/salsify/ (real-time videoconferencing with a "functional" video codec)
- https://www.usenix.org/conference/nsdi17/technical-sessions/presentation/horn (recompression and blockwise decompression of JPEG files using a "functional" JPEG encoder), open-source tool at https://github.com/dropbox/lepton
- https://www.usenix.org/conference/atc19/presentation/fouladi (exporting short-lived tasks from your laptop to 10,000 short-lived threads in the cloud), open-source tool at https://github.com/StanfordSNR/gg
- http://ex.camera (massively parallel video compression and machine learning on AWS Lambda, using a "functional" video codec)
- https://pantheon.stanford.edu (playground for congestion control research, with real-world and emulated testbeds and regular logged packet traces and performance metrics)
- http://mahimahi.mit.edu (composable building blocks for network emulation on the command line)
- https://conferences.sigcomm.org/hotnets/2017/papers/hotnets17-final41.pdf (secure agent forwarding over SSH), open-source tool at https://github.com/StanfordSNR/guardian-agent
Re: native mobile devices, we probably won't write a client ourselves anytime soon, but fundamentally we don't control the client anyway. The Puffer server communicates with the client using some pretty reasonable and well-documented interchange formats (H.264/Opus over a WebSocket) and the client-side JS is relatively lightweight (it just shoves the video into the browser's native decoder using MSE, and reports some stats on (e.g.) stall events back to the server so we can measure how well each algorithm is doing). It's not like we can prevent people from changing the client today.
That said, on reflection I think we'd be pretty uncomfortable with other people writing custom clients and putting them in the iOS/Android app stores. We wouldn't want anybody advertising Puffer like it was some sort of commercial service that people should depend on -- this is a small research study and we have ethical obligations to the study participants. And it would make us (and probably other people too) pretty uncomfortable if anybody tried to make money in the process.