Embed Everything!

David Bryant
3 min readApr 10, 2016

--

These days it takes a diverse and complex collection of components to power a web browser. It’s fair to think of all those parts coming together as a single piece of machinery, and we often talk about our web platform as an “engine”. Mozilla’s web engine is known as “Gecko”, and is something we’ve been working on for over two decades.

Originally web engines existed purely to let you build a web browser — a stand-alone application you used on some computer whenever you wanted to access the web, just as you are doing now — and the web was all about documents. We’ve come a long way, though, from basic, static documents to the media-rich, highly interactive web you experience through your browser today. Developers have realized that web engines and their components have great value outside of browsers and have been embedding them in all sorts of clever ways.

For example, why confine all that compelling interactive web content inside a browser? Why not use it to build entire applications that can run on their own? And so we’ve taken web engines and embedded them into application frameworks. A good example of that is Electron, a framework for building cross-platform desktop applications using web technologies. If you’ve built a web page and thought about turning web content into an app you really ought to give Electron a try.

Web engine components can be embedded in other interesting ways too. JavaScript has become a powerful programming environment in general. Used in over ninety percent of web pages, it has started cropping up inside lots of other tools, from pure runtimes like Node.js to hardware development platforms like Tessel to text editors like Atom

Embedding web technologies is officially a thing. And it’s something we’ve taken a major interest in at Mozilla. One new effort all about embedding is Project Positron, wrapping the Electron API around Gecko. We have lots of core web technology work at Mozilla, including the Gecko platform, breakthrough new engine component development as part of Servo, independently exciting technologies like WebAssembly, and powerful new tools like the Rust programming language. As all those next-generation pieces converge, we want them to be embeddable so they can be generally useful to all developers — not just folks building web browsers.

A second new embedding effort is Project Spidernode, in which we’re exploring use of our SpiderMonkey JavaScript engine inside Node.js. We spend a lot of time enabling powerful new JavaScript features in SpiderMonkey as part of Firefox and want have them be available more broadly as well.

As a web engine builder, it’s exciting to realize that any piece of web technology these days might very well be great if embedded somewhere. In fact, that’s true of the entire web itself, and I think of today’s excitement about the Internet of Things as less about just connecting devices to a network and more about embedding the web — all of the web — into everything. Let’s see what we can come up with.

--

--

David Bryant

Mozilla Fellow, lifelong engineer and builder of things. Spent time at Bell Labs, Sun Microsystems, and Nokia.