Netscape Plugin Application Programming Interface (NPAPI) is a deprecated (see below) application programming interface (API) that allows browser extensions to be developed. It was first developed for Netscape browsers, starting in 1995 with Netscape Navigator 2.0, but was subsequently adopted by other browsers. With the advent of HTML5 many software vendors have removed support for this API for security reasons.
In NPAPI architecture, a plugin declares content types (e.g. "audio/mp3") that it can handle. When the browser encounters a content type it cannot handle natively, it loads the appropriate plugin, sets aside space within the browser context for the plugin to render and then streams data to it. The plugin is responsible for rendering the data. The plugin runs in-place within the page, as opposed to older browsers that had to launch an external application to handle unknown content types.
NPAPI requires each plugin to implement and expose approximately 15 functions for initializing, creating, deleting and positioning plugin content. NPAPI also supports scripting, printing, full-screen plugins, windowless plugins and content streaming.
LiveConnect was used in Netscape 4 to implement scriptability of NPAPI plugins.
The Open Java Interface-dependent implementation of LiveConnect was removed from the Mozilla source code tree in late June 2009 as part of the Mozilla 2 cleanup effort. It is no longer needed with the release of a redesigned Java Runtime Environment from Sun Microsystems. However the old implementation was restored for Gecko 1.9.2, as Apple had yet to port the newer JRE over to Mac OS X.
The disadvantage of LiveConnect is that it is heavily tied to the version of Java embedded within the Netscape browser. This prevented the browser from using other Java runtimes, and added bloat to the browser download size since it required Java to script plugins. Additionally, LiveConnect is tricky to program: The developer has to define a Java class for the plugin, run it through a specialized Java header compiler and implement the native methods. Handling strings, exceptions and other Java objects from C++ is non-obvious. In addition, LiveConnect uses an earlier and now obsolete application programming interface (API) for invoking native C++ calls from Java, called JRI. The JRI technology has long since been supplanted by JNI.
Full privileges are only granted by default to chrome scripts, i.e. scripts that are part of the application or of an extension. For remote HTML/XHTML/XUL documents, most XPCOM objects are not accessible by the scripts as they have limited privileges due to security reasons. Even if they are accessible (e.g. the XMLHttpRequest object), the usual security restrictions can also be found (e.g. cannot open URLs of other domains).
Mozilla was already using XPCOM to define the interfaces to many objects implemented in C++. Each interface was defined by an IDL file, and run through an IDL compiler that produced header files and a language-neutral type library that was a binary representation of the interface. This binary described the interface, the methods, the parameters, the data structures and enumerations.
XPConnect has no Java dependency. However, the technology is based on XPCOM. Thus the plugin developer must be familiar with reference counting, interfaces and IDL to implement scripting. The dependency on XPCOM led to certain dynamic linking issues (e.g. the fragile base class problem) which had to be solved before the plugin would work correctly with different browsers. XPCOM has since been changed to supply a statically linked version to address such issues. This approach also requires an .xpt file to be installed next to the dynamic-link library (DLL); otherwise the plugin appears to work, but the scripting does not, causing confusion.
At the end of 2004, all major browser companies using NPAPI agreed on NPRuntime as an extension to the original NPAPI to supply scripting, via an API that is similar in style to the old C-style NPAPI and is independent of other browser technologies like Java or XPCOM. It is only supported by Firefox ESR (Extended Support Release) and Safari.
The following list of web browsers support all NPAPI plugins:
The following is a list of NPAPI-based plugins:
Internet Explorer and browsers based on Internet Explorer use ActiveX controls, ActiveX documents and ActiveX scripting to offer in-page extensibility on par with NPAPI. Although commonly associated with Internet Explorer, ActiveX is integration technology that allows any computer program to integrate parts of other computer programs that support such integration. Internet Explorer, however, is discontinued and its replacement, Microsoft Edge, does not support ActiveX.
On 12 August 2009, a page on Google Code introduced a new project, Pepper, with the associated Pepper Plugin API (PPAPI); PPAPI is a derivative of NPAPI aimed to make plugins more portable and more secure. This extension is designed specifically to ease the implementation of out-of-process plugin execution.
In February 2012, Adobe Systems announced that future Linux versions of Adobe Flash Player would be provided only via PPAPI. The previous release, Flash Player 11.2, with NPAPI support, would receive security updates for five years. In August 2016, Adobe announced that, contrary to their previous statement, it would again support the NPAPI Flash Player on Linux and keep releasing new versions of it.
Add-on is the Mozilla term for software modules that can be added to the Firefox web browser and related applications. There are three types: extensions, themes, and plug-ins. Mozilla hosts them on its official add-on website.In 2017, Mozilla enacted major changes to the application programming interface (API) for add-ons in Firefox. The long-standing XUL and XPCOM capabilities were replaced by an API modeled after Google Chrome's; Firefox extensions are now largely compatible with their Chrome counterparts. Plug-ins were deprecated, with the exception of the Adobe Flash Player.Adobe Flash
Adobe Flash is a deprecated multimedia software platform used for production of animations, rich Internet applications, desktop applications, mobile applications, mobile games and embedded web browser video players. Flash displays text, vector graphics and raster graphics to provide animations, video games and applications. It allows streaming of audio and video, and can capture mouse, keyboard, microphone and camera input. Related development platform Adobe AIR continues to be supported.
Artists may produce Flash graphics and animations using Adobe Animate. Software developers may produce applications and video games using Adobe Flash Builder, FlashDevelop, Flash Catalyst, or any text editor when used with the Apache Flex SDK.
End-users can view Flash content via Flash Player (for web browsers), AIR (for desktop or mobile apps) or third-party players such as Scaleform (for video games). Adobe Flash Player (supported on Microsoft Windows, macOS and Linux) enables end-users to view Flash content using web browsers. Adobe Flash Lite enabled viewing Flash content on older smartphones, but has been discontinued and superseded by Adobe AIR.
The ActionScript programming language allows the development of interactive animations, video games, web applications, desktop applications and mobile applications. Programmers can implement Flash software using an IDE such as Adobe Animate, Adobe Flash Builder, Adobe Director, FlashDevelop and Powerflasher FDT. Adobe AIR enables full-featured desktop and mobile applications to be developed with Flash and published for Windows, macOS, Android, iOS, Xbox One, PlayStation 4, Nintendo Wii U, and Switch.
Although Flash was previously a dominant platform for online multimedia content, it is slowly being abandoned as Adobe favors a transition to HTML5. Flash Player has been deprecated and has an official end-of-life at the end of 2020. However, Adobe will continue to develop Adobe AIR, a related technology for building stand-alone applications and games.Basilisk (web browser)
Basilisk is an open-source web browser created by the developers of the Pale Moon browser. There are releases for Microsoft Windows and Linux, and an unofficial build for macOS.First released in 2017, Basilisk is a perpetual beta intended to refine the UXP codebase it is built from. Pale Moon and other applications are also built from this codebase.Like Pale Moon, Basilisk is a fork of Firefox with substantial divergence. Basilisk has the user interface of the Firefox version 29–56 era (unlike Pale Moon, which has the Firefox 4–28 interface).
For add-ons, Basilisk has roughly similar support as Pale Moon for XUL/XPCOM extensions and NPAPI plugins, all of which are no longer supported in Firefox. Basilisk also had experimental support for current Firefox WebExtensions, but this was removed in February 2019.Unlike Pale Moon, Basilisk has limited support for Widevine DRM and WebRTC.Comparison of web browsers
The following tables compare general and technical information for a number of web browsers.Evercookie
Google Chrome (commonly known simply as Chrome) is a cross-platform web browser developed by Google. It was first released in 2008 for Microsoft Windows, and was later ported to Linux, macOS, iOS, and Android. The browser is also the main component of Chrome OS, where it serves as the platform for web apps.
Most of Chrome's source code comes from Google's open-source Chromium project, but Chrome is licensed as proprietary freeware. WebKit was the original rendering engine, but Google eventually forked it to create the Blink engine; all Chrome variants except iOS now use Blink.As of April 2019, StatCounter estimates that Chrome has a 70.05% worldwide browser market share on traditional PCs and 63.16% share across all platforms. Because of this success, Google has expanded the "Chrome" brand name to other products: Chrome OS, Chromecast, Chromebook, Chromebit, Chromebox, and Chromebase.Google Native Client
Google Native Client (NaCl) is a sandboxing technology for running either a subset of Intel x86, ARM, or MIPS native code, or a portable executable, in a sandbox. It allows safely running native code from a web browser, independent of the user operating system, allowing web apps to run at near-native speeds, which aligns with Google's plans for Chrome OS. It may also be used for securing browser plugins, and parts of other applications or full applications such as ZeroVM.To demonstrate the readiness of the technology, on 9 December 2011, Google announced the availability of several new Chrome-only versions of games known for their rich and processor-intensive graphics, including Bastion (no longer supported on the Chrome Web Store). NaCl runs hardware-accelerated 3D graphics (via OpenGL ES 2.0), sandboxed local file storage, dynamic loading, full screen mode, and mouse capture. There are also plans to make NaCl available on handheld devices.Portable Native Client (PNaCl) is an architecture-independent version. PNaCl apps are compiled ahead-of-time. PNaCl is recommended over NaCl for most use cases. The general concept of NaCl (running native code in web browser) has been implemented before in ActiveX, which, while still in use, has full access to the system (disk, memory, user-interface, registry, etc.). Native Client avoids this issue by using sandboxing.
On October 12, 2016, a comment on the Chromium issue tracker indicated that Google's Pepper and Native Client teams had been destaffed. On May 30, 2017, Google announced deprecation of PNaCl in favor of WebAssembly. Although initially Google planned to remove PNaCl in first quarter of 2018, the removal is currently planned in the second quarter of 2019 (except for Chrome Apps).Komodo IDE
Komodo IDE is an integrated development environment (IDE) for dynamic programming languages. It was introduced in May 2000. Many of Komodo's features are derived from an embedded Python interpreter.Komodo IDE uses the Mozilla and Scintilla code base as they share many features and support the same languages (including Python, Perl, PHP, Ruby, Tcl, SQL, Smarty, CSS, HTML and XML) and operating systems (Linux, OS X, and Windows). The editor component is implemented using the Netscape Plugin Application Programming Interface (NPAPI), with the Scintilla view embedded in the XML User Interface Language (XUL) interface in the same manner as a web browser plugin.
Komodo IDE has an open-source counterpart called Komodo Edit. Both share much of the same code base, Komodo IDE containing the more advanced IDE features such as debugging, unit testing, etc.
Both Komodo Edit and IDE support user customizing via plug-ins and macros. Komodo plug-ins are based on Mozilla Add-ons and extensions can be searched for, downloaded, configured, installed and updated from within the application. Available extensions include a Document Object Model (DOM) inspector, pipe features, additional language support and user interface enhancements.
Komodo IDE has features such as integrated debugger support, DOM viewer, interactive shells, source code control integration, and the ability to select the engine used to run regular expressions, to ensure compatibility with the final deployment target. The commercial version also adds code browsing, a database explorer, collaboration, support for many popular source code control systems, and more. Independent implementations of some of these features, such as the database editor, git support, and remote FTP file access, are available in the free version via Komodo Edit's plugin system.Local shared object
A local shared object (LSO), commonly called a Flash cookie (due to its similarity with an HTTP cookie), is a piece of data that websites which use Adobe Flash may store on a user's computer. Local shared objects have been used by all versions of Flash Player (developed by Macromedia, which was later acquired by Adobe Systems) since version 6.Flash cookies, which can be stored or retrieved whenever a user accesses a page containing a Flash application, are a form of local storage. Similar to that of cookies, they can be used to store user preferences, save data from Flash games, or to track users' Internet activity. LSOs have been criticised as a breach of browser security, but there are now browser settings and addons to limit the duration of their storage.Microsoft Silverlight
Microsoft Silverlight (or simply Silverlight) is a deprecated application framework for writing and running rich Internet applications, similar to Adobe Flash. A plugin for Silverlight is still available for some browsers. While early versions of Silverlight focused on streaming media, later versions supported multimedia, graphics, and animation and gave developers support for CLI languages and development tools. Silverlight was also one of the two application development platforms for Windows Phone, but web pages that use Silverlight did not run on the Windows Phone or Windows Mobile versions of Internet Explorer, as there was no Silverlight plugin for Internet Explorer on those platforms.Mozdev.org
mozdev.org is a website that offers free project hosting, and software development tools to the Mozilla community. Many Firefox extensions are hosted on the site, but Thunderbird and SeaMonkey extensions and stand-alone Mozilla-based applications can also be found. It is free to set up a project there, but all development must be done using a license approved by the OSI. Over 250 projects are currently under active development on Mozdev.Mozilla Calendar Project
The Mozilla Calendar Project is the name for the Mozilla project that led to the development of Sunbird calendar application and the Lightning integrated calendar. Sunbird and Lightning are both free software, released under the Mozilla tri-license: the Mozilla Public License, the GNU General Public License and the GNU Lesser General Public License.Pale Moon (web browser)
Pale Moon is an open-source web browser with an emphasis on customizability; its motto is "Your browser, Your way". There are official releases for Microsoft Windows and Linux, an unofficial build for macOS, and contributed builds for various platforms.Pale Moon is a fork of Firefox with substantial divergence. The main differences are the user interface, add-on support, and running in single-process mode. Pale Moon retains the highly customizable user interface of the Firefox version 4–28 era. It also continues to support some types of add-ons that are no longer supported by Firefox.Pipelight
Pipelight is a compatibility layer that allows NPAPI plugins designed for Windows to run on Linux. It is based on a modified version of Wine. It currently supports Silverlight, Flash Player, Unity 3D, and Widevine. There is experimental support for additional plugins such as Shockwave. Pipelight requires that the browser support NPAPI plugins, which some browsers (notably newer versions of Chrome and Opera) don't support. Firefox dropped NPAPI support in version 52.Shumway (software)
Development of Shumway has effectively ceased. Although the project remains available on GitHub (see External links), in February 2016, the project was moved to the "Firefox Graveyard" and is thus considered defunct from Mozilla's point of view. Mozilla's strategy for the time being is to continue to support Adobe Flash, as an exception to its general policy of ceasing support for NPAPI plugins by the end of 2016.Timberwolf (web browser)
Timberwolf was a port of the Firefox web browser to the AmigaOS 4 platform.Waterfox
Waterfox is an open-source web browser for x64 and ARM64 systems. It is intended to be speedy and ethical, and maintain support for legacy extensions dropped by Firefox, from which it is forked. There are official releases for Windows (including a portable version), macOS, Linux and Android.
Waterfox is based on Firefox and is compiled using various compilers and using Intel's Math Kernel Library, Streaming SIMD Extensions 3 and Advanced Vector Extensions. Linux builds are built with Clang. Waterfox is continuing to support the long-standing XUL and XPCOM add-on capability that Firefox removed in version 57.Web-based VoIP
Web-based VoIP is the integration of voice over IP technologies into the facilities and methodologies of the World-Wide Web. It enables digital communication sessions between Web users, or to users of traditional telecommunication services.
Instead of using dedicated, hard-ware based VoIP devices, such as IP phones, analog telephone adapters, or integrated VoIP/Internet access routers, services are provided via a web page and the facilities of the user's computer or hand-held device for accessing and operating a locally attached head set, and microphone. This is assisted by various software components such as Flash, Active X, Silverlight, Java applet or browser plugins like NPAPI.
Using click-to-call, for example, a web user may click on a telephone number, or some other suitable icon, embedded in a corporate web site to initiate a web-based telephone call with a customer service representative without leaving the web site or using any other addition telephony equipment.XBL
XBL (XML Binding Language) is an XML-based markup language for altering the behavior of XUL widgets. It has only ever been implemented in the Mozilla codebase.
Mozilla deprecated XBL in 2017 and is now in the process of removing it from the codebase, which is primarily used to build the Firefox web browser. However, the UXP fork of the codebase intends to continue supporting XBL indefinitely.