I am about to start work on a Mozilla plugin for my company's main product line. I was under the impression that I could build using the Gecko SDK, say two major revisions ago, and that would cover any browser a person would reasonably be using. I am also assuming that this will also cover Chrome and Opera (fact check someone?).
However, I was just reading the documentation and I found this:
For Gecko versions before 2.0, you should choose the Gecko SDK version for the earliest version of Mozilla you wish to target. For Gecko versions 2.0 and higher, you must recompile your component for each release as cross-version compatibility is no longer supported.
Someone please tell me this doesn't mean what I think it means. Does this mean that I am going to have to recompile my plugin for each version of Gecko indefinitely--even after deployment? That doesn't seem like something that the great team over at Mozilla would inflict upon us.
The Gecko SDK has at least two very different purposes. To quote the documentation:
The Gecko SDK, also known as the XULRunner SDK, is a set of XPIDL files, headers and tools to develop XPCOM components which can then in turn e.g. be accessed from XUL using JavaScript.
...
The Gecko SDK contains all of the necessary tools and headers for making scriptable NPAPI plugins including the xpidl compiler/linker and the latest npapi.h.
The sentence you quote from this page applies to the main purpose of the SDK: build native XPCOM components that can be used by Firefox extensions. These XPCOM components have access to browser's internal interfaces which brings up the question of interface stability. Starting with Gecko 2.0 (Firefox 4) this issue is solved in such a way that an XPCOM component can work with one Firefox version only. To work with a different Firefox version it needs to be recompiled with a newer version of the Gecko SDK.
The documentation doesn't really make it clear but all this doesn't apply to NPAPI plugins which communicate with the browser via fixed interfaces only. I'm not sure how much of the Gecko SDK is still needed to compile NPAPI plugins, it seems that it's only npapi.h
and a few other header files. This file don't exactly change often, the changes are mostly limited to constants. So there are no problems compiling your plugin against an older SDK version - only side-effect is that you might not be able to use the new NPAPI features.
That said, you should be able to use NPAPI SDK instead of the Gecko SDK. It is a much smaller download and is dedicated explicitly to creating NPAPI plugins. The files in the Gecko SDK are essentially copied from the NPAPI SDK anyway (note the "Sync to npapi-sdk rNN" changes in the file history).