The semi-authoritative, semi-complete history of the Adblock Plus project · 2017-06-27 18:38 by Wladimir Palant
Which one was first, Adblock or Adblock Plus? If Adblock Plus was created in 2006, how come there was Adblock Plus in 2005 already? The history of the Adblock Plus project isn’t straightforward and I already tried to explain it once. The article titled A not so short history of Adblock would have made a good blog article, except… it got published too early, before the Adblock Plus blog was created. And so it ended up on the website under “Documentation” where it was eventually removed because it wasn’t a good match. Here comes another attempt, looking back at more than ten years of project history.
Contributing to Adblock
For me, this story starts in 2003. Ads on the web were already a nuisance but they were largely image-based. Luckily, the Mozilla browser1 had a cure: you could selectively block images from specific websites, a feature that still exists in modern-day Firefox albeit quite hidden. And then I discovered Adblock, at version 0.3 at this time, an extension that made blocking ads even more convenient — you no longer had to block complete websites, but could also use patterns that would be either more specific (block individual resources of a website) or more generic (work across different websites). I soon noticed the disadvantage however: unlike the built-in image blocker, Adblock wouldn’t actually block the requests; rather, it would merely hide the resulting images after they already appeared.
I pointed out a number of issues with this approach which I considered too complex and error-prone. The back and forth in our conversation led to some Adblock improvements but nothing substantial. After a month I gave up. I could use a simplified version of Adblock on my own computer which solved the problem for me at least. Later I learned that my blocking approach made it into Adblock after all, albeit as an alternative to merely hiding — Adblock 0.5 gave users the choice between “Hiding” and “Removing” ads4. All in all, my first ever experience contributing to a browser extension wasn’t quite optimal.
While my private fork just kept working, the complexity of the official Adblock was the source of continuous problems. The Firefox 1.0 release was a huge success, but Adblock wouldn’t install and it took months for this issue to be fixed. Firefox 1.5 release? Even worse. Adblock caused serious bugs, and Mozilla was struggling to reach anybody who could fix the issue. This was a problem, with Adblock being one of the most popular extensions and people refusing to install Firefox updates because of it. Being dragged into this discussion, I didn’t keep my opinion a secret5: Adblock had significant issues and needed a more capable maintainer. And — no, I didn’t actually mean myself, I wasn’t really keen on the job.
What followed was again a discussion with rue where he presented me his ideas for Adblock 0.6, which was supposed to make everything better. I already suspected that this upcoming release was overly ambitious and would never be finished, so I convinced rue to allow me to overhaul Adblock 0.5 while he was still working on the next release. This became a full-scale rewrite, which was done mid-December 2005; and then rue decided that it didn’t meet his standards.
So I was again stuck with a codebase that I considered superior to Adblock but that the project maintainer wouldn’t accept. This time I didn’t want to just give it up; instead, I decided to publish it under a different name. There was already an existing Adblock fork called AdBlock Plus6 and I asked Michael McDonald and Mr. Bene, its creators, whether they would give up the name — I didn’t want to cause more confusion for the users by introducing yet another alternative. They agreed, and so my Adblock variant got published as Adblock Plus 0.6.
A bumpy start
Eventually all the preparations were finished, and I released Adblock Plus 0.6 on January 17, 2006. I announced it in the existing Adblock Plus forum, and the backlash was swift. The users felt that I was hijacking the Adblock Plus project name, and didn’t believe that I had the permission by previous project owners. They complained about bugs. And they complained about missing features.
There clearly were bugs, with this release being practically untested by end users. And features were missing as well, because the development goal was always feature parity with Adblock, not with AdBlock Plus. You have to consider that Adblock was very basic, having an English-only user interface and no support for either filter subscriptions or element hiding. AdBlock Plus 0.5 was quite a bit further already, and so Adblock Plus 0.6 felt like a step backwards. More releases followed in quick succession, first fixing bugs and inconsistencies (Adblock Plus 0.6.0.1 to 0.6.0.4), then adding missing features: translations, filter subscriptions and minimal element hiding support were all added in Adblock Plus 0.6.1 (released on February 6).
The tide turned, and the community now loved the new extension. They brought new challenges with them though: large filter lists were being compiled that anybody could use, yet neither Adblock nor Adblock Plus were meant to deal with a large number of filters, so delays caused by them became noticeable. I looked into better approaches, and as of Adblock Plus 0.7 the processing time no longer depended on the number of filters you had. After some more research on filter processing performance, Adblock Plus 0.7.2 could ship with an even better algorithm.
The good, the bad and the ugly
This effort paid off. Already in November 2006 Adblock Plus became the most popular extension on Addons.Mozilla.Org. And what about Adblock? The last release ever came out in January 2006 with some minor improvements. It stayed in the Top 10 most popular extensions for a while, losing popularity only gradually. In May 2006 I identified a security issue in Adblock, but rue wasn’t available to address it and so other people had to jump in with an unauthorized change. Eventually, Mozilla decided that removing the extension from their website was better than keeping it around in its unmaintained state.
The growing popularity of Adblock Plus presented a challenge for the filter list projects which were all run by volunteers: as the download numbers increased, they often found their free hosting canceled. Many of them found refuge in Google Code, but for the more popular ones this option didn’t work either. This is why I offered to host the EasyList project, the most popular filter list. And in 2008 I found myself in the same situation; my hosting provider disabled adblockplus.org without further notice. EasyList was already producing 120 GB of traffic per month at that time, and I was kindly asked to look for another hosting. Keeping up with EasyList’s bandwidth requirements has been a constant struggle ever since then.
In the summer of 2007 a guy named Danny Carlton decided to start a campaign against Firefox, blaming Mozilla for the fact that it allowed Adblock Plus to run on Firefox. His suggestion to website owners? Why, ban all Firefox users of course! If the guy would have been working on Adblock Plus PR, he couldn’t have come up with a better campaign. There have been lots of great responses, the New York Times picked up the story, and after that seemingly every single news publication on the planet. This was the first time we made a big splash.
A year later, the cat-and-mouse-game between EasyList and NoScript escalated to the point where drastic measures were taken, something that I wasn’t aware of. When I learned that the NoScript extension added obfuscated code to sabotage Adblock Plus, I was extremely upset and wanted the whole world to know about it. This blog post went viral and caused quite significant damage. The reputation of the NoScript project suffered considerably. And of course, once the media picked up on it, the whole affair was presented as an “extension war.” The fact that EasyList authors were merely doing their job and neither EasyList nor Adblock Plus were fighting NoScript specifically got lost in many discussions.
Transitioning towards a company-backed open source project
The project was doing well, why change anything? Actually, there were several reasons. Most importantly, Adblock Plus quickly reached a size where the spare time of a single maintainer just wasn’t enough. For example, after reaching a milestone with Adblock Plus 0.7.5 in April 2007 the development largely stagnated for a while. I only managed to bring out one major release per year. This was partly because I had less time to spend on the project, but also because of all the time spent managing the community, sifting through bug reports (most of which turned out bogus or Firefox bugs at this point), working on the website, etc. Community contributions were extremely helpful, but these didn’t compensate the growth of the user base.
At some point I also became concerned about where the project was heading. It was easy to ignore the consequences of ad blocking as long as the extension was mostly used by experienced users who would have ignored ads anyway. These users also had the necessary expertise to disable Adblock Plus whenever they wanted to support a website. However, Adblock Plus was becoming a mainstream product. There were instructions like “after you install Firefox go and download Adblock Plus” being published everywhere, and some people were even installing Adblock Plus on computers of all their relatives. Depending on their audience, some websites were noticing a considerable loss of revenue due to ad blocking, and I could see where that journey went: if nothing changes, Adblock Plus would eventually become prevalent enough to kill off smaller websites, because these would be unable to compensate the lost revenue. As to larger websites, these would eventually declare a war on Adblock Plus, trying to circumvent ad blocking but also attempting to shut down the project by legal means. And they would succeed, because the project was in no position to survive a lawsuit, regardless of whether the claims were justified.
So I thought about ways to establish a middle ground between users and publishers, one that didn’t rely on each user’s expertise and didn’t require users to take action on their own. There had been some ideas floating around in the community for a while, most importantly categorizing ads and only blocking certain categories or implementing microdonations to compensate websites for the blocked ads. None of these could realistically be implemented and maintained with my limited resources. Instead, I thought of a different solution that I published as a proposal for fair ad blocking in May 2009. There were a number of very emotional responses — turns out, some people always react like this when limiting ad blocking is being discussed, something I had to get used to. Still, I received quite a few constructive comments as well. Unfortunately, one of these made it very clear that my proposal wouldn’t work to incentivize good advertising. I was stuck, out of ideas that I could pull off on my own.
This was the state of the project when Tim Schumacher emailed me in November 2009 and proposed meeting to discuss some ideas for the future of the project. At this point I already had some experience with people having “ideas” for Adblock Plus, so I asked in my reply: “does it involve replacing blocked ads with other ads?” That wasn’t it; Tim was genuinely interested in our success. Turned out, Tim lived not too far away from me, and we met a number of times, aligning our goals and tossing ideas around.
By August 2010 the common goals were formalized, most importantly increasing the reach of the project and adding ways of allowing less annoying types of advertisements, the latter eventually turned into our Acceptable Ads program. Tim would sponsor the project, which allowed me to work on Adblock Plus full-time. He also brought in Till Faida, who could look into the non-coding topics. This arrangement stayed for a year until we founded eyeo as a more permanent basis for the project in August 2011, a big and scary step.
We have a company. Now what?
Of course, creating a company didn’t magically solve all the problems. It was only Till and me, with Tim helping us out a bit occasionally. On the one hand, I could spend my whole work day developing, but I also had to take care of projects like Adblock Plus for Chrome now. Previously, I chose to ignore Chrome, given that the inferior capabilities of its extension platform didn’t allow creating a good product. Ignoring was no longer an option however, not if we cared about the reach of Adblock Plus. Others didn’t obsess over quality and recognized Chrome’s potential sooner, so that on Chrome we had to deal with an established competitor confusingly named “AdBlock” despite not being related to either our project or the original Adblock extension.
Still, in December 2011 we were ready to start testing Acceptable Ads in Adblock Plus. Communication-wise, this launch was a moderate disaster, with both users and publishers having concerns that we didn’t anticipate and didn’t manage to address in a timely manner. For example, we received much criticism for having a very biased selection with exactly three entries in our initial Acceptable Ads list. As a matter of fact, publishers were quite skeptical about Acceptable Ads at first, and without Tim’s help we unlikely would have found anybody at all willing to give it a try back then. Later we started receiving applications, but we simply didn’t have the resources to process all of them until much later. Most application didn’t comply with our inclusion criteria, and we had to learn working with the publishers in order to resolve the issues. Speaking of which, our inclusion criteria were formulated in a rather suboptimal way, collecting the necessary data and producing a better description of the Acceptable Ads criteria took four years.
While we hired another developer in December 2011, he ended up mostly working on Adblock Plus for Android, yet another new product. And that was it: hiring good people is a rather time consuming task. Our next two developers didn’t start before September 2012, and even after that I wasn’t able to do anything but mentor them for a while. So it wasn’t before 2013 that Adblock Plus development started to pick up pace again. And even then, keeping the high quality was considerably more complicated than when it was just me and a single product. Did the larger team allow us to get more things done? Yes, it certainly did. However, even today it sometimes feels like the scope of the project is growing faster than our team does, and we constantly have to jump from one urgent task to another.
This growth overwhelmed me personally8. As the CTO of eyeo, I found myself confronted with lots of organizational tasks. For a while, sharing responsibility with my colleague Felix Dahlke helped, but then I felt burnt out, wanting to do some “real” work for a change. So Felix became our new CTO, whereas I moved back to being “just” a developer.
As to the positive effects of the company growth, just to mention one example: we finally have the resources necessary to pick up the other community suggestion mentioned above. The idea of creating a virtual tipping jar has been expressed a number of times, but implementing it correctly is very complicated. It seems that this one is on the right track now.
1 Many people probably don’t know any more but the browser was actually called “Mozilla.” And so was the mail client. In fact, they were the same application, the Mozilla Suite. And their browser-only contender was called Phoenix, this one became Firefox eventually.
2 For some definitions of “anybody.” Given that my experience both using Mozilla and developing extensions for it only reached a few months back — maybe a rather narrow definition of “anybody.”
3 It’s just “rue.” I assume that he was very keen on keeping his identify secret for some reason.
4 “Remove ads” was the choice that would block ads; with the other option Adblock would see the request but let it pass through and hide after the fact. Obvious, isn’t it?
5 Yes, I rarely do.
6 Did you notice the capital “B”? The silent war over whether the “B” should be capitalized has been raging for years. Originally, the extension was called “AdBlock,” still visible in the screenshot on the Adblock project homepage. Later rue decided that it should be a small “b” but the AdBlock Plus fork didn’t follow suit. When I created my own fork I simply took over Adblock’s spelling without thinking too much about it. And a few years later the AdBlock for Chrome project again made this even more confusing.
7 You see a conflict of interest here? There really was none, it was a pure coincidence that NoScript happened to have preconfigured exceptions for these ads.
8 You notice it by the fact that this part of the blog post is much lighter on details, I simply don’t have a good overview of everything that was happening.