Blog on chrispederick.com Work Posts
Mozilla Update finally relaunched this weekend and the Developers Control Panel was turned on as part of this release.
This allows me to administrate my extensions and make sure that the information is current, so I have uploaded the latest versions of both the User Agent Switcher and Web Developer extensions. These updates still go into a moderation queue before appearing on the site, but hopefully that will only take a few days.
If you want the latest news about my extensions this site is still the best place to check out, but it will be nice to have the official extensions site up-to-date as well.
I started noticing recently a few web sites in my referrer logs that mentioned Surf Junky. I had no idea what Surf Junky was so I opened the sites to see what they were talking about and why they were linking to chrispederick.com. It turns out that Surf Junky is a service that pays you to surf the web. It works by popping up advertisements every 30 seconds and you can earn up to 75 cents an hour.
Now 75 cents an hour does not seem like much, but if you use the service 24 hours a day, seven days a week it can total over $500 a month. This, however, would require closing the popup ads every 30 seconds and so people have been looking for ways to scam the system and this is where my site comes in.
Apparently, the Surf Junky popup ads can be blocked using Firefox and because of this Surf Junky now block this browser. However, with my User Agent Switcher extension you can fool them into thinking that you are browsing with Internet Explorer. Combine this with an extension that reloads the page on a regular basis and you have a pretty efficient way of abusing the Surf Junky system.
Let me make it clear that I am not condoning or recommending the use of this technique in any way, but it does raise a couple of interesting points.
Firstly, there has already been an article about the possibility of the Web Developer extension getting me into trouble by “inducing” people to reverse-engineer a website’s functionality. If anything the Surf Junky situation appears more serious, as in this case it is directly taking revenue from the company. Is it beyond the realm of possibility that Surf Junky may look not only to take action against the individuals that are trying to abuse their system, but also against the software that is helping those individuals?
And what about the role that extensions are going to play as Firefox becomes more and more popular. There are already extensions that change specific web sites—such as BetterSearch that “enhances search engines”—as well as extensions that allow the changing of any web site—such as GreaseMonkey that allows “you to add user scripts to any web page to change it’s behavior”. We have already seen strong opinions—both for and against—about the AutoLink feature in Google’s new toolbar. How will companies feel as they hear more and more about extensions that allow everything from the design to the behavior of their web sites to be changed?
Judging by the numbers in my referrer logs it does not take much for people to look for ways to exploit the revenue model of a web site. Of course, this is nothing new as there have always been programs designed to exploit systems, but the ease with which Firefox extensions can be created and the growing popularity of the browser could make unethical extensions easier to both create and distribute.
Extensions that are designed purely for “evil” purposes should be simple enough to target and the authors prosecuted, but what about those—such as User Agent Switcher—that are designed for legitimate uses and are then used (possibly in conjunction with other genuine extensions) to exploit a web site? Will we begin to see companies apply legal pressure to the authors of such honest extensions?
Only time will tell.
Update: CNET News.com discusses this topic focusing on the GreaseMonkey extension and the possibility of malicious scripts.
Sam came over to my desk on Thursday with the December issue of Software Development magazine and said I should read the article at the back of the magazine.
I soon noticed my name in the article as the author stated “I often use Web Developer, a Mozilla Firefox extension written by Chris Pederick”. Very cool, I thought, but Sam said I should keep reading. The article continued:
It’s a handy tool, and it’s most unfortunate that, if Utah Sen. Orrin Hatch (R) has his way, my use of Web Developer may put Chris Pederick in the Big House. Why? Because if I use Web Developer to reverse-engineer a copyrighted “MegaCorp” website, MegaCorp could complain to the local U.S. Attorney that Chris Pederick “induced” me to reverse-engineer its website’s functionality, and in doing so, violate MegaCorp’s copyright. The vehicle with which Sen. Hatch could make Pederick a potential felon is the “Inducing Infringement of Copyrights Act of 2004,” a controversial bill that, as of this writing, is in its fifth rewrite. Along with the Digital Millennium Copyright Act (DMCA), about which I wrote last month, the so-called “Induce Act” circumvents the fair use argument for copyrighted material by making it a federal offense to “intentionally induce” someone to infringe upon the rights of a copyright holder, regardless of whether the end user of the technology is legally entitled to use it.
At first I was shocked and did not really know what to make of the article, but it will be interesting to follow the progress of this “Induce Act” and see what form of the bill is eventually passed. If you wish to read more, the full article is available online.
In the meantime, if you want me to continue to fight MegaCorp and Senator Hatch, please make sure you donate!
I have just released version 0.9.3 of the Web Developer extension. There are a number of fixes—listed in the history—as well as the addition of the same support for update notifications that was added to the last release of the User Agent Switcher extension.
I now plan on working on the 1.0 release and I will be updating the to-do list as I make progress.
Version 0.6.3 of the User Agent Switcher extension has been released. The full history is available, but the two main changes in this release are the hiding of the option to automatically reset the user agent when the browser closes and the addition of support for update notifications.
The reset option has been hidden because too many people were disabling it without reading the FAQ and understanding why it was enabled by default. If you understand the problem and still want to disable the auto reset functionality then just manually set the preference ‘useragentswitcher.reset.onclose’ to ‘false’.
Mozilla Update development is apparently continuing, but in the meantime they are not accepting extension submissions via Bugzilla and I cannot do the updates myself until the developer section is activated. This is frustrating, to say the least, therefore I have changed the User Agent Switcher extension so that it no longer uses Mozilla Update to check for updates. Going forward Firefox should indicate immediately when a new version has been released. I will be making the same change in the next release of the Web Developer extension.
User Agent Switcher 0.6.2 fixes a bug where the menu was not checked when the vendor or vendor sub settings were overwritten with the default values.
Web Developer 0.9.2 contains a number of bug fixes including those from the unannounced 0.9.1 release—the history lists all the changes. This release fixes all the major issues discovered in the 0.9 release and will now be put on Mozilla Update.
As with the recent User Agent Switcher release I will also be creating a localized version containing multiple languages. I had localizations for the previous version, but there were too many changes in this new release to still use these so if you have new or updated translations simply contact me and I will add them to the localized version.
A new version of the User Agent Switcher extension has been released. In this release the toolbar icon now changes when a non-default user agent is selected and both vendor and vendor sub can now be overridden. I have also improved the auto-reset functionality as there were some cases when it previously would not reset properly.
Just before I left for Hawaii a month ago, I was contacted by Om Malik who wanted to talk to me about Firefox. Om was writing an article for Business 2.0 magazine and was introduced to me through Blake Ross.
We talked about the Web Developer extension as well as Firefox in general. It was a good conversation, but I did not think I had said anything interesting enough to warrant inclusion in the article. However, the article came out last week and I was pleasantly surprised to find I made an appearance:
…Firefox will only grow more powerful. Just ask San Francisco-based Web developer Chris Pederick, who’s created a free tool kit that makes building Web applications in Firefox easy. “There is a lot more at stake here than Microsoft admits,” Pederick says.
It is definitely worth reading the full article and you can find my words of wisdom in the very last paragraph on the second page.
With the Firefox 1.0 release due soon the extension version has been increased to 1.0 recently. This weekend I updated both the User Agent Switcher and Web Developer extensions to support this and asked for the change to be made on Mozilla Update.
I am also planning on releasing new versions of both extensions soon after Firefox 1.0 is released. For the User Agent Switcher this is just a minor update with a few enhancements, but the Web Developer release will be a major upgrade. You can check out what is already coded for this next release on the to-do page.
With the last release of the User Agent Switcher extension I increased the maximum supported version for Firefox to 0.10+ so that it works on Firefox preview release builds.
I am currently working on the next release of the Web Developer extension, but it is not yet ready for release. Therefore I have just updated version 0.8 with the same maximum supported version for Firefox as that of the User Agent Switcher extension. The updated Web Developer extension is available from the download page and should be on Mozilla Update soon.
I have also updated the Web Developer to-do page to list what I have already coded for the next release so that you can see the progress that I am making.
A new version of the User Agent Switcher extension has been released. The main addition in this release is support for changing the app name and app version in builds of Firefox and Mozilla after July 22nd, as per bug 166395. This release should also finally fix the incompatibilities with the Compact Menu extension.
A new version of the User Agent Switcher extension has been released. This release adds a toolbar button for Firefox and improves the interface for maintaining the list of user agents, as well as fixing the incompatibilities with the Compact Menu extension and the user agent not resetting when the browser was closed.
Admittedly these were released a little ahead of schedule—particularly Web Developer—as I wanted to have them available before Firefox 0.9. I did a fair amount of testing over the weekend, but inevitably some bugs will—and have—slipped through. The following issues have already been discovered:
User Agent Switcher
- The user agent is not reset when the browser closes
- ‘Visited Links’ features do not work in Firefox 0.9
- ‘Edit CSS’ sidebar has an oversized margin
The announcement of a new default theme for Mozilla Firefox also came a little too late for me to include it, but I will look into supporting this for the next release.
With Firefox 0.9 due to be released either on Saturday, June 12th or Monday, June 14th, I have been working on getting both the User Agent Switcher and Web Developer extensions compatible with the new extension manager. Both extensions are now ready to go and I am just doing some final testing before releasing them.
User Agent Switcher 0.4 will not be a major update, but as well as Firefox 0.9 compatibility there is now localized language support and the number of user agents is now configurable and unlimited.
Web Developer 0.8, on the other hand, is a major update and includes many new features, improvements and bug fixes along with Firefox 0.9 compatibility. The full list of changes is pretty big, but the highlights are:
- Added the features:
- Clear Session Cookies
- Disable Image Animations
- Display Access Keys
- Display Block Size
- Display Current Size in Title
- Display Link Paths
- Display Tab Index
- Display Topographic Information
- Make Form Fields Writable
- Outline Frames
- Outline Images With Empty Alt Attributes
- Populate Form Fields
- Show Comments
- Added a Pinstripe theme and updated the Qute theme
- Added better tab and window support
- Added localized language support
- Colors for all features that display tooltips are now configurable
- Fixed bugs:
- Opening a popup window with the toolbar in text mode crashed the browser
- Status icons became invisible with the toolbar in text mode
- ‘Validate Local CSS’ was not working
- Improved the ‘Edit CSS’ feature:
- Font is now monospaced and the size is configurable
- Style sheets are now displayed in separate tabs
- Removed all unnecessary page refreshes
I have also tidied the menus a little and added a new top-level menu ‘CSS’ which will require any Web Developer themes to be updated. I will update the theming instructions and post in the MozillaZine Themes forum with instructions on what needs to be changed.
Look for both extensions to be released sometime this weekend.
Having just laid out my plan for the next release of the Web Developer extension, now comes the news from Ben Goodger about the changes to extensions for Firefox 0.9.
These changes are very welcome as they should help to eliminate some of the issues surrounding extensions: incompatibilities with certain browser versions, lack of uninstall support, keeping track of extension updates to name just a few. However, these changes also have the potential to make the Firefox 0.9 release pretty messy. Basically, any extension written prior to 0.9 will not install under 0.9 and will need to be completely repackaged in order to work correctly going forward.
Changes = Work
This is going to result in many users becoming disgruntled when they find that some extensions have yet to be converted for Firefox 0.9. Of course, changes like this are to be expected from any pre–1.0 product, but I just hope that the resulting fallout is appropriately handled. Firstly, the code changes need to be rigorously tested so that all major bugs are resolved before the release or extension authors will be overwhelmed with support issues and trying to work out whether the problem is due to Firefox or the extension itself. Secondly, the extension authors need to be given adequate time to prepare their extensions both in terms of repackaging and setting them up on whatever server is going to handle tracking updates—currently suggested as being update.mozilla.org.
As I say, I am really looking forward to these changes as I think they greatly enhance the extension mechanism in Firefox, but I just hope that Ben is aware of how massive a change this is and works with the extension development community to mitigate the risks. There is a MozillaZine forums topic tracking the changes if you wish to read the latest news.
Now of course how this affects the User Agent Switcher and Web Developer extensions is hard to say until a release date for Firefox 0.9 is known. I have not been working on the User Agent Switcher extension recently, so I will just try to release a 0.9-compatible version when the browser release occurs. The Web Developer extension is trickier as I am currently working on the next version. However, my current plan is to keep working on it until Firefox 0.9 is released and then release whatever I have ready to go. This may mean that I don’t get to include everything I had hoped to in the Web Developer 0.8 release, but it will allow me to immediately release a 0.9-compatibile version.
Hopefully things will become clearer as the Firefox 0.9 release comes closer.
Looking at the Web Developer history the average period of time between major releases has been about six weeks. With six weeks having passed since the 0.7 release I thought I would give a status report and explain why the 0.8 release is not yet ready to go.
The biggest amount of time on 0.8 has undoubtedly been spent on adding localization support. I had not even thought about localization support when originally creating the extension and so I have had to retrofit it into the code. This is a pretty dull task which takes a fair amount of time and has not exactly inspired me to work on the extension. However, it is now almost complete with only the options dialog to work on so this has allowed me to move on to coding new features.
As well as creating a Pinstripe theme—now that I have my Mac—I have added the following features:
- Display Access Keys
- Display Link Paths
- Display Tab Index
- Display Topographic Information
- Make Form Fields Writable
- Outline Frames
- Populate Form Fields
- Show Comments
With these features complete the plan is to finish adding localization support and then move on to some of the other things on the to-do list, particularly the ‘Edit CSS’ improvements. If you have ideas for new features or enhancements that you would like to see added then please contact me.