pluginscross-browsercross-platformfirebreathbrowser-plugin

a comparison in cross browser plugin's frameworks


I have found that there are plenty of frameworks for browser plugins.

my first question: which one of the following frameworks specified for plugins and which one is not specified for plugins: FireBreath, OpenForge, Kango, BabelExt, Nixysa project, JUCE project, QtBrowserPlugin project .

my second question: Is there another popular plugin's framework other than those mentioned?

my third question: What is the main differences of these popular plugin's frameworks? Indeed is there any comparison of these frameworks, the comparison could be in each of following terms:

  1. usability (for a page as a NPAPI plug-in or for a browser as an add-on extension),
  2. simplicity (in developing),
  3. speed (on execution),
  4. extensibility (of developed add-on),
  5. availability (in Windows 86x and 64x, Unix, Linux, mac and other platforms and also mobile platforms specifically android, ios, ...),
  6. flexibility (for new technologies),
  7. reliability (in terms of security),
  8. accessibility (open source or not),
  9. portability (in Fire-fox, chrome, IE, Safari, Opera, ...),
  10. applicability (in drawing, communicating, calling from external server, threading, network accessing, etcetera),
  11. stability (in changing the policies, for example in deprecating NPAPI)

Also I have read Cross-Browser Extensions API? which I think it is about extension's framework (not plugin's framework)


Solution

  • I'll be honest -- this seems like something you should be able to answer with some google searching. I appreciate that you're at least trying to apply suggestions on how to better ask questions, though, so I'll respond on the few that I know something about.

    FireBreath is a C++ framework for creating browser plugins, not extensions. It works as an NPAPI plugin for browsers supporting NPAPI plugins (previously this was all but IE, but Chrome dropped support for them this year and Firefox plans to at the end of 2016) or as an ActiveX control, giving it equivalent functionality to a browser plugin in Internet Explorer. FireBreath 2, which is working but poorly documented so far, changes the APIs from being synchronous between the browser and plugin to being asynchronous and adds an emulation layer to let them work with Google Chrome using Native Messaging. It's the most complete and up to date of the plugin frameworks, as far as I am aware. I am its primary author, so feel free to get your own confirmation of that.

    Nixysa is a tool that takes definition files and outputs code for a NPAPI plugin. I haven't used it, so I can't tell you exactly what it's capabilities are. It hasn't been updated since 2012, when PPAPI support was added; this is unlikely to be useful, though, since PPAPI has changed significantly since then, and also since the only PPAPI plugins that can run without special command-line flags to chrome are ones specially blessed by the Chrome team.

    JUCE is a GPL library with a commercial licence available which has some support for creating browser plugins. I have no idea as to how powerful it is these days; it seemed well written when I last looked at it, and takes a much more minimalistic approach than FireBreath does; FireBreath gives you a framework and tries to make everything Just Work, whereas JUCE seems (I could be wrong) to be more of a "provide the building blocks, but don't try to make everything look the same" type of thing.

    QtBrowserPlugin is a defunct unmaintained project which at one time allowed creating browser plugins (probably just npapi, but not certain) with QT. Indications are that it probably doesn't work anymore.

    I have no idea what the other projects are. If I were you, I'd try doing some research. Google is your friend.