Files

2.4 KiB

EP2 Prompt

Background & Requirements

We are building a privacy focused browser. We already have the basic elements of a browser (a web view, address bar, back and forward buttons) and now need to extend that to add a tracker blocker MVP.

This should:

  • Handle download and storage of the Tracker Radar data.
  • Implement basic tracker blocking (third party only) using WKContentRuleList & TrackerRadarKit. Outline any challenges that come with this approach, and how you would solve them.
  • From Main browser view, user should be able to toggle protection for a given website with a button (which adds/removes that website to/from the allowlist). After that, website should automatically reload with, or without protection.
  • Allow the user to see which websites have tracker blocking disabled, by navigating to a screen that has a simple list of domains coming from the allowlist.

There is more information about tracker blocking in the attached Tracker Blocking Background Information document. Please use the Tracker Radar data: https://github.com/duckduckgo/tracker-radar which is available via https://staticcdn.duckduckgo.com/trackerblocking/v2.1/tds.json (versioning is done with ETags), on iOS you can use the existing TrackerRadarKit: https://github.com/duckduckgo/TrackerRadarKit

Think of this as a MVP to de-risk the project. Ideally what you create is something that can be expanded and collaborated on, so it's worth putting some thought into the architecture of the application, how to handle errors and possible performance impact.

The template below is a guide to what we are looking to understand with a Technical Design document. At DuckDuckGo we work asynchronously, so the goal of our Technical Design is to:

  • Create and de-risk a plan of attack
  • Build buy-in into the plan, backed by reasoning and research

Following the template below, we would like to understand how you plan to break the problem down (including clarifying what is in and out of scope), what the pros, cons and tradeoffs of each approach are, what you'd ultimately recommend and how you plan to test it.

Please note that the Technical Design document should be at a level of detail that allows another engineer with zero context to implement tracker blocking.