Firebreath ready for testing

December 10, 2009 9 Comments by Richard

The Firebreath project

Update: See what is happening with FireBreath a year later

It’s been awhile since my last post!  Rest assured, that isn’t because I have lost interest, or because there was nothing to write about; rather, I was occupied with what I considered to be more important things.  If you’re reading this, you likely have already read my previous post, “Call for plugin Developers.”  If you haven’t, you might want to glance over it so that you know what I’m talking about =]

Firebreath has been sponsored by PacketPass, Inc.  I don’t have a web address for them, but I’ll post one later if they want me to do so.  The good news about that is that it means that unlike the vast majority of new open source projects, development of Firebreath is not going to halt before there is at least some sort of a usable project.

Who is working on it?

As you might guess, despite a lot of readers and comments on my last post, relatively few people have joined our mailing list and started helping.  I want to make particular mention of Georg Fritzsche of Germany who has been invaluable to me as a sounding board, as well as come up with some really cool ideas for improving Firebreath even more.  Aside from Georg, there are several others (Don, Jarom, Ben, … ya’ll know who you are) on the mailing list who have been a bit quieter, but nonetheless have been assisting with the brainstorming, planning, and in some small ways development of the project.  This may not sound like a lot, but for a special interest project such as this, I think it’s pretty good.  Of course, we can always use more help =]

Where we’re at:

While I’m not ready to release a “beta” version of Firebreath yet, we are getting really close.  In fact, it’s close enough that anyone feeling a little adventuresome shouldn’t have any trouble setting up a test plugin and testing the limits.  We only support Windows so far (sorry guys, it’s the platform I know best, and it’s the one my client needed first), but we support both Internet Explorer and NPAPI (Firefox, probably Chrome and Safari as well).

A brief list of supported features:

  • NPAPI (Firefox, Chrome, Safari) support
  • ActiveX/IE support
  • Unified scripting API (define your objects for javascript use in one place, they work on all browsers)
  • Easy manipulation of the DOM
  • Event firing from the plugin into Javascript
  • System event handling (mouse events wired, keyboard events can be easily)
  • Basic framework for getting the HWND so you can do your drawing (needs to be fleshed out, but usable)
  • Easy configuration of all plugin properties (such as Mime type, description, GUIDs, etc)

How to create a plugin with Firebreath

If you want to play with it (and please, please, please play with it and tell us what you think), it’s not too hard to get started.  On the firebreath google code page we have instructions on how to build it, including downloading of the source.  You can find it here:

Basic steps to build:

  • Use Mercurial to download the source
  • Use CMake to generate the project for either VS2005 or VS2008 (prep2005.cmd or prep2008.cmd)
  • Open the generated solution file (build/Firebreath.sln) in Visual Studio and build it
  • Run regsvr32.exe on the generated .dll (build/bin/Debug/)
  • open build/projects/PluginTemplate/gen/FBControl.htm and play with it with firebug or jash

Basic steps to create your own Plugin:

  • Copy projects/PluginTemplate to projects/YourPlugin
  • Update pluginConfig.cmake — REPLACE ALL 6 GUIDs WITH YOUR OWN! — and set the mime type, plugin name, etc
  • Rename TemplatePlugin.cpp and .h however you want and update the files so that it is your plugin
  • Update factoryMain.cpp to create your plugin instead of TemplatePlugin
  • Update your “PluginCore” implementation (TemplatePlugin extends PluginCore) to return the correct API type by editing createJSAPI() and copying MathAPI.h and .cpp to whatever you like.
  • Update your JSAPI object (copied from MathAPI.h/.cpp) to have the methods, properties, and optionally events that you want
  • Update CMakeLists.txt to make sure it includes any files that you need
  • run prep200(?).cmd to regenerate the solution and project files
  • build your plugin, run regsvr32.exe on it, and use build/projects/YourPlugin/gen/FBControl.h for testing

How to get more involved

We can use all the help we can get!  The porting effort to linux and mac shouldn’t be astronomical, but currently we have nobody to put on it at least until after 1.0 is out (RC1 planned for end of the year 2009, 1.0 planned for end of January, 2010).  There are a lot of little things that can be done by developers without a lot of plugin experience, as well as some real complex bugs and challenges that will require a bit more experience.

If you are interested in helping, even if just by making suggestions, asking questions, and making comments, please join the development list: