Sunday, July 10, 2005
Pulling Mozilla CVS
So, after looking at several "real-world" examples, it turns out that all of them (including the mplayerplug-in project) use NPAPI in order to actually register and communicate with the browser. There are, however, sample plug-ins in the Mozilla repository that appear to not use the old NPAPI at all. I've been examining these plugins, but have not had any luck getting my own version to show up in about:plugins. I'm currently building the whole Mozilla suite from CVS now in order to see if the sample plugins actually register properly, or if it's just me doing something wrong in my implementations.
For the curious, here is the link to the "simple" sample plugin that I'm trying to build. I think I've learned a lot about the architecture thus far, but since I have yet to get a plugin working, I can't be sure. As such, I'm going to refrain from documenting my "findings" from studying that plugin until I'm sure that what I think I've learned is fact ;)
I'm also starting to wonder if this whole process is worth it. Since so many other plugins use the old NPAPI, why not go ahead and use it for GPLFlash? The old API certainly seems like it would be easier to use. I guess the big thing is the scripting interface that can be exposed with the new API, though that can be done in conjunction with using the old API calls for plugin registration. Ah well — the "simple" plugin sample just finished compiling (with a little bit of tweaking), so I'm off to test it.
Note: I have been told by someone who recently downloaded the SWF specification that Macromedia has added a restrictive license to the end of the document. Because of this, newcomers will not be able to get a copy of the spec and still be able to contribute to GPLFlash's development. Since other developers (such as myself) already have access to the specification without the license, this should not pose a major problem in the short term. Please bear with us, and do not seek out or use this specification in conjunction with the GPLFlash project.

