Richard Bateman
2015-10-09 20:38:23 UTC
Greetings =]
First of all, I realize that this is not going to be a popular topic for the firefox developers; the push has long been to have a more secure, more stable, and more sandboxed web experience in all browsers. Allowing access to system APIs and native code opens a large can of worms and can be dangerous. Many NPAPI plugins could actually be rewritten using emscripten/asm.js, html5 javascript APIs, and better infrastructure.
However...
As the principle developer of FireBreath, I can tell you that there are still many things that FireFox users need that cannot be done inside the browser. Because of this we've been forced to add support for FireBreath plugins which can be accessed through Native Messaging to allow continued support with Google Chrome; it's hacky, it's an ugly interface, and it's far from ideal in many ways, but it's the only way we've been able to provide the features which our users need.
At GradeCam, my current place of employment, we primarily have two requirements which cannot met in any other way (that I am aware of) than an NPAPI plugin in Firefox: a) access to a brand of camera which is used in thousands of schools in the US alone, which doesn't provide standard USB camera drivers, and access to our gradebook export library which interfaces with gradebook applications used by teachers throughout the world.
We have already built an emscripten / getUserMedia solution which works adequately well on Firefox for our primary use, and to be perfectly honest I would *love* not to have to deal with plugins, but dropping support for those other cameras would require thousands of teachers to discard their expensive document cameras and purchase new ones -- I'm sure you are as aware as I am of how unlikely that is. In addition, our software provides those teachers with an easy way to export the data into their gradebook, whatever that gradebook may be. The latter question I hope will some day be less important as we work to create an HTML/Javascript solution, but that solution will never be as powerful or flexible as our current system, nor will it ever allow us to cleanly export to arbitrary gradebooks which are not web-based. Keep in mind that it is not practical for us to try to convince every gradebook vendor to help us solve this problem.
My point is that we aren't alone in these types of needs; no matter how many features you may add to the web, and no matter how awesome that is or how much I would love not to have to deal with native code, there are a huge number of niche use cases which simply aren't satisfied without some access to it.
What is your strategy going forward with that? Google has given us Native Messaging. It's a terribly obnoxious API to deal with and extremely inefficient in a lot of ways, but it does provide us with a method of communicating with a native application. Does FireFox have something similar? If not, do you plan to add something similar or at least something that could be used for a similar purpose by the time that NPAPI is deprecated?
If you have something, I'd love to know what it is and we will try to add support for it in FireBreath to assist with the transition; if you don't, but are open to adding it, I would love to be part of those discussions to help make sure that the use cases that I have seen are addressed.
I look forward to your thoughts!
Richard Bateman
FireBreath principle developer
GradeCam Lead Software Architect
First of all, I realize that this is not going to be a popular topic for the firefox developers; the push has long been to have a more secure, more stable, and more sandboxed web experience in all browsers. Allowing access to system APIs and native code opens a large can of worms and can be dangerous. Many NPAPI plugins could actually be rewritten using emscripten/asm.js, html5 javascript APIs, and better infrastructure.
However...
As the principle developer of FireBreath, I can tell you that there are still many things that FireFox users need that cannot be done inside the browser. Because of this we've been forced to add support for FireBreath plugins which can be accessed through Native Messaging to allow continued support with Google Chrome; it's hacky, it's an ugly interface, and it's far from ideal in many ways, but it's the only way we've been able to provide the features which our users need.
At GradeCam, my current place of employment, we primarily have two requirements which cannot met in any other way (that I am aware of) than an NPAPI plugin in Firefox: a) access to a brand of camera which is used in thousands of schools in the US alone, which doesn't provide standard USB camera drivers, and access to our gradebook export library which interfaces with gradebook applications used by teachers throughout the world.
We have already built an emscripten / getUserMedia solution which works adequately well on Firefox for our primary use, and to be perfectly honest I would *love* not to have to deal with plugins, but dropping support for those other cameras would require thousands of teachers to discard their expensive document cameras and purchase new ones -- I'm sure you are as aware as I am of how unlikely that is. In addition, our software provides those teachers with an easy way to export the data into their gradebook, whatever that gradebook may be. The latter question I hope will some day be less important as we work to create an HTML/Javascript solution, but that solution will never be as powerful or flexible as our current system, nor will it ever allow us to cleanly export to arbitrary gradebooks which are not web-based. Keep in mind that it is not practical for us to try to convince every gradebook vendor to help us solve this problem.
My point is that we aren't alone in these types of needs; no matter how many features you may add to the web, and no matter how awesome that is or how much I would love not to have to deal with native code, there are a huge number of niche use cases which simply aren't satisfied without some access to it.
What is your strategy going forward with that? Google has given us Native Messaging. It's a terribly obnoxious API to deal with and extremely inefficient in a lot of ways, but it does provide us with a method of communicating with a native application. Does FireFox have something similar? If not, do you plan to add something similar or at least something that could be used for a similar purpose by the time that NPAPI is deprecated?
If you have something, I'd love to know what it is and we will try to add support for it in FireBreath to assist with the transition; if you don't, but are open to adding it, I would love to be part of those discussions to help make sure that the use cases that I have seen are addressed.
I look forward to your thoughts!
Richard Bateman
FireBreath principle developer
GradeCam Lead Software Architect