Thank you for your interest in contributing to the Djowda Interconnected Food Protocol.
DIFP is a provisional open specification — v0.1 was published specifically to invite review, critique, and real-world implementation feedback before anything is locked down. Every contribution makes the protocol more useful to the people who need it most.
The most valuable contribution right now is building a DIFP-conformant node and telling us where the spec is unclear, missing, or wrong.
- Port
geoToCellNumberto your language and validate against the test vectors - Stand up a presence store and expose the
/.well-known/difp/endpoints - Build the trade engine and run through the status lifecycle
When you have something working — even partially — open an Implementation Report. We want to know:
- What you built, in what language/stack
- What was clear in the spec
- What was ambiguous or missing
- Any decisions you had to make that the spec didn't cover
Read SPEC.md or the web version and open a Spec Feedback issue for anything that is:
- Ambiguous or open to multiple interpretations
- Internally inconsistent
- Missing a case that needs to be covered
- Unnecessarily restrictive for legitimate use cases
- In conflict with an existing standard (GS1, W3C DID, RFC, etc.)
If you port the grid algorithm to a new language, please contribute your test suite to test-vectors/. A pull request adding test-vectors/grid_{language}.json with your validation cases is always welcome.
If you represent an NGO, cooperative, government food agency, or research institution with a food coordination problem this protocol should address — open an issue with the use-case label. These shape the v0.2 roadmap directly.
- Changes to the
geoToCellNumberconstants (CELL_SIZE_METERS, NUM_COLUMNS, NUM_ROWS). These are fixed by design — changing them breaks compatibility with every other implementation. If you have a strong argument for why they should change, open a discussion issue taggedbreaking-changeand make the case. - New canonical component type codes. The 10 types in Section 2 are the canonical set. Custom types are supported via the extension mechanism — you don't need a PR for that.
- Transport-specific implementation details. The spec is intentionally transport-agnostic. Implementation guides for specific backends (Firebase, PostgreSQL, DynamoDB) belong in community wikis or separate repos, not the core spec.
For spec changes:
- Open an issue first and discuss before writing a PR — spec changes affect all implementations
- Reference the section number(s) you are modifying
- Explain the problem the change solves and any tradeoffs
- If your change affects the
geoToCellNumberalgorithm or the TradeMessage schema, it requires explicit sign-off from the Djowda Platform Team before merge
For everything else (README fixes, test vectors, typos, CONTRIBUTING updates):
- Fork the repo
- Create a branch:
git checkout -b fix/description-of-change - Make your changes
- Open a PR with a clear description
This project follows the Contributor Covenant v2.1.
The short version: be direct, be kind, assume good faith. Critique the spec, not the person. We are all trying to make food coordination less broken.
Open a Discussion or email sales@djowda.com.