At long last: uBlock Origin on Edge

Nik
4 min readDec 11, 2016

--

Almost five months ago, I had a crazy idea. It was lunchtime at work, and I was taking a break from hours of software engineer to (naturally) think about more software engineering.

The Windows 10 Anniversary Update had recently been released to the world, and with it early support for browser extensions in Edge. Ad Block and Ad Block Plus were available, but a notable absence especially for a privacy-conscious open-source supporter was uBlock Origin.

My insane idea? Port uBlock Origin to Edge. One of those rare ideas that doesn’t sound simpler than it is on first glance.

Nevertheless, I got home later that day, cloned the source code and started hacking. To my surprise I had the extension’s core functionality running in about an hour. That was enough for me to decide that this was viable, and I fired a quick message off to Windows Central to let everyone know the good news.

The news was not unpopular. I sat back a little and enjoyed the buzz I had created, and then set down to finish the job.

At the time, Edge extension submissions to the Windows Store were not open to the public. However a few months later, after periods of great progress interspersed with a stage show or two that siphoned away my free time, Microsoft contacted me about readying uBlock Origin for official release. This was a big step because it meant I could work with them through any quirks or in-progress browser features and find some solutions in areas that I had been stumped.

And finally, I’m so happy to announce that you can download a pre-release preview of uBlock Origin in the Windows Store. Today. Now!

Download uBlock Origin (Preview) for Edge from the Windows Store

I know, it’s so exciting! That’s why I put the link here instead of at the bottom of the post. What are you waiting for? Off you go! I’ll still be here when you get back.

Ready? Great. Let’s take a look at what you just installed.

Isn’t it beautiful?

Everybody loves previews

This port is almost finished, but not quite. There are a few issues I know about that have fixes on the way. There are likely to be more that I’m unaware of because they fall outside my day-to-day use.

But for the most part it’s in very good shape. I’m very thankful to everyone from the Edge team in Microsoft who have supported me along the way, and to the developers who have raised bug reports and contributed code on GitHub so far. Also to Raymond for his support and for setting up such a sensible code structure before a port to Edge was even on the cards.

The lion’s share of the functional code is in the core, shared across all browsers (including the Edge fork). Sitting between that code and the browser is an abstraction layer that essentially hides each browsers quirks and differences and translates each unique browser API to something the core code can understand.

I’ve had a few people express concerns that the Edge port is not “official”, and that they’d prefer to have the “real” uBlock Origin available on Edge. Well as you can see above, this is the real deal. Roughly 95% of the code (the parts that control the blocking and filtering logic and everything you see as a user) is the exact same code that runs on Chrome and Firefox. The part that’s different is the layer that interfaces directly with the browser. Even then it’s heavily based on Chrome’s version because the Edge team have done a great job of matching compatibility with Chrome’s APIs.

Now we need your help to find the things I’ve missed. Download the extension, give it a go, push it to the edge (pun intended) and let me know via Windows 10’s Feedback Hub if anything breaks.

You can upvote existing issues and report new ones directly in Feedback Hub. Use the category Apps and Games, and the subcategory uBlock Origin.

And if you’re a developer who wants to help out, I welcome ideas and pull requests at the fork’s repo. I’ll handle the general releases (merging the latest feature updates from the core into the fork) but any and all help with reporting, triage, fixes and automated testing would be much appreciated.

For now, enjoy the extension and I look forward to hearing your feedback!

--

--

Nik

Professional software engineer by day, indie software engineer and actor by night.