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.