

Firebreath - Cross-platform browser plugin framework - evo_9
http://code.google.com/p/firebreath/

======
samstokes
I'm probably being dense, but what does this actually do? I get that it's
cross-platform and that it's a plugin architecture, but what does the plugin
architecture actually enable?

As far as I can tell, it lets you create new browser functionality in C++ and
expose it (to arbitrary websites?) via Javascript APIs - am I close?

~~~
statictype
Yep, pretty much.

Plugins allow you to run custom client-side code (that has access to the OS
and its services) inside the browser. The most popular browser plugin is
Flash. It is implemented both as an NPAPI plugin (which is supported by
Firefox/Chrome/Safari) and an ActiveX component which is supported on IE.

Other plugins include the QuickTime viewer for watching quicktime video.

The cross-platform framework allows you to keep one codebase for both types of
plugins, which, I presume would encourage developers to write plugins since
it's now easier to make it work on all major browsers without having to learn
two sets of APIs.

You can normally see plugins that are installed in your browser by visiting
about:plugins

~~~
samstokes
Great, thanks for the explanation. (I was indeed being dense - should have
remembered the distinction between plugin and extension!)

------
gte910h
I'd love to see more samples here. This would be great if it took off (I'm
especially interested to see it hit both Webkit + IE).

<http://code.google.com/p/firebreath/wiki/FireBreathUsers> seems empty still.

~~~
egb
<http://groups.google.com/group/firebreath-dev/topics?gvc=2> has a fair amount
of activity, which is a good sign.

But yes, I'd love to see more samples, especially not just cross-browser, but
cross-platform. Can anybody tell - would a FF plugin made with this work on
both OSX & Windows? I can't imagine it would... So this project would let you
keep a single codebase for each of win/linux/osx, which is better than having
separate codebases for each browser on each platform. Maybe?

~~~
taxilian
I'd say about 90% of the code can be cross platform; some things you'll have
to implement seperately, such as the drawing library, since that doesn't work
the same on each platform. FireBreath abstracts most of the differences,
though. For example, it isn't a shim to let npapi plugins work on activex;
it's a shim for both npapi and activex plugins, which means it's easier to
write something in firebreath than it is to write it using npapi as well.

If you aren't doing any drawing, just network stuff and calculations, you can
probably get by without writing any platform specific code.

\- Taxilian (original author of FireBreath)

------
vark
Also see: <http://browserplus.yahoo.com/>

------
ZeroGravitas
So this is different from the recent Google, Mozilla, Adobe announcement that
they were going to introduce a new, faster, safer browser plugin standard?

It's just a compatability shim so your code will work in IE as well as the
NPAPI-supporting browsers?

~~~
taxilian
When that comes out and works, it will be sweet... and FireBreath will support
it.

\- Taxilian (original author of FireBreath)

------
est
Google has a related project on NPAPI

<http://code.google.com/p/nixysa/>

~~~
taxilian
Also a great project; nixysa and FireBreath have a core difference in
approach, though; nixysa is basically a code generation tool to simplify
creating npapi plugins.

FireBreath is a framework that abstracts npapi and activex (but could be
extended to abstract other types of browsers as well, if there were reason and
someone wanted to) to make it easy to write your own code that works in both
places.

------
drivebyacct
Why would I use this instead of Native Client? edit: I really don't understand
this either. How does this fit in with the Chrome style of extension? What is
NPAPI? How does it relate to Native Client? ActiveX? Firefox Extensions?

Clearly I know very little about the current browser plugin ecosystem. Anyone
care to enlighten me?

~~~
est
you need wikipedia

~~~
taxilian
Worth reading up on: <http://en.wikipedia.org/wiki/NPAPI>

actual plugins aren't useful for all situations; in fact, I'd say that it's
relatively uncommon to need to write a plugin.

That is one of the main reasons I started FireBreath; relatively few people in
the world know how to write a browser plugin for any platform, much less make
one work on all major browsers. FireBreath aims to make that easier. That
shouldn't preclude the fact that plugins simply aren't suited to many tasks;
the need to install it is a big factor in that, particularly since most common
install methods only work on one browser. Also, there are existing plugins
such as flash and silverlight that already have a large install base and can
often be used to solve many of the problems that people use plugins to solve;
worth considering.

