DEV Community

Jochem Stoel
Jochem Stoel

Posted on

[Question] Are we still doing 'native' browser plugins in 2017/2018?

In this post I use the term native browser plugin for lack of a better term in my vocabulary.

Today I was talking to someone about Unity, a popular game engine. I'm not into games but I remember Unity had a 'web player' plugin for the browser, probably extending the browser to do things it can not do by itself.

I was asked if nowadays there is any recommended standard when it comes to creating plugins like that. Perhaps something consistently implemented by multiple browsers. I had no answer but figured there probably is such a thing so went to go look for one.

When I Googled this Unity web player I discovered that things have changed.

The Unity Webplayer is no longer supported. We provide this download link to the last build for convenience, but be aware that the Unity Webplayer has been deprecated and will not get any further update.
If you want to deliver Unity made content via web browser we recommend you use Unity WebGL.

Do we still create 'native' plugins for the browser or is this considered universally deprecated? Are there any standards? What do you call these type of plugins and where do I find more information? If 'native' plugins are indeed not the way to go, does that mean we are limited to using only functionality supported by browser extensions?

I am very curious about this and am looking forward to reading your answers.

Discussion (4)

Collapse
tom profile image
tom • Edited on

Do we still create 'native' plugins for the browser or is this considered universally deprecated?

My perception1 is that they are fading out.

I think this is largely due to the steady advance of web standards into areas that were previously only the domain of these plugins.

In the past, the biggest issues have been cross-browser compatibility and security, both of which are addressed more directly by the web standards process.

In particular, take a look at WebAssembly — my understanding is that at least part of their goal is safe extension of the web platforms's low-level primitives.

Are there any standards?

Not exactly. The tech involved differs from browser to browser: ActiveX, NPAPI, and PPAPI are places to start.

What do you call these type of plugins and where do I find more information?

Your term — native browser plugins — is pretty good! I can't find a consistent naming across the technologies, but "native client" is the term Google uses.

Hopefully the links above will help you find more.

If 'native' plugins are indeed not the way to go, does that mean we are limited to using only functionality supported by browser extensions?

If you want to build something using tech that is completely unavailable to browsers then you might have a case for using either native client tech or WebAssembly.

Also take look at the Web Incubator Community Group for new and developing standards.

Disclaimer: this area is quite new to me but so took this opportunity to go deeper. Happy to take corrections!

Collapse
orkon profile image
Alex Rudenko

If you want to build something using tech that is completely unavailable to browsers then you might have a case for using either native client tech or WebAssembly.

The native client page says: "NOTE: Deprecation of the technologies described here has been announced for platforms other than ChromeOS.". So I guess it will stop working in the browser soon.

Collapse
tcbyrd profile image
Tommy Byrd • Edited on

If 'native' plugins are indeed not the way to go, does that mean we are limited to using only functionality supported by browser extensions?

Yes, but the question is how much are you actually being limited by today's browser engines? With things like Encrypted Media Extensions, WebGL, WebAssembly, and Service Workers, there's a whole lot possible today using standardized browser APIs that used to require plugins. Unity's plugin was deprecated because WebGL/WebAssembly gives Unity's engine a compile target that's native to all browsers[1]. This means they don't need to develop and maintain a native plugin and ensure it works in all browsers. It's up to the browser engines to ensure they are compliant with the standard APIs, and Unity writes an engine that utilizes those APIs.

[1] - hacks.mozilla.org/2017/07/webassembly-for-native-games-on-the-web/

Collapse
orkon profile image
Alex Rudenko

It seems like the support of native plugins has been deprecated completely (at least by Chrome): blog.chromium.org/2013/09/saying-g... If you follow from here, you will see that the suggested alternatives are now being deprecated too.

I guess the only option is to rely on WebAPIs. Things like WebAssembly should help, perhaps, webassembly.org/