IRC Log Viewer » #firebreath » 2011-12-13

IRC Nick Time (GMT-7) Message
Daniel____ 06:12 hello
linearray 06:12 hi
Daniel____ 06:12 some one could please tell me what is the fire breath plugin on Mozilla
linearray 06:12 what?
Daniel____ 06:12 im trying to acess a bank web page and where i should put my password shows firebreath plugin
linearray 06:12 I don't understand.
Daniel____ 06:12 ok
when i go to a bank home page, where i should put my password show FIREBREATH PLUGIN
linearray 06:12 interesting
do you have a URL?
Daniel____ 06:12
Daniel_____ 06:12 sorry
linearray 06:12 all I see is a java applet
Daniel_____ 06:12 my internet closed
what is firebreath?
linearray 06:12 firebreath is not a plugin
firebreath is software that helps you write plugins.
Daniel_____ 06:12 ow i see
linearray 06:12 so if you have trouble with the page, I guess you need to talk to your bank
Daniel_____ 06:12 yes
linearray 06:12 what browser/OS do you use?
Daniel_____ 06:12 maybe they use firebreath to creat
Mozilla Firefox (XP)
linearray 06:12 do you have java installed?
Daniel_____ 06:12 yes
this happened after an update
on java
thanks and sorry for my bad english
linearray 06:12 no problem, you're welcome
Daniel_____ 06:12 (Y)
VJ 09:12 The firebreath dll size is quite large, the simple test plugin size is 2.8 MB
What is the reason?
taxilian 09:12 VJ: in debug or release mode?
VJ 09:12 debug
In release mode too, the plugin dll was 2.2 with NO drawing support
taxilian 09:12 platform?
Mac? Windows? Linux?
VJ 09:12 windows
taxilian 09:12 okay, there is no such thing as "no drawing support" because that doesn't change what gets compiled in; there isn't anything special that needs to be compiled in
but here is why:
in case you're wondering what that means (maybe you're not; maybe you can read it), it means that we have looked at the size of everything in the binary and there is nothing there that isn't needed, nothing that can be simply compiled out conditionally that would make a significant difference, etc
however, note that if you compress it (which you generally will for a download, which is where it really matters) you can get a simple plugin down below 500K
VJ 09:12 Can you please elaborate
I am not able to follow you.
taxilian 09:12 elaborate on what exactly? the point is that it's as big as it is because it has to be
but the size you should be concerned about is the size of the installer
not the size of the uncompressed DLL
VJ 09:12 I am talking about the size of the dll... without installer
with installer it's 4.5MB
taxilian 09:12 wait
with your installer it's twice as big?
you need a new installer, my friend
VJ 09:12 Bitrock
taxilian 09:12 the installer should compress the thing
not make it bigger
that's not FireBreath's fault, however
VJ 09:12 Ok, but can you please let me know the reason of the 2.x MB dll size. Why it needs to be so large
taxilian 09:12 I just showed you why
did you expect a specific "oh, it's because of ___ module"? if it were just because of one module then we could easily remove said module and make it small
it isn't
it's because there is a lot in there; there is an NPAPI plugin, an ActiveX Control, conversion code, thread safety features, … each little piece takes a little bit of space
VJ 09:12 Well no I didn't expect that, I just wanted to know the reason
taxilian 09:12 and eventually it adds up to 2.x MB dll size uncompressed
there is no single reason
it is because that's how big it is
VJ 09:12 ok
taxilian 09:12 now, there is another way you can decrease the size somewhat
VJ 09:12 On quick question - So if I choose the proper installer, it will compress it?
the DLL?
taxilian 09:12 !wiki FB_OPTIMIZE
my MSI installer is about 600KB
FireBreathBot 09:12 4 results found. Note: Results limited to 8
"FireBreath 1.6.0 Release Candidate 2 released!":
"Build Configurations":
"Prep Scripts":
"Version History":
taxilian 09:12 look a prep scripts; if you pass in FB_OPTIMIZE=size and then build with RelWithDebInfo or MinSizeRel it'll optimize for size and be slightly slower but a bit smaller
might help
zip the .dll and that's about the size you should be able to get your installer down to
sorry if I seem a little touchy, but I have had to answer that question about 1000 times, and it just feels like everyone thinks that there must be some huge module that is making it so big, when really it isn't that large
linearray 09:12 I guess people don't understand why plugins are larger than the standalone applications they are used to
especially when the plugin appears to do "nothing"
VJ 09:12 :)
I feel plugins play an important rolein web world
Anyways which smaller size installer you recommend?
linearray 09:12 did you try WiX?
I think it should even work automatically
VJ 09:12 ok
taxilian 09:12 VJ: WiX is what I use; when I need a bit more versatility I use WiX and then wrap it with a NSIS installer
still very small
VJ 09:12 ok
what is the size after compressing, I mean after using Wix
taxilian 09:12 obviously that depends on the plugin a bit, but ours is about 600K
another slightly more complex one was about 1MB
it linked in openssl and curl
like I said; to get a close estimate of how big it will be put the .dll in a zipfile
VJ 09:12 ok
linearray 09:12 Personally, I don't understand why people are obsessed with plugin sizes
taxilian 09:12 well, the bigger the download the bigger the barrier to entry
linearray 09:12 the average website loaded with .swfs is larger than plugins
taxilian 09:12 it depends on your target audience; for mine, 1MB is nothing
linearray 09:12 yes
for many things you would want a plugin for you need broadband anyway
taxilian 09:12 but not always
lol. thanks, linearray
linearray 09:12 yw
to prevent the 1001st time from happening
VJ 11:12 Hi, how to make plugin work on 64-bit IE?
It doesnt load
taxilian 11:12 VJ: you'd have to build it with prep2010x64.cmd using a different build dir; before you do that, though, answer me a question
why do you want to?
VJ 11:12 Win7 64 bit comes with 64 bit and 32 bit IE
taxilian 11:12 right
and the default is 32 bit IE
not even flash runs on 64 bit
VJ 11:12 yes defaukt is 32 bit
taxilian 11:12 nobody uses 32 bit IE that expects plugins to work
you can do it, but you'll need a seperate plugin .dll file, which means doubling the size of your install
and building it twice
VJ 11:12 oh ok
got it
taxilian 11:12 soprry, I meant nobody uses 64 bit IE that expects plugins to work
VJ 11:12 got it :)
taxilian 11:12 yw =]
Fraser 11:12 Ok, Friday - got plugin working, monday, got it working in Firefox, today.... IE9
is there a restriction on opening files from a plugin in IE?
my fopen() call fails
works everywhere else
also a call to _popen() to launch a separate exe and stream the output fails
taxilian 11:12 there can be, yes
if UAC is enabled you're running in a low integrity process
Fraser 11:12 i noticed in Visual Studio the process is labelled low-rights
taxilian 11:12
Fraser 11:12 so the end user needs to turn UAC off for this to work?
taxilian 11:12 also
or add your site to the list of protected sites
or you could use a broker process
a process that you can launch that will launch in UAC mode, do what you need, and give you the results
or you could use some sort of IPC with that process
Fraser 11:12 what would you recommend for a plugin with a limited internal audience. I will only be deploying this within a closed network of ~200 people
taxilian 11:12 easiest is probably to have them all add the domain you're running on to their trusted sites list
Fraser 11:12 Hmmm, these people are not that smart :(
taxilian 11:12 it's really not that hard
you can write up an explanation of how to do it
up to you
that's what we do and we deploy to school teachers
Fraser 11:12 I see from the MSDN article that I can write to the user profile, that would get me past the first file access problem but protected mode is also preventing me from launching a process
taxilian 11:12 might be able to use something here to do it for them with your installer:
what kind of process do you need to launch?
you can write freely to the LocalLow area in particular; see SystemHelpers.h for functions to help you get that path
!findfile SystemHelpers.h
FireBreathBot 11:12 Found 1 matching file(s) in the master branch. First 1 are:
Fraser 11:12 it's a script that runs a sync from perforce
taxilian 11:12
Fraser 11:12 aha, so it looks like it's possible for me to do what I need
I like the security, but it sure does make life harder :(
taxilian 11:12 yes it does
just be grateful that I already know where to find these things
believe me, it was a trick to find them initially =]
Fraser 11:12 :D
I am even more grateful that you are always in this IRC channel
i would have been beating my head against the screen for a while without your help
btw, I notice from the forums that you're in Utah :D
taxilian 11:12 well, there are plenty of ways you can give back if you're really grateful =] update docs, contribute to server costs, answer other people's questions, write blog posts, contribute bugfixes, ...
yes I am
Fraser 11:12 me too, I work at Disney in downtown SLC
taxilian 11:12 cool
I'm in AF
Fraser 11:12 Disney is awkward about contributing to open source stuff without absurd legal interference
taxilian 11:12 I believe that
Fraser 11:12 but i'd be more than happy to evangelize Firebreath where I can
taxilian 11:12 just gotta convince them to contribute as a "support cost" ;-)
that actually makes a big difference; FireBreath grows primarily by word of mouth
Fraser 11:12 i'm actually trying to convine more and more people in our industry that many of our internal tools deployment and maintenance issues can be solved with web based tools and the use of plugins
the tool i'm currently building is my proof
taxilian 11:12 cool
I hope that works well for you =] keep in mind that those plugins can also be security problems if you aren't careful
even if you only use it internally, if it is installed and someone found out about it they could abuse it on external sites potentially
Fraser 11:12 yeah, i'm aware
they are very single purpose plugins right now
even if an external source knew the api, they couldn't do much without authenticating to out servers
taxilian 11:12 just be careful is all I'm saying =]
Fraser 11:12 although pretty soon they're talking about wrapping our game engine into a plug-in like Unity does, that's when the real scary fun starts
taxilian 11:12 ho, boy. yeah
it's actually not terrible on windows; Mac it gets really dicy
Fraser 11:12 our tech director thinks this will be "Easy"
taxilian 11:12 LOL
your tech director knows nothing about plugins does he?
Fraser 11:12 i told him the first 80% will be easy, the rest will be absurdly hard
yeah, he's clueless about the web in general
a lifetime of game consoles
very different world
taxilian 11:12 well, #1 problem I've seen when trying to take a game and put it in a plugin
most game developers are lazy
and sloppy
because they can be
Fraser 11:12 yup
taxilian 11:12 in a plugin, you can't use global variables safely
because someone else will open the plugin in another tab and now those variables get clobbered
also, you have to shut down all your threads in a safe way between instances and clear things out, because your process may not be unloaded between instances
likely won't, in fact
Fraser 11:12 we have a ten year old engine, with a million lines of legacy code. it's going to be a real eye opener for a lot of people when we have to run in browser
taxilian 11:12 many games seem to rely on CWD as well; this is absurdly dangerous in a plugin because that may get changed by something else in the process
Fraser 11:12 and game consoles don't EVER exit cleanly
taxilian 11:12 exactly my point
Fraser 11:12 people just hit the power button
I worked in one engine years ago that had no destructors at all
they just cleared memory and reload between levels
taxilian 11:12 yeah; that won't work in a plugin
I dont' work in the gaming industry… it drives me crazy. I'm too much a framework developer; I'm really good at making things reusable
game code makes me want to pull my hair out
Fraser 11:12 yeah, game code is scary, and i'm used to it! Anyway, I appreciate all your help. I need to run to a meeting but i'm sure you'll hear from me again. I'll be evangelizing the use of Firebreath a lot soon :D
taxilian 11:12 goodl uck
and thanks =]
Fraser 11:12 thanks
linearray 11:12 I think some kind of abstraction for the global stuff would be useful... e.g. what I do is I release all globals once my plugincount reaches zero
taxilian 11:12 that's what StaticDeinitialize is supposed to be for
be back in an hour or so; lunch
linearray 11:12 bon appetit
And I don't mean when the process is shut down, but when the last plugin instance is closed. I release a file_lock that prevents other browsers from starting the same plugin.
I use the same counter to prevent other tabs from opening.
Actually I could replace it with a semaphore...
If I can think of a good way to encapsulate it, I might commit it... do you think having a bool singleInstanceOnly in PluginCore makes sense?
Dang, I misunderstood what globalPluginDeinitialize does.
ssdc 14:12 just curious ... is there a good way via code to find the installation location of the plugin? For example, although it seems like a somewhat nightmare scenario, but we're likely going down the path to allow XPI and CRX install options for Firefox and Chrome respectively (rather than just using one DMG/PKG or MSI, etc) - and I'm wondering if we can somehow tell when launched where it's located so that we could tell that?
taxilian 14:12 !wiki tips and tricks
FireBreathBot 14:12 4 results found. Note: Results limited to 8
"Tips and Tricks":
"Using FireBreath":
"FireBreath Home":
"Getting Started":
taxilian 14:12 it's on the tips and tricks page