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.

So I did what anybody2 would do: I dug into the Mozilla source code, found the C++ component responsible for blocking images, tried to make sense of the sparse documentation explaining how the same thing can be done in JavaScript and eventually succeeded. In July 2003 I sent an email to Henrik Aasted Sørensen, the author of Adblock, with working code to block requests, suggesting that he adopt that approach for the next release. The response came from somebody called rue3 who apparently took over the project in the meantime. Turned out, rue already devised his own solution — one which managed to hide the images before they showed up but still couldn’t block the requests.

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.

Fork it!

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.

Not all of these splashes were good. There was a conflict with NoScript, for example, which would have been avoidable. The root issue here was the fact that the NoScript extension was largely funded by JavaScript-based ads on its homepage7. Given the significant intersection between NoScript and Adblock Plus users, the NoScript author put lots of creativity into preventing his ads from being blocked. EasyList authors asked me how they should deal with it, whether they should make an exception for a fellow extension author. My answer was something along the lines of: “no, making exceptions for a single website would set a bad example.”

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.

Tags:

Comment [15]

  1. Michael · 2017-06-28 11:58 · #

    2005/06, was the year that Internet users regained their Internet. I’m indebted to ABP team for making it happen.

    ABP was the most advanced code written within that period.
    The functionality, block lists, made the original Adblock look like public domain software. Transformed Firefox into privacy protection, adblocking, anti-malvertising browser. Sweet!!

    Thank you for a nice article, “A walk down memory lane”.

    Thank you Mr Danny Cannon, for giving Adblock Plus the best “advertising” money couldn’t buy. :)
  2. tim · 2017-06-28 23:59 · #

    Not forgetting the many new blockers, which were inspired by APB, like uBlock, which grew into uMatrix which can replace NoScript in modern firefoxes.

    Reply from Wladimir Palant:

    I don’t consider myself an expert on uBlock but I think that you got it backwards – IMHO uMatrix was there first.

  3. Michael · 2017-06-29 14:48 · #

    My statements were a tad hash, Michael MacDonald’s Adblock really did save internet users. Props to Micheal MacDonald!

    Correction, Danny Carlton not Danny Cannon. My “Skynet’s” auto correction is drive me crazy.

    ABP browser for IOS needs script blocking, due to websites loading so many scripts. I’ve ask many times in the forums, nothing happens. The Brave browser has now become my daily driver, due to it’s script blocking. Will script blocking be added to Adblock plus browser?

  4. Fanyit · 2017-07-07 09:40 · #

    Whenever it is , Adblock is great, especially for spammers pop-ups ads and other spamers ads. Thank you Adblock.
    however, i think adblock is released on 2009, but original development in 2004. And Adblock Plus is on 2011. Is that real or im wrong ?

    Reply from Wladimir Palant:

    AdBlock for Chrome (originally by Michael Gundlach) was initially released in 2009. The sentence in this blog post is probably too subtle, but Gundlach’s project is completely unrelated to Sørensen’s Adblock (a Firefox extension) which came up around 2002. Yes, people are frequently confused about that.

    Reply from Wladimir Palant:

    Oh, and Adblock Plus was also being developed for Mozilla and Firefox originally, it’s only the Chrome version that came up in 2010.

  5. James Edward Lewis II · 2017-07-07 23:10 · #

    A better correction of the timeline posted by tim about uBlock and uMatrix is that first, Raymond Hill (gorhill) created HTTP Switchboard, and later he added support for ABP-style filters and common ad-blocking hosts files (converting them into ABP-style filter-lists), and as this aspect of HTTP Switchboard became more popular, he made a separate extension that was more filter-list focused but still allowed some of the less-granular resource-blocking of the original HTTP Switchboard, uBlock (originally spelled with the letter mu); then he created uMatrix to have the functionality of HTTP Switchboard without the filter-lists, and although it was the best alternative to NoScript, it was closer to Policeman (another Firefox extension). That is, uMatrix didn’t come from uBlock, but it also wasn’t there first under that name; however, uMatrix is very much like the original HTTP Switchboard, and it even kept the extension icon, while uBlock adopted the familiar stop-sign icon (and then uBlock Origin adopted a shield, to distinguish it from the original, and now defunct, extension)

    The reason we now say “uBlock Origin” is that gorhill transferred the uBlock project to the first person to port the extension to Safari, because he was tired of dealing with the idiocy in the Issues; he later forked it to uBlock Origin and continued working on it, and when development on the original uBlock stalled (Chris Aljoudi was clearly out of his depth, and not even out of high school at the time), most users switched to uBlock Origin. Nothing similar happened with uMatrix, so it’s still known by its original name.

  6. Fanyit · 2017-07-10 08:46 · #

    Thank you for your explanation @Wladimir Palant

  7. Michael · 2017-07-10 15:57 · #

    Tim: Ublock/Ublock Origin was created because many users disliked ABP’s Acceptable Ads model. You can still block ads on ABP, you need to opt-out of the Acceptable ads.

    Reply from Wladimir Palant:

    Actually, both statements are wrong AFAICT. uBlock was created as a response to reports of poor ABP performance, the idea being sacrificing functionality for performance. And ABP will block most ads perfectly fine – you only need to opt out of Acceptable Ads if you really want to block every ad out there, including those that aren’t annoying.

  8. Michael · 2017-07-11 19:36 · #

    Mr Palant.

    Four years ago, security expert Steve Gibson read some quotes from the Ublock creator’s blog. Mr Steve Gibson used those quotes to express his reasons for uninstalling ABP. Grc.com has the full Security Now podcast archives.

    Creator of Ublock may have changed his reasons, due to the Acceptabe Ads policy. Acceptable Ads policy was the driving force for Ublock/Ublock Origins adoption rate.

    Reply from Wladimir Palant:

    This is a blog post about history, not marketing.

  9. nilesh · 2017-07-12 11:59 · #

    please add functionality to hide block amazon and other affilated link in youtub

    Reply from Wladimir Palant:

    It’s probably best if you ask in the forum. I suspect that this functionality already exists but I’m not entirely sure what you are asking about.

  10. Michael · 2017-07-13 12:29 · #

    Wladimir Palant.

    Marketting! I’ve been in trenches defending Adblock Plus against the U trolls. I’ll retracted the earlier comments from Mr Gibson, since his network has become bias against Adblock Plus.

    Mr Palant. I’ve a vested interest in Adblock Plus’s success, I certainly don’t want it to become complacent. Allow competition to make gains at Adblock Plus’s expense. Pretty please! Sugar on top! Improve the IOS Adblock Plus browser. Thank you

    In future, I’ll direct my queries to the Adblock Plus browser forum.

    Reply from Wladimir Palant:

    Sounds like I offended you somehow. As I said, uBlock was created with the promise of better performance – if they now badmouth the Acceptable Ads campaign, then it’s their marketing strategy rather than the historical reasoning. But I certainly didn’t mean to blame you for this misinformation.

  11. Valentin Mars · 2017-07-13 16:40 · #

    I’m just wondering why you’re still blocking by default every ad when you started this post by explaining that the reason you started the project was that “Ads on the web were already a nuisance”, that the problem was sites were abusing. Today that’s not always the case and you’re killing people living thanks to advertising on their websites (such as streamers and youtubers), I find this really sad.

    I think this is your responsability to unactivate the blocking by default !

    Reply from Wladimir Palant:

    You seem to be missing something. Have you heard of the Acceptable Ads program (https://adblockplus.org/acceptable-ads)?

  12. tyler hobbs · 2017-07-16 01:27 · #

    im willing to pay you money not to see ads!

    Reply from Wladimir Palant:

    Thank you, contributions are welcome: https://adblockplus.org/donate. I’m not seeing any ads on YouTube (yes, Acceptable Ads turned on), so you might want to ask for help in our forum, it’s probably some configuration issue.

  13. Michael · 2017-07-17 12:26 · #

    Wladimir Palent

    Your company created the world’s best Adblocker, you could never offend me. I feel embarrassed for quoting an Adblock Plus troll, I’m not happy with myself. Thank you for posting the correct information.

  14. woobs · 2017-07-18 17:41 · #

    Will adblock be supported on Firefox 57? I head they will do a big update.

  15. Ace2three · 2017-07-23 11:25 · #

    Good stuff, really superb. Because we can get more views through your site. So please keep update like this.

(E-mail address is optional and will not be displayed, it is necessary if you want to get a notification about my replies)
Please note that comments not related to this blog post will be removed. For questions on Adblock Plus please use the forums.
  Textile Help