I've started my Extensions Tutorial! It over here. I have a first, very simple, extension up there (hello world of course), and an explanation of it. In the next couple days I will have more advanced extensions there. I'll get into skins, localization and components as well as talking about setting up a development environment to make things so much easier to iterate the dev of extensions.
Of course if you want to just take a look at my other proof-of-concept extension you can get it here. It installs into Firefox/Sunbird/TBird trunk builds.
I now have a solid understanding of the chrome.manifest file and have successfully created a XPI file for my test extensions. I have placed it in a directory over here and feel free to download it. I have tested it on Firefox, Thunderbird and Sunbird and it works on all three. However they have to be trunk builds as I use the email-style id and not a GUID. The extension doesn't do much except give an example of an extension that installs across applications and uses skin and localization files.
I'm in the process of creating a tutorial describing what I did to make this extension, or rather, an introduction to making extensions. I'll save everyone the pain I felt going through the process. The tutorial will probably create several other basic extensions and I'll post them in the xpi-stage directory as well and of course link to the tutorial from here when I get it posted.
Incidentally I haven't been able to update the webserver to serve the XPI files so they will just install from the web. The mimetype on the server isn't registered and the .htaccess file isn't working. I'm going to email my support staff and try and get that fixed. UPDATE: works now, or maybe it always did. My cache may have just needed to expire.
I just read a bunch of comments posted on a page dealing with extension development for Firefox and most of them were post decrying the lack of documentation for extensions. I agree with them in part. There is actually quite a bit of documentation but it is scatter, some of it out-of-date and most of it stops at a very early level in the process and counts on the reader to download source and hack away.
What one reader brought up is that the nature of the OSS (Open Source Software) culture is inherently one of hackers. And I don't mean the guys who try to break into government databases. I mean the guys who wanted to know how some piece of software worked so they tore it apart and looked at it, or they experimented until they got it figured out.
I would tend to agree with that sentiment. And furthermore there is nothing wrong with it. I think a person learns a LOT more about programming by actually doing it themself and that is large part what hackers are about. However, Mozilla is now reaching a point where they are getting noticed and want to compete with the big boys (pronounced Microsoft). And one thing Microsoft does better than anyone is get people to adopt their products. One thing MS figured out early was that to get wide consumer adoption of their software they needed the geeks, er programmers, to use it and develop for it. So they wrote the tools and documentation so the programmers could do that. Training classes and certification classes and the whole enchilada.
Mozilla now has a corporate entity and they are increasing their employee base and really becoming a viable entity in the software industry. They are getting developers in other corporations interested and indeed other executives and companies interested in developing mozilla related software. But if they really want to make it to the next level I think they need to get very serious about making a platform out of their codebase and providing the tools and documentation for developers.
There have already been several great tools developed the js debugger and the DOM inspector are 2 examples. And with the work going on over at DevMo I can only hope that the mgmt is pushing for just such a thing. But right now DevMo is just collecting articles from all the other people that have written stuff. I know the line, "It's open source if you don't like it, fix it". And certainly I'm going to do what I can, but at some point it falls in the lap of MozCorp to make it a priority and to get it done.
I'll just sign off by saying I don't mean to be overly critical of Mozilla. I've known and worked with many of these folks for years and am thrilled at their success. I think their platform is one of the strongest things to develop in recent years and only talk this way because I want to see it succeed. Now, off to writing (and documenting) extensions!!
No XPI yet, but I did find a couple of great articles (linke off of DevMo about creating C++ Components for Firefox Extensions.
Here's one for complex extensions and one for simpler extensions, linked to from the first.
I have successfully created a simple extension that can be installed in Firefox, Thunderbird and Sunbird. Right now I'm using it in flat file format and pointing to it using a file with the user@domain.tld name that has the path to the root directory (as described here and here and here), keeping in mind this only works with the trunk builds, not the current releases. But today I'm going to put together a script or something that packages it all up into a .xpi and put it up here for download so others can see what I have done.
In short, what I did was take the helloworld extension (from roachfiend I think, but maybe from here I don't remember which it was) and modify it to launch a seperate XUL window with some basic XUL elements in it. Then I added the target application code to install.rdf for TBird and Sunbird (see earlier post about GUIDs for those apps). Then I modified the overlay's to overlay the proper XUL files for each app.
One thing I noticed is that it would be much easier and clearer if there was a standard for what XUL lives where and naming conventions for things like menu ids or ids for XUL elements in general. I put LXR to good use in order to browse the XUL files and find out where things were. I also mapped out the main windows for FFox and TBird with DOM Inspector in order to figure out just which XUL element was which.
Anyway, I didn't mean to go into this much detail yet. There will be a page with a full description of the extension and how I got to where I am. Yay!
So as I noted in my previous entry I use winamp. In fact, just upgraded to 5.09 or whatever their latest is. I've been using it for YEARS! Sadly they went through a whole re-write fiasco much like Netscape did and jumped from 3.something to 5.0 and the release went flat, much like the Netscape 6.0 launch. I hope they can resurrect themselves from the ashes like Mozilla wound up doing (can you say Firefox?). However I doubt they'll manage to cut loose of the corporation that owns them (AOLTW) since they don't have an opensource audience to fall back on.
But I don't want to be all doom-and-gloom. I like their player and they have internet radio, tv (seinfeld, scrubs, xfiles, South Park!), and their own library of music videos (which I imagine is supplied by their parent. And now they are promoting EMusic.com. I hopped over to their site and it looks pretty cool. I think I'll probably give their 2 week free trial a shot and if it looks good maybe even become a subscriber. They are 100% independant and serve up their music in mp3 format. for 10 bucks a month you get 40 downloads. And just because their independant doesn't mean they only have Joe Buckwheat and the Lap-Sitters. I saw Green Day, Duke Ellington, Ray Charles, the Pixies, Louis Armstrong among other big names.
I'll post more after I give their trial a shot.
So I realize Metallica recorded Whiskey in the Jar some time ago, and I'm sure the video came out around the same time (this would be several years back). I just watched it through winamp (yes they are still releasing a media player under AOL) (more to follow about them). I just have to say wow. The video was basically the band playing in the house while a bunch of trashy looking heavy metal groupies (who all seemed to have g-strings on btw) hung out and partied and went upstairs to get naked and make out, and drink, and smoke, and puke, and go to the bathroom. Basically it was like headbangers ball meets big brother meets Animal House. And at the end they trash the place. I'm really at a loss for words on this one. Stunning. And crap.
Yay, the space shuttle Discovery has landed safely! Take your pic of where you want to go read about it, every news outlet has something about it. It made me very nervous thinking about the possibility of a repeat of the disaster 2.5 years ago. But I guess everything worked out okay.
They clearly need to review their technology and methods. For my money foam doesn't sound like such a great choice for insulating against the heat of re-entry, but then it probably is a little higher grade then the stuff I get my electronics in. ;-) (update: I read that the foam is to protect against the tank icing up not against re-entry heat)
News stories:
Yahoo
CNN
BBC
NASA
Some folks say we should use the money we spend on the space program for other things. I don't know exactly how much NASA's budget is but I think it is money well spent. I'm sure the research and development that goes on at NASA contributes to the engineering knowledge of the US and the world immensely and who knows what we will find in space that will better the world.
I'm working on my little test extension and trying to get it working in Firefox, Thunderbird and Sunbird. Right now it doesn't do anything interesting I'm just trying to get the extension development environemtn familiar to myself and to track down any issues and gather information. For instance, right now I'm hunting around trying to find the GUIDs for the all 3 apps (Firefox is easy) so I can add them as target applications. I KNOW I've seen at least the Thunderbird GUID (paired with the Firefox GUID) but for the life of me can't find it. Which of course brings me back to my rant about documentation and the need for very centralized, standard, sensible easy to find and navigate docs.
In the meantime I'll post them here and try to come up with a system of gathering documentation better than I have over here.
Firefox GUID: {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
Thunderbird GUID: {3550f703-e582-4d05-9a08-453d09bdfdc6}
Mozilla GUID: {86c18b42-e466-45a9-ae7a-9b95ba6f5640}
Sunbird GUID: {718e30fb-e89b-41dd-9da7-e25a45638b28}
Incidentally, the ability for extension developers to use email-style IDs instead of GUIDs is very cool. Makes for a much easier time figuring out what is what when you have several extensions in the profile directory. Documented here at developer.m.o