VMware and Other Wasm Players Want WebAssembly
Since it is designed to allow applications that run inside Wasm anywhere there is a properly configured CPU so that there is a Wasm runtime for the CPU architecture. Wasm is expected to serve as a very important computing structure. This is because Wasm allows applications to be deployed and distributed with fewer security layers to manage, a single configuration required for deployment across numerous devices simultaneously and a relatively small runtime structure that lends itself to low latency specs when deploying across networks. It became obvious how it could lend itself well to a host of new target environments for serverless applications or anywhere code might run on a processor, such as in IoT or other edge devices.
VMware Wasm Labs
In this context about two years ago, Daniel Lopez Ridruejo, a senior director at VMware and CEO of Bitnami before VMware acquired it in 2019, was one of more than a few engineers and technology executives at VMware and elsewhere to realize that Wasm was going to do a lot more than help to broadly improve the browser experience. The formation of VMware’s Wasm Labs is a team at the Office of the CTO at VMware.
“Nobody had really figured out exactly how everything was going to work, but I realized there had been a shift,” Ridruejo said. “I came to the leadership of VMware, and I said ‘hey, we should be paying attention to this.’”
Without necessarily creating a formal department to support Wasm-related open source projects, development, integrations with infrastructure and network topologies or to develop applications for Wasm, tech leaders are almost invariably working with Wasm in production or as a sandbox project in addition to VMware.
“Wasm is a powerful core technology that continues the brilliant story of an enterprise app store that was originally envisioned by Bitnami. These guys were close to creating a universal app store for simple and consistent cross-platform deployment of complex enterprise apps, but ultimately fell short of enabling turnkey deployments due to the extreme diversity of the target infrastructure environments,” Torsten Volk, an analyst at Enterprise Management Associates (EMA), said. “Wasm eliminates this complexity and could ultimately make this type of turnkey app store for enterprise apps possible.”
“Of course, there is a lot of homework to be done in the form of language and infrastructure integration, but the Wasm guys are on the right path and all this needs is some patience and some investments into the folks currently creating these integrations,” Volk said. “It will be key that Wasm not only works but is super simple to program for and deploy to.”
To help provide missing links to pave the way for Wasm’s adoption, VMware’s Wasm Labs initiated the Wasm Language Runtimes project. The idea is to “provide basic building blocks for developers who are looking to adopt WebAssembly,” Ridruejo said. The Language Runtime project can be used with other projects, such as mod_wasm (for running traditional web applications, such as WordPress), Wasm Workers Server (for running edge/serverless apps) or other open source projects, such as Fermyon’s Spin, Ridruejo said.
“Adding language support is hugely beneficial to the entire Wasm community — there are around 20 languages that Wasm must support to be successful,” Matt Butcher, co-founder and CEO of Fermyon Technologies, said. “Wasm Labs first released PHP for Wasm, and this was a brilliant opening move. I dropped everything and went to try it out, and even added support to Fermyon Spin.”
Meanwhile, in Fermyon’s case for Spin, VMware’s Wasm Language Runtimes project is beneficial because “Spin does not support running canned web applications without the need for significant setup and integration work,” Volk said. “Wasm Language Runtimes delivers turnkey runtimes for popular enterprise apps and, I believe, supports the installation of today’s hottest data science libraries, such as Pandas and Numpy.”
The Python Connection
In order for Wasm to realize its potential for use cases beyond the browser, such as for edge devices, backend server applications and IoT, Wasm will need to be able to accommodate Python better than it does now.
“Python is a flexible language. It plays an important role in server-side web development, in data and ML in UNIX system scripting and in other places,” Butcher said. “When a general-purpose scripting language like this is well-implemented in Wasm, we get a glimpse into the breadth of applications Wasm can be used for.”
At this point, the core work around Python is done (thanks to VMware and also Christian Heimes, who initiated the CPython work), Butcher said. “That is, we have the runtime. There are rough edges to sand down, but Python-in-Wasm is usable,” Butcher said. “In the next few months, we will start to see how developers apply Python in the Wasm space. If there is one major thing Python needs in the Wasm space, it is support for Numpy and Pandas.”
The big appeal of Python is that there “is a library for everything,” Volk said. “Therefore developers can create feature-rich apps around these libraries, without having to worry about exactly how things work under the covers. For example, if I want to grab data from different APIs to use in my own app, I do not have to create most of the API integrations and neither do I need to figure out how to write the resulting data streams to my SQL or NoSQL database — there are turnkey libraries that do all of this for me,” Volk said. “All I need to do is chain them together and pass them some parameters. Once I have the freedom to do all this in Wasm, we will quickly achieve mass adoption.”
VMware recently added Python support for Wasm Language Runtimes. In its documentation, its Wasm Language Runtimes offers popular language runtimes such as Ruby and others as well as Python that are precompiled to WebAssembly that are tested for compatibility and kept up to date when new versions of upstream languages are released, according to the project’s documentation.
It provides a build of Python for the wasm32-wasi target. Based on the WASI support that is already available in CPython (the mainstream, C-based implementation of Python), additional libraries and usage examples to make it as easy to use as possible augment the runtimes, VMware’s Asen Alexandrov, a staff engineer, wrote in a blog post.
“Our goal is to work with upstream projects whenever possible. CPython added WASI support later last year and it has been great,” Ridruejo said. “SingleStore and Fermyon are companies that pioneered Python work in this area.”
Interestingly, VMware is not focused on runtime performance, but rather on compatibility with the largest number of applications, Ridruejo said. “For that, we are currently focusing on adding as much third-party library support as possible and related dependencies, such as libXML and graphics manipulation libraries.”