Mozilla has been designed with extensibility in mind. It means you can enhance, hack, bend, fix Firefox or websites with an infinite different way.
First, it's a FLOSS project. You can read the source code, modify it, roll your own version of Firefox.
Additionnaly, you can write extensions. Extensions and JetPack give you a way to do almost everything you want. Change the UI, add new features, fix some bugs, make your life easier as a user.
And finally, you can make websites your own. Through JetPack, GreaseMonkey and Stylish, you can change a website behavior and/or presentation in a few lines of Javascript and CSS.
Everybody has its own reason to hack Firefox. Mine is usually: "just for fun".
So, "just for fun", and to show how far you can go with the extension mechanism, here is a little useless extension I wrote: a WiiMote driver for Firefox.
What does it do? It brings WiiMote events to the web content. You can change tab with doing a "forehand/backhand" tennis drive and, in your web page, make your elements moving depending on the WiiMote events (rotation, g force, position, ...).
But web pages, of course, do not support this API. *But*, with another extensions, JetPack (or Greasemonkey), you can "hack" a website and add support for the Wiimote to it! :)
Let's see what it looks like:
What I do here is:
Feel free to grab the code and look how a C++ extension work with the Mozilla build system. See the README for build instruction.
This extension only works for Linux as of now. I probably won't have time to port it to other platforms, but you can. Feel free to make this code your own and make it works for other OSes.
You may have heard the saying "If you can't open it, it's not yours." Because Firefox is open in so many flavors of Open, you can really say it's totally yours.