DOCS · PROJECT

Contributing & development

Find the code, build and test each piece, and see what's most useful to work on.

Just want to use Dodge? See install. New to video fingerprinting? Start with learn.

Where the code is

The GitHub organization dodge-video holds the code for the browser extension and this website. The module's source lives at src/dodge/ in the dash.js repository. Integration is currently being reviewed in pull request #5021.

Repository map

Repo What's there
dash.js module
https://github.com/Dash-Industry-Forum/dash.js (module source: src/dodge/)
The Dodge module itself, at src/dodge/, plus unit tests at test/unit/test/dodge/ and functional tests at test/functional/test/dodge/.
Browser extension
https://github.com/dodge-video/dodge-extension
The extension (safe player, in-page swap, verifier, lockdown), the defense generator library (extension/lib/generator/), and the repo-template/ starting point for defense repositories.
This website
https://github.com/dodge-video/dodge-video.github.io
Documentation, install/download pages, and the standalone tools (currently just the web generator).

Build & test

dash.js module

npm install
npm run build   # dist/, including the module as its own bundle, dash.dodge.min.js
npm test        # unit tests (Karma + Mocha + Chai), including test/unit/test/dodge/

The module is included in the regular dash.js build; there is nothing extra to configure. The unit tests at test/unit/test/dodge/ run as part of dash.js's npm test. REQUIREMENTS.md in the same directory maps each requirement to the specific test cases that verify it.

The functional tests at test/functional/test/dodge/ play defended streams end to end in a real browser: defense activation, cycle-by-cycle traffic, strict mode, seeking, and more. Build first, then run them with the dodge streams file:

npx karma start test/functional/config/karma.functional.conf.cjs --configfile=local --streamsfile=dodge

The local configuration launches Chrome, Firefox, and Safari; edit test/functional/config/test-configurations/local.json to change this.

Browser extension

Coming soon.

This website

npm run dev     # local dev server
npm run check   # production build + link check

Astro 6, static output. npm run check builds the site and then crawls the output for broken internal links. Run it before committing any change that touches routes or hrefs.

What's most useful right now

  • Real-world deployment feedback. If you operate a streaming service and you're considering a defense, get in touch; we're willing to help and want to learn what breaks.
  • Defense development and testing. The framework provides the building blocks; the defenses built with them are what matters in practice. Defenses against specific attacker models are the most valuable contribution. See defense development for how defenses are written, generated, and distributed.

Discussion and feedback

For anything related to the dash.js module and its development in particular, use the dash.js Google Group. For issues and pull requests related to the other Dodge tools, see the appropriate GitHub repository.

You can contact us directly at contact@dodge.video.

Licensing

The dash.js module is licensed under BSD-3-Clause by the DASH Industry Forum and may be used for commercial purposes. The other Dodge tools are currently licensed under PolyForm Noncommercial 1.0.0, which forbids commercial use of derivative works. Contributors agree to the license terms when submitting.

If you're a content provider who wants to use Dodge tools (beyond the dash.js module) in a commercial deployment, get in touch for permission.