32

What is the exact difference between plugins, add-on and extensions. I have read a lot about this and confused, For example see these four definitions:

1-fire-fox says "Add-ons is the collective name for extensions, themes and plugins" (see https://support.mozilla.org/en-US/questions/790919)

2-www.Differencebetween.net says "Plug-in and Add-on are simply extensions ... Plug-in is the term that is usually used when referring to third party software (interact with a certain program) like flash player ...

3- wikipedia (https://en.wikipedia.org/wiki/Plug-in_%28computing%29) says plugin are being deprecated.

4-I have read in another website that plugins are larger than add-ons and it consist add-on concept.

Also I have read the answer provided in firefox add-on vs. extensions vs. plugins and http://colonelpanic.net/2010/08/browser-plugins-vs-extensions-the-difference/

However I want to understand these differences especially in firebreath where plugins execute automatically through user's consent and add-on should install manually. Also I think plugin embed in htm page while add-on is in form of a separated file like xpi in fire-fox.

Any exact, comprehensive and precise definitions for these three concepts which emerge differences would be appreciated.

Community
  • 1
  • 1
Hosein Aqajani
  • 1,553
  • 4
  • 26
  • 46
  • 1
    The answer _depends_ on thew browser you're talking about, since they use different terminology. – Xan Nov 01 '15 at 13:43
  • 1
    In firefox, plugins are different from addons. In firefox, extensions are the same thing as addons. Plugins can be created like this in firefox: https://developer.mozilla.org/en-US/Add-ons/Plugins – Noitidart Nov 01 '15 at 21:13
  • 1
    @Xan Thank you, You are expert in Google Chrome, could you please determine these differences in your scope? – Hosein Aqajani Nov 02 '15 at 06:06
  • 1
    Dear @Noitidart I see the page you cited, It says "plugins are legacy technology", what is your opinion? What is your opinion about 4 definitions that I have mentioned in the question? Is it true that plugin embed in htm pages and have not any separated files like xpi? – Hosein Aqajani Nov 02 '15 at 06:11
  • 1
    Yep plugins are legacy, the NPAPI is to be deprecated sometime in future. The alternative is js-ctypes from addons. I dont have experience of embeding plugins into HTML pages, the article makes it sound like it is possible though. Don't go that way though, google chrome already deprecated NPAPI, I see Firefox doing same very soon. – Noitidart Nov 02 '15 at 06:44
  • Dear @Noitidart is it possible to create add-ons and generate xpi file through fireBreath framework? – Hosein Aqajani Nov 02 '15 at 08:13
  • Yep it uses NPAPI. But when NPAPI deprecates, then it will no longer work. The permanent solution is js-ctypes. – Noitidart Nov 02 '15 at 08:54
  • For chrome, see https://stackoverflow.com/questions/16815389/what-are-chrome-apps-vs-plugins-vs-extensions-and-how-to-develop-them – Michael Freidgeim May 04 '21 at 21:53
  • Does this answer your question? [firefox add-on vs. extensions vs. plugins](https://stackoverflow.com/questions/7575658/firefox-add-on-vs-extensions-vs-plugins) – Michael Freidgeim May 04 '21 at 21:55

2 Answers2

20

General rule of thumb:

Plugins

When you're talking about a web browser, a plugin talks about a NPAPI or similar plugin, which is specific to the page. IE doesn't support "plugins" per se, but they have activex controls which can fill a similar function, though there are also BHO (Browser Helper Object) ActiveX controls which are more similar to extensions. Thus we (the FireBreath team) usually use the term "plugin" to refer to something that works like a NPAPI plugin and the term "extension" to refer to something that works like a typical extension (firefox XPI, Chrome CRX, etc).

Plugins only know about the page they are in; they don't know anything else about the browser or what is loaded in other pages.

Plugins have been responsible for a lot of security problems, since they actually run native code. This has led to a lot of discrimination against them -- much of it deserved. Because of this, and because NPAPI is a royal pain in the neck (hence FireBreath was created), most browsers are trying to phase out plugins. Plugins should never be used unless there is no other way to solve your problem.

That said, there are a lot of cases where they are the only option.

Extensions

An extension is something that is specific to the browser, and they are a bit different on each browser, but tend to be able to learn more about the overall state of the browser; they may be automatically added to pages, accessible separately from a page, etc.

Add-ons

Add-on is more of a generic term which is used to mean a lot of different things. What it actually means just depends on who is talking, but the mozilla definition is probably as good as any; it could be anything that adds functionality to your web browser, regardless of the context.

Key Differences

Extensions tend to be automatic once installed. Plugins are instantiated in one of two ways: 1) by an <object> or <embed> tag in the HTML of a web page, or 2) because they are registered to be the handler for a mimetype which the browser doesn't support.

FireBreath

FireBreath deals with plugins. It has nothing to do with typical browser extensions, only plugins. It is a C++ framework, not a javascript framework, and it allows you to add functionality that can be used from within a web page. Typically FireBreath plugins are used from inside a <object> tag.

FireBreath post-NPAPI

As you may or may not know, Chrome has dropped support for NPAPI plugins (as of version 45) and Firefox has done so as of version 52 (excluding the version 52 Extended Support Release, which will support them for another year). FireBreath 2.0 is now being used in production by several companies and can produce "plugins" (not really plugins, but work similarly) which can work with Google Chrome and Firefox via Native Messaging via a helper extension. The main limitation is drawing; there is no way to draw directly to the browser across native messaging (well, no good way, and no way at all on platforms other than windows).

Eventually we may add support for some abstraction to draw using Canvas / WebGL over the native messaging bridge in FireBreath 2.0, but that hasn't been done yet. Frankly, I don't need it, so I haven't bothered to do it. FireBreath is an open source framework which has unfortunately not received enough support from users in the last couple of years and so the documentation is a bit outdated and there are a lot of little things which haven't been done.

The Native Messaging method relies on an Extension -- we did this primarily to confuse everyone, of course, but also because it was the only way to allow us to communicate with FireBreath plugins from the page in Google Chrome or Firefox.

*(Last updated Mar 6, 2017; Firefox 52 is scheduled to release tomorrow)

Hope that helps. See also:

taxilian
  • 14,229
  • 4
  • 34
  • 73
  • 1
    Thanks to Taxilian's answer, this is an exact, comprehensive and precise answer. Your framework is so useful and applicable for many purposes however I think `FireBreath` is unknown for many users. I have spending a lot of times for handling smart card through add-ons while I could handle my problem with FireBreath quickly. So FireBreath should introduce properly. Your hard work is admirable and appreciated by anyone who knows FireBreath. I hope as soon as possible the problem of obsolescence of plugins and NPAPI solved in FireBreath2 . – Hosein Aqajani Nov 03 '15 at 07:15
  • 1
    FireBreath2 already works with Native Messaging, it's just poorly documented; that just requires users who are willing to chip in. – taxilian Nov 04 '15 at 05:33
  • 1
    it's Great, I have another question: What are the other alternative add-on frameworks (as the competitors of FireBreath) and what are the advantages of FireBreath to them? – Hosein Aqajani Nov 04 '15 at 06:14
  • 1
    There aren't any competitors to FireBreath that I'm aware of. FireBreath fills a particular niche. There are some extension frameworks, which I have never used and can't tell you anything about -- the advantages to those are that they aren't plugins. If you don't need a plugin, don't use one. – taxilian Nov 04 '15 at 15:41
  • 1
    Dear @taxilian , I want to use a c++ dll (winscard.dll) through native messaging for chrome browser extensions, however I could not make this connection. Is it possible to do this communication? I have another questions so can I have your email please? – Hosein Aqajani Nov 11 '15 at 05:48
  • 1
    @H.Aqjn I try to help people out online, but I am not your free personal consultant; if you have further questions, please ask them on stackoverflow. If they are relevant to something I do I will probably see them and if I can and I have time, I will probably attempt to answer. If not, someone else will. Welcome to the internet. – taxilian Nov 11 '15 at 15:16
  • Dear @taxilian, I did not expect to waste your time, I think It is useful for you to know about smart card. I really wonder from your answer! I asked a simple question: ` Is it possible to...?` and you could reply me as:`yes/no/I dont know` while you respond me with too many if ! if I see, if I can, if I have time, if I am healthy, if I am not bored, if... probably,may be and perhaps I will decide to answer you!. This is very strange behavior. You are not my free consultant but if you try to solve my problem your knowledge would be grows. And this is the nature of science my friend. Good luck – Hosein Aqajani Nov 14 '15 at 10:59
  • 2
    I will assume that whatever culture you are from, that comment was intended to be far less insulting than it actual sounds in my culture. Regardless, I do not give out my personal email address for questions which should be asked on StackOverflow; I recommend against asking for such on stackoverflow in the future, it will likely not be taken well. – taxilian Nov 14 '15 at 20:48
0

I used plugins and extensions a long time ago. I even remember that the tab often crashed because of plugins. I heard about add-ons very late. It's just evolution.