A word of warning: this situation has me very upset. There will be strong language in this post.
As you may, or may not, know, I maintain a Firefox add-on named CacheViewer Continued. I did not originally author this add-on; it was originally developed by someone named “benki” as “CacheViewer.” This add-on was extremely helpful when doing web development with Firefox. CacheViewer made it very easy to find all of the cached items for a given domain or of a given name. Not only that, but you could preview those items directly from the cache, delete them, or even save them elsewhere. So, CacheViewer was one of the add-ons I always installed in Firefox. Then came Firefox 4.0.
Firefox 4.0 broke CacheViewer in such a fashion that it wouldn’t even load. I waited several weeks for an update, but benki seemed to have dropped off the planet. Making matters worse, there were no alternatives to CacheViewer (and there still aren’t to my knowledge). So, I decided to look into the problem and see if I could correct it myself. It was a simple fix. Thus was CacheViewer Continued born and since May of 2011 I have been maintaining it as I am able (and is required).
Everything was working out well. I was releasing CacheViewer Continued into the “not fully tested” add-on repository, and people were happy. Then Mozilla noticed that people really liked CacheViewer and it was missing from the “fully reviewed” repository. As a result, Mozilla contacted me to see if I would be willing to submit CacheViewer Continued for full review so that people could install it directly from the browser add-ons tool. I said sure, even though I had planned to clean up the code before doing that. After a while, Mozilla started automatically bumping the supported version number in add-ons after an automated scan confirmed no problems with the next Firefox release. So it was really easy to “maintain” CacheViewer Continued — I didn’t have to do anything! Then they released Firefox 18.
With Firefox 18 they completely fucked CacheViewer Continued. First, I got the usual email after the automated add-on compatibility review. Whereas they normally consisted of “everything’s cool, we’ve bumped the version compatibility number for you,” this one resulted in a whole bunch of red text. Evidently, the guy that maintains the cache API upon which CacheViewer, and subsequently CacheViewer Continued, relied decided it would be cool to up and delete the god damn API. No warning whatsoever was sent to add-on developers; and there sure as hell wasn’t a deprecation notice for at least one release of Firefox. Nope. It’s just fucking gone!
Oh, and you remember that automated email I got about the problem? Yeah, they went ahead and automatically marked CacheViewer Contiued as compatible with Firefox 18 anyway. So that means everyone who uses CacheViewer Continued, almost 52,000 people, see no reason to hold off upgrading their browser. Let me summarize:
- Lot’s of people love having CacheViewer Continued
- Mozilla breaks the API on which CacheViewer Continued relies without warning
- Mozilla tells people CacheViewer Continued will work anyway
- I’m fucked
Why am I fucked? The original CacheViewer was written under the assumption that the removed API will always exist. It relied on cache entries being able to be read in real-time. Thus, the code was not structured in such a way that it would be easy, or maybe even possible, to restructure into an asychronous model. Therefore, CacheViewer Continued requires a complete rewrite to solve the problem of the missing synchronous API. At the same time, I
- Haven’t used Firefox full-time in at least a year, so the add-on has not been a priority for me
- Have been swamped at work so I can’t devote any time to CacheViewer Continued there (where it does benefit me)
- Was in the middle of shopping for, and buying, a house
Yes, that’s right, I don’t use Firefox any longer. So why do I maintain an add-on for it? Because I know how useful CacheViewer Continued is to the people who do use Firefox (and know they need the add-on). As long as I am able, I cannot in good conscience leave these people hanging like benki did. But it is really fucking hard to so when when Mozilla does all they can to make it not worth my time. Keeping up with the god damn insane release schedule of Firefox was enough to drive me mad before they started automatically bumping the compatibility number. But now they’re telling users the add-on will work after they tell me it won’t? What the fuck? Even so, I have been working on the rewrite for a month.
The rewrite has not been easy. Like I said, I have a lot going on. But when I do get time to work on it, it’s a slow process. The documentation for Mozilla’s APIs is abysmal which results in a lot of digging just to figure out what I need, much less how to use it. The only saving grace is their new API specifically for add-on development. It is decently documented and has made it relatively easy to get up to the point where I am now — something that lists cache entries, shows entry details, and loads cached images for preview from the original URL. But all of the advanced features, namely deleting and saving of entries and loading entries directly from the cache, requires digging through the poorly documented API and figuring out how to use it from within the new API.
I really wish I could provide you with a release date for something at least more usable than the “about:cache” page built into the browser, but I can’t. I don’t want to release something that is going to upset you, the user, even more than you already are. Please understand that I will make it available as soon as I can.
Update 07 February 2013:
I have submitted a very basic version (0.9.1) for review. Hopefully it will be available directly through the browser add-on manager within a day or so. In the meantime, you can download cacheviewer-continued-3e47cf8e944e.xpi from the BitBucket page.