THREAD 👇
The #WebAssembly Summit livestream is starting now, and I'll be covering it remotely.
It's the 4th language of the Web, & the biggest architectural shift since JavaScript.
Schedule: webassembly-summit.org/schedule/
Stream:
Opening Summit intros from @ag_dubs, @DasSurma
#WebAssembly Discord
discordapp.com/invite/nsYZMZw
Upcoming #WebAssembly Proposals
bigwebquiz.com
Starting now: #WebAssembly evangelist & code cartoonist @linclark talk on "WebAssembly: Building a new kind of ecosystem"
Another Web Assembly Summit organizer is @torch2424.
@linclark talking about security with #webassembly.
Recapping many points she made in this talk:
Malicious code via modular code on NPM dependencies has been one of the biggest attack vectors.
#wasmsummit is the official hashtag for this event to follow along.
@linclark of Mozilla & @codecartoons does a great job of visually telling the story of #webassembly.
Here's another great talk that gives an introductory overview.
More context in thread👇
The security architecture of #webassembly aims to fix some of the biggest threat vectors of the existing web.
It takes a container/VM type of approach with:
1. Sandboxing
2. Memory model
3. Interface types
4. WebAssembly System Interface
5. WebAssembly nanoprocesses
#wasmsummit
On Nov 11, 2019, the Bytecode Alliance (@bytecodeallies) was announced which is a "new industry partnership coming together to forge WebAssembly’s outside-the-browser future by collaborating on implementing standards and proposing new ones."
hacks.mozilla.org/2019/11/announ…
.@linclark ends her #wasmsummit opening keynote with a quote from #webassembly co-creator @luke_wagner on how this tech represents new greenfield opportunities to create secure-by-default foundations for native development that are portable & scalable, but needs collaboration.
Emscripten creator @kripken giving a low-level #wasmsummit talk on "Shipping Tiny WebAssembly Builds" on best practices in "generating small WebAssembly builds when using popular toolchains like LLVM, Emscripten, Rust, Go, & AssemblyScript."
wasm-shrink:
webassembly.github.io/binaryen/shrin…
Here's the slides for @kripken's #wasmsummit talk on "Shipping Tiny WebAssembly Builds," which goes into way a lot of wonky optimization details.
#webassembly offers smaller code size, which means faster downloads, faster startup, & less mobile data usage.
docs.google.com/presentation/d…
Co-organizer @ag_dubs starting a talk on "Why the #wasmsummit Website isn't written in Wasm, and what that means for the future of Wasm."
Or why #webassembly is not designed to kill JavaScript, but if were, then this is what would need to happen.
This @ag_dubs talk is unpacking how tell the story of what #webassembly is, what problems it solves & why it's important.
She did a series of marketing resarch Twitter surveys to discover the conceptual models of what WASM wants: fast, sandboxed, universal target, multi-language
There's a paradigm shift happening in the software architecture of the web, & @ag_dubs is bringing out her philosophical background to reflect on different tradeoffs & affordances of the variety of programming languages & the conceptual models & paradigms they've fostered.
.@ag_dubs going over an abbreviated history of programming languages in the context of the evolution of the web, the browser wars, & increasing speed of computation. Innovation comes in waves (especially 1995), but there seems to be a recent upturn of new approaches. #wasmsummit
.@ag_dubs links to the design goals & values of #WebAssembly spec, & points to the HTML5 spec that preferences:
Users > Authors > Implementors > Theoretical Purity:
More on the spec & design values:
webassembly.github.io/spec/core/intr…
#wasmsummit
.@ag_dubs says the developer experience & tooling for #WebAssembly is still in the very early days & it's still too painful for most developers to get into yet. Lots of UX yet to be done. Cites usability evolution of C++ & more tooling needed to grow dev ecosystem. #wasmsummit
.@ag_dubs ends #wasmsummit talk with a Super Mario metaphor of the difference between Fire Flowers (representing tech for tech's sake) versus Fire Mario (focus on empowering users via tech to solve new problems).
#WebAssembly community needs to focus on empowerment of new folks.
In between #wasmsummit sessions, attendees are voting on a number of different #webassembly working group proposals for how to expand the spec & features of the language.
So far Single instruction, multiple data (SIMD) & Interface Types have won.
github.com/WebAssembly/pr…
The next #wasmsummit talk was by Apple's @tadeuzagallo, which covers JavaScriptCore's new #WebAssembly interpreter.
JavaScriptCore "provides the ability to evaluate JavaScript programs from within Swift, Objective-C, and C-based apps" meaning WASM can be executed in iOS apps(!)
@tadeuzagallo Rewatching @ag_dubs talk, she referenced the "Bringing the Web up to Speed with WebAssembly" white paper presented at the ACM @sigplan Conference on Programming Language Design & Implementation (#PLDI2017) in Barcelona on Mon 19 Jun 2017 14:00.
Video:
pldi17.sigplan.org/details/pldi-2…
Here's the PDF of the "Bringing the Web up to Speed with #WebAssembly" paper:
cs.tufts.edu/~nr/cs257/arch…
It's pretty amazing how fast this collaboration between Google, Apple, Mozilla, & Microsoft went from idea to implemention to official W3C spec.
Video:
Next up at #wasmsummit is @salomonsen_p talking about creating a sequencer & synthesizer in #WebAssembly. Pretty cool!
He spent the 1st part of his talk doing live performance & live coding of synthesized music.
Here's a link to a sample song & interface:
petersalomonsen.com/webassemblymus…
The #WebAssembly synthesizer by @salomonsen_p uses @AssemblyScript to dynamically compile new wasm in response to either live coding or MIDI input for rapid, iterative development in the browser. He can also program the synthesized instruments in the fly as well. 🤯 #wasmsummit
@salomonsen_p @AssemblyScript Here are the slides to @salomonsen_p's #wasmsummit talk on his #WebAssembly music synthesizer with the direct link to the main theme song.
I really love the sound of the chiptune, 8-bit, or more complex digital music that can synthesized in the browser.
petersalomonsen.com/articles/webas…
Here's @salomonsen_p's sources on GitHub, which contains the #WebAssembly music experiment + the previous JavaScript music projects for MIDI synths & 4klang.
After this talk, I wonder if wasm could be a new cross-platform audio format.
Also FMOD & MIDI 2?
github.com/petersalomonse…
Next #wasmsummit talk is @beriberikix talking about #WebAssembly & Internet of Things (#IoT) & embedded systems, which are constrained by power, processing power, memory, storage, bandwidth, low cost, power efficient. Also has a specific development tool ecosystem.
#WebAssembly was designed to work in non-web embeddings, especially in #IoT apps:
webassembly.org/docs/non-web/
Embedded apps often use C++.
Atwood's Law & JavaScript's high-level of abstraction has increased demand for JS, but @beriberikix decided to go with wasm as intermediary.
.@beriberikix cited this reference list of #WebAssembly runtimes at #wasmsummit.
github.com/appcypher/awes…
He also cited the @bytecodeallies' wasm micro runtime:
github.com/bytecodeallian…
.@beriberikix showed a demo of WAMR + Unikraft, which is a "comprehensive toolchain & library OS which construct unikernels which are highly specialized software bundles that consist of a target application along with just the OS & libraries features it needs to run."
#wasmsummit
There's now a second embedded runtime for #WebAssembly called @wasm3_engine focused on speed. @beriberikix showed an ESP32 (WiFi Arduino) + wasm3 demo on Rust, TinyGo, & AssemblyScript.
So wasm3 is a multi-language platform that runs on embedded devices.
github.com/wasm3/wasm3
.@beriberikix says most IoT protocols have C implementions, but need WASM ports.
MQTT (MQ Telemetry Transport)
OPC (Open Platform Communications)
CAN Bus (Controller Area Network)
CoAP (Constrained Application Protocol)
Weave
Lightweight M2M
BACnet (Building Automation & Control)
Most developer tools for embedded systems are not written in #WebAssembly yet & so devs have to wrap the existing non-wasm tools for updating firmware, debugging, & testing.
Lots of developer experience work to be done in fleshing out the wasm-native, feature parity tool pipeline
Here's the @wasm3_engine demo developed by @alvaroviebrantz & shown during @beriberikix's #wasmsummit talk on IoT.
#WebAssembly is being touted as a "universal language" that developers have been waiting for.
This modular interoperability is revolutionary.
.@KevinHoffman's #wasmsummit talk is on "Building a Containerless Future with WebAssembly."
Showing some demos running #WebAssembly modules as services on the cloud without Linux containers.
Slides are here:
slides.com/autodidaddict/…
Wrapping my mind around the implications of #webassembly code running in the browser, server/cloud, and/or embedded IoT devices.
@KevinHoffman demoing containerless, cloud-native services in wasm being live-swapped with zero downtime without having to provision new resources(!)🤯
"WebAssembly Secure Capabilities Connector is a #WebAssembly host runtime that dynamically & securely binds WebAssembly modules to capability providers."
@KevinHoffman points to this site for more info for running WASM on servers:
wascc.dev
"#WebAssembly is the future of distributed computing." -@KevinHoffman
#wasmsummit demo links:
wat2wasm
webassembly.github.io/wabt/demo/wat2…
WebAssembly Procedure Calls
medium.com/@KevinHoffman/…
github.com/wapc
WebAssembly in the Cloud
wascc.dev
github.com/wascc
.@brionv's #wasmsummit talk is on how Wikipedia turned to #WebAssembly as a <video> polyfill because video codec patents are a pain for folks committed to fully open source stacks. ogv.js implements Ogg Vorbis/Opus/Theora audio & WebM VP8/VP9/AV1 video.
github.com/brion/ogv.js/
#WebAssembly allows Wikipedia to embed video using patent-free codecs across a wide range of older browsers. 2nd half of @brionv's #wasmsummit talk on optimization journey:
1) JavaScript to wasm
2) Threading across multiple CPU cores
3) Single Instruction, Multiple Data (SIMD)
This @brionv page has a number of ogv.js #WebAssembly demos with different Codec settings & optimizations.
Down below are his #wasmsummit takeaways from his long optimization journey.
brionv.com/misc/ogv.js/de…
.@binjimint's closing #wasmsummit keynote of goes through the early history & evolution of #WebAssembly.
Started as sexpr-wasm on Aug 31, 2015 as a two-week bet. Eventually renamed to wabt in Sep 2016, & Ben has been working on it for 4.5 years now.
The high-level goals for #WebAssembly were developed in April 2015. @binjimint continuing to tell the evolution & history of wasm as the closing talk of #wasmsummit.
By March 2017, #WebAssembly reached browser concensus had four browsers that had a MVP in 2 years, which was unheard of.
November 2017 proposals had lots of Ability, & ideas of Producers, Interior, & Embedded needed collaboration (except for garbage collection & host bindings).
.@binjimint walking through the open problems of #WebAssembly garbage collection, which has to live in linear memory that's needs to be separated from local variables.
Also Host Bindings where JavaScript is the slow interface with WASM.
#wasmsummit
More #WebAssembly history in @binjimint's #wasmsummit talk.
By June 2018, more progress on garbage collection, reference types, & started to see Wasm C API to make the API useful beyond the web & make VMs swappable.
Continued #WebAssembly history by @binjimint's #wasmsummit talk. By August 2019, typed function references, type imports, interface types, & WASI (WebAssembly Interface Types).
.@binjimint's pointed to these two WASI references/primers from @linclark:
"WebAssembly Interface Types: Interoperate with All the Things!"
hacks.mozilla.org/2019/08/webass…
"Standardizing WASI: A system interface to run WebAssembly outside the web"
hacks.mozilla.org/2019/03/standa…
#wasmsummit
WASI is all about interoperating with the outside world in a sandboxed way.
The WASI APIs will evolve over time, & @binjimint points out that WASI's high-level goals mirrors the original #WebAssembly goals.
#wasmsummit
Now up to today's proposals, February 2020
Reference Types at phase 3, close to open standard.
Garbage collection: Single Open Intermediate Language initiative are academics collaborating with #WebAssembly.
The Wasm C API is implemented in V8, Wabt, & Wasmtime.
WASI has own org
The #WebAssembly Interface Types proposal "describes high-level values (like strings, sequences, records and variants) without committing to a single memory representation or sharing scheme."
This proposal won the popular vote at #wasmsummit
Explainer:
github.com/WebAssembly/in…
Here's what @binjimint sees as the future abilities, languages, interop features, & distribution contexts for #WebAssembly.
Links for more info:
w3.org/community/weba…
github.com/WebAssembly/me…
github.com/WebAssembly/pr…
hacks.mozilla.org/category/code-…
#wasmsummit
Group photo of #wasmsummit speakers at historic gathering
#WebAssembly represents one of the biggest architectural shifts in creating cross-platform, interoperable services that span browsers, containerless, centralized cloud, & decentralized, serverless, edge compute devices.
I wasn't able to attend the summit, but I really wanted to cover it remotely live to better understand some of the deep paradigm shifts #WebAssembly represents.
It's pretty profound.
If you find this coverage valuable, please consider supporting it here:
patreon.com/voicesofvr
Share this Scrolly Tale with your friends.
A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.