Closes the physical↔digital loop the labels opened: the QR on a printed envelope (tane://seed, already encoded by seed_label_codec) can now be scanned from the inventory bar. A known label opens its variety; an unknown one asks before adding anything, then creates the variety (species linked by exact scientific name when bundled) with a lot carrying the label's year and origin. Scanner is pure ZXing (zxing_barcode_scanner, MIT) — no ML Kit, no Play Services, F-Droid-safe, the stack Ğ1nkgo ships. Mobile-only; other platforms don't show the button (OCR precedent). The post-scan flow is a plain function (handleScannedPayload) so it's widget-tested without a camera.
20 KiB
Tane — NGI Fediversity (NLnet) application draft
Working document, NOT tracked in git. Ready-to-submit draft for the NLnet NGI Fediversity call (nlnet.nl/propose). Deadline 1 Aug 2026, 12:00 CEST (confirmed on the site). Derived from
VISION.md,PLAN.md,docs/design/*anddocs/notes/modelos-financiacion.md. Written in English (the proposal must be in English; VISION.md is the Spanish source). Updated 2026-07-17 to reflect the shipped state: app live on Google Play (v0.1.1), site at tane.comunes.org, most of the social layer already built. The ask now funds the remaining federated-infrastructure work, not a from-scratch build.
Part A — Strategy & framing (for us, NOT for the form)
The new, stronger story: we shipped, now we complete the federated infrastructure
Since the first draft, the project advanced a lot. This is now a track-record application, not a promise:
- Live on Google Play (v0.1.1,
org.comunes.tane), GMS-free build ready for F-Droid. - Public site at tane.comunes.org, translated via Weblate (translate.comunes.org).
- Block 1 (inventory) shipped, and most of Block 2 (the social layer) already shipped: offers
(NIP-99), private metadata-hiding messaging (NIP-17), a Duniter-style egocentric web of trust
(kind 30777), ratings (kind 30778), profiles + multi-account identity, Plantaré pledges, saved-search
alerts. All transports live in the reusable
commons_coreengine, with ~131 test files and CI.
NLnet weighs technical feasibility (30%) and value for money (30%): a shipped, tested, in-store app de-risks both. Lead with that.
Fit with Fediversity — now genuine, not a stretch
The Fediversity fund leans to the hosting stack / self-hosting side. The work that remains is exactly that side, which is why the fit is now real:
- Self-hostable community relay —
relay.comunes.orgis already deployed and running. The remaining Fediversity-shaped work is turning it into a reproducible, documented recipe any seed network can self-host, plus moderation tooling (NIP-56 reports, key-blocking) and operational hardening — so the network is owned by communities, not a single instance. - Multi-device sync — the encrypted
SyncTransportlanded (NIP-78, relay sees only ciphertext); the app-levelSyncServicethat replicates your inventory across your own devices is pending. This is data portability + self-custody, a Fediversity theme. - Interoperability & portability — open, versioned export/import already exists; add opt-in Darwin Core / GBIF export so agrobiodiversity data can flow to open biodiversity atlases.
commons_coreas reusable federated infrastructure — Tane is a seed app wrapped around a generic Nostr + CRDT + web-of-trust + messaging engine; seeds are the first app, others can follow.
Framing in one line: bringing federation beyond social media, into the physical commons — and we already have a working app to prove it.
Plan B — don't bet everything on this call
Honest odds: the fit is now decent (the remaining work IS hosting/portability-shaped) but Fediversity reviewers may still read "mobile app on Nostr" as adjacent to their ActivityPub/NixOS hosting focus. Mitigation, at near-zero extra cost:
- Submit to Fediversity anyway (short form, strong track record, real infra milestones) — worst case is a rejection with feedback.
- Reuse this same dossier for NGI Zero Commons / Core when regular calls reopen after summer 2026 —
Tane as commons infrastructure is arguably a better fit there (
commons_core, open protocols, community-run relays). Keep this file as the master; only the fund-specific framing paragraph changes. - Meanwhile, keep the Goteo matchfunding (Red de Semillas) track as the community-round complement.
NLnet requirements checklist
- FOSS licence — code AGPL-3.0; docs/assets CC-BY-SA.
- Open standards — Nostr NIPs (99/17/44/78/56), Duniter-style WoT, open data formats, Darwin Core.
- European dimension — EC-LLD (23 European seed networks), Red de Semillas, EU seed-law (PRM) context.
- Milestone-based, verifiable deliverables — see Part C.
- Sustainability after funding — local-first, open data/code, cheap community relays; never per-transaction fees.
- Generative-AI disclosure — declared honestly and minimally (see §13 + the log template below).
- Privacy statement — tick the acknowledgement of NLnet's privacy statement on the form.
The AI concern (read before submitting)
NLnet has a formal Generative AI policy (nlnet.nl/foundation/policies/generativeAI/). It does not forbid AI, but imposes real obligations, and reviewers value substance over marketing. Three things, don't conflate them:
- Prompt provenance log (required): if GenAI is used in the application process, you must keep a log of prompts/outputs. → the Appendix table below.
- Public disclosure (required for substantive use): any GenAI use that materially affects the output must be disclosed so evaluators understand how the proposal was produced. → §13.
- Purely-AI outcomes are NOT payable, and must be FLOSS-clean: "Outcomes purely generated by AI are not allowed to be submitted as work eligible for payment." → this hits the milestones (M1–M5), not just the application: the delivered code/docs must be human-authored (AI-assisted is fine; you must also verify outputs don't reproduce copyrighted/licence-incompatible material). Non-compliance can mean rejection of the proposal or termination of a running grant.
Plus the softer risk: an application that reads as AI slop scores worse. Fix for all of it = make the text genuinely yours.
Action for vjrj — rewrite §3, §4, §5 in your own voice (that's what a reviewer reads first; the rest is technical scaffolding). Add first-person specifics only you can write: Kokopelli, the 2009 paper Plantare you originated, why the whole seed sector refuses per-transaction fees, your Ğ1nkgo/Duniter background, and the fact the app is already in people's hands.
De-"slop" pass: cut the tells — em-dashes everywhere, rule-of-three lists, heavy bold, "not X but Y" constructions, brochure cadence. Rougher, more technical, more personal = better here.
Process notes
- Submit several days early — "deadlines are hard". Draft offline (this file), paste at the end.
- Plain text is preferred; keep formatting light. Attachments ≤ 50 MB total.
- You may submit multiple independent proposals in one round; do not double-submit via FundingBox + NLnet.
Part B — Form answers (the actual draft, English)
Current status (facts to weave in — all verifiable)
- Live: Google Play v0.1.1 (
org.comunes.tane); site tane.comunes.org; community Nostr relay relay.comunes.org running; source public (AGPL-3.0). - F-Droid: GMS-free build + recipe ready (awaiting registry upload).
- Languages: 7 (en, es, pt, fr, ast, de, ja); RTL + CJK fonts bundled; translated on Weblate.
- Engine:
commons_core(pure Dart) — identity derivation, HLC, CRDT, geohash, all Nostr transports. - Tests/CI: ~131 test files; Forgejo Actions runs analyze + test on both packages.
1. Contact / Organisation / Country
- Applicant organisation: Comunes (registered non-profit association), Spain / EU.
- Project lead: Vicente J. Ruiz Jurado (vjrj) — technical lead.
- Package id / namespace:
org.comunes.tane. - Contact: vjrj@comunes.org.
- Project page: https://tane.comunes.org · source repository public (AGPL-3.0) · live on Google Play.
2. Project name
Tane — self-hostable, local-first infrastructure for seed-sharing communities. (種, "seed"; from tanemaki, "to sow".)
3. Abstract (a few sentences)
✍️ vjrj: rewrite in your own voice. Scaffolding below — keep the meaning, drop the polished cadence.
Tane lets communities run their own seed-sharing network end to end: a local-first mobile app, a
self-hostable relay, and identity and data the user fully owns and can take anywhere — no account, no
central server, no company in the middle. The app is already live on Google Play in seven languages;
offers, private messaging, reputation and encrypted device sync ride on open federated protocols
(Nostr NIPs) and a Duniter-style web of trust, implemented in a reusable engine (commons_core) where
seeds are only the first application. What remains — and what this grant funds — is the hosting and
portability side: a reproducible relay recipe any collective can self-host (our reference instance
already runs), completion of encrypted multi-device sync, open-standards data portability
(Darwin Core / GBIF export), and production hardening — so a seed network can operate the whole stack
without depending on us, or on anyone.
4. Can you explain the whole project and its expected outcome?
✍️ vjrj: rewrite in your own voice. Add first-person specifics (Kokopelli, the 2009 paper Plantare, Ğ1nkgo). Scaffolding below.
A handful of corporations control most of the world's seed supply, and traditional varieties — and the knowledge to grow them — are being lost. Sharing seeds has even become legally suspect (e.g. Kokopelli fined in France). Seed networks resist with notebooks and spreadsheets; there was no friendly, free, decentralised tool for them.
Tane is built in layers, each useful alone, and most are already shipped:
- Inventory (local-first) — shipped. Encrypted seed bank on your phone (SQLite + SQLCipher), fully offline, no account; backup + printed recovery; 7 languages.
- Offer status — shipped. Per item: private / gift / exchange / sale.
- Local sharing (federated) — shipped. Offers as signed Nostr events (NIP-99), discovered by coarse geohash (~2.4 km, never your address); private DMs (NIP-17); ratings; Plantaré pledges; saved-search alerts. No central operator can censor, sell data, or charge a fee.
- Trust — shipped. Egocentric Duniter-style web of trust (you vouch for people you've met); spam from unknown keys is filtered with no central moderator.
A de-risking spike proved the whole social happy-path on vetted pure-Dart libraries, and it is now production code in people's hands. What this grant funds is the hosting and portability layer that makes the network genuinely community-owned (see Part C): turning our running relay into a reproducible, self-hostable recipe with moderation tooling; completing encrypted multi-device sync (the transport already landed; the relay only ever sees ciphertext); open-standards data portability (opt-in Darwin Core / GBIF export toward public biodiversity atlases); plus trust cold-start for real seed fairs, optional Ğ1 price tags, and messaging/offers hardening.
Expected outcome: any seed collective in Europe can self-host the entire stack from a documented
recipe — relay, moderation, app, data — with identity and data fully portable and zero dependency on
Comunes or any single operator. And because the hard parts live in the generic commons_core engine,
the same infrastructure is reusable for other physical-commons networks (tool libraries are the next
candidate).
5. Compare your own project with existing or historical efforts
✍️ vjrj: rewrite in your own voice. You know this sector first-hand — say why it refuses per-transaction fees, and tell the Plantare story as its originator. Scaffolding below.
- Seed Savers Exchange, Graines de Troc, Arche Noah, Red de Semillas — valuable, but each is a centralised web platform: single operator, an account, a server that can go dark, no local-first offline app, not federated, not self-hostable.
- Garden/inventory apps — mostly proprietary and extractive; none do decentralised sharing or trust.
- Marketplaces (Wallapop-style) — a central intermediary that takes a commission and can censor. Tellingly, no seed-exchange platform anywhere charges per-transaction fees — the whole sector uses gift/exchange/membership. We follow that, by design.
- Historical precedent — the Plantare (2009). A paper "seed promissory note" already solved decentralised trust and reciprocity socially (a bearer instrument, both parties hold a copy, the ledger distributed across drawers). We digitise it without a central register.
Why it's needed / why existing solutions don't answer it: none combines local-first, federation over open standards, self-hostability, identity/data portability, and a spam-resistant web of trust — while staying free and non-extractive. Tane already does, in production; the engine is reusable for other physical-commons networks.
6. Significant technical challenges (the remaining work)
- Self-hostable relay + moderation —
relay.comunes.orgalready runs; the challenge is making it a reproducible recipe others can run, with NIP-56 report handling and key-blocking, so moderation is "with a response" but not centralised. - Multi-device sync at the app level — wire
SyncServiceonto the landed encryptedSyncTransport: serialise inventory, push on mutation, idempotent LWW import on receipt, stable per-install device id, rare-conflict UI. Relay only ever sees ciphertext. - Interoperability / portability — opt-in Darwin Core / GBIF export of agrobiodiversity (blurred location, collective-bank level, one-way) — exactly the data those atlases lack.
- Messaging/offers hardening — NIP-44 interop-exact test vectors, offline DM delivery/retry, offer expiry & revocation on already-replicated relays.
- Trust cold-start — bootstrap the web of trust at real fairs / Ğ1 seed groups (QR, no network).
- Portable derived identity — one root seed, one-way HKDF secp256k1 subkey for Nostr, one printable QR backs up everything (already implemented; polish + docs).
7. Project ecosystem & stakeholder engagement
- Seed networks: Red de Semillas (Spain), EC-LLD / Let's Liberate Diversity (23 European seed networks) for European reach; Arche Noah as a policy ally.
- Free-money communities (Ğ1/Duniter): first pilots — existing identity, existing web of trust, aligned values.
- Seed fairs and markets: where trust bootstraps face to face.
- Translators & contributors: already active via Weblate; code and docs public.
8. Relevant prior experience & track record
- Shipped, in production: Tane is live on Google Play (v0.1.1), GMS-free build ready for F-Droid, site at tane.comunes.org, 7 languages via Weblate, RTL+CJK support, a full legal package, automated store publishing (Fastlane) and CI (Forgejo Actions, ~131 test files). Block 1 + most of Block 2 done.
- vjrj authored Ğ1nkgo, a Duniter/Ğ1 wallet in Flutter/Dart; Tane reuses its cryptographic primitives (secp256k1, HKDF, Duniter identity) — no reinvention.
- vjrj originated the Plantare concept (BAH-Semillero, 2009, CC-BY-SA) and wrote "Las semillas del conocimiento libre" (2005) — a decade of domain authority in seed commons.
- Comunes — registered association, stable legal counterpart for milestone accountability.
9. Requested amount
€32,000.
10. Budget usage / task breakdown
See Part C. Milestone-based; each milestone is an independent, verifiable deliverable with a CI-gated test suite where applicable. NLnet pays on verification of each milestone.
11. Other funding sources (past and present)
- Built so far with volunteer work; no prior grant funding; no overlapping funding for this scope.
- Complementary community funding (e.g. Goteo matchfunding with Red de Semillas) is a future sustainability avenue, not a duplicate of this request.
12. Sustainability after the grant
- Local-first: useful even with no servers and no maintainer — utility does not expire.
- Open code & data (AGPL-3.0, open export): anyone can continue, fork, or self-host the relay.
- Cheap, community-run relays (collectives / Comunes), plus opportunistic app-as-relay and physical-proximity exchange at fairs.
- Non-extractive revenue only, never on the seed: voluntary association membership (Seed Savers model), optional managed services for institutional seed banks. No per-transaction commission — legally prudent (EU PRM in trilogue) and coherent with the commons.
13. Compliance & disclosure
-
Licence: AGPL-3.0 (code); CC-BY-SA (docs/assets). Compatible with the reused Duniter/Ğ1nkgo stack.
-
Privacy statement: acknowledged.
-
Generative-AI disclosure (honest & minimal — paste into the form):
An AI assistant was used only as a drafting aid for this application text: to translate and structure an initial English outline from our pre-existing Spanish design documents (VISION.md, PLAN.md, docs/design/*), which predate and are independent of this application. All technical claims, architecture, milestones and budget are the applicant's own; the project lead rewrote and verified the text, and no AI output was submitted unedited. A prompt provenance log is available on request. The funded deliverables (M1–M5) will be human-authored (AI-assisted at most), released under AGPL-3.0, with no purely-AI-generated outcomes submitted for payment.
Adjust to match what you actually did before sending. If you rewrite §3–§5 yourself (recommended), this statement stays true and strong.
Part C — Milestones & budget (€32,000)
Milestones reflect the real remaining work (Block 1 + most of Block 2 are already shipped). They are ordered by theme: M1–M3 are the federated-hosting core (self-hosting, sync, portability); M4–M5 harden and bootstrap it. Each is an independent, verifiable deliverable; NLnet pays on verification.
| # | Milestone | Verifiable deliverable | € |
|---|---|---|---|
| M1 | Self-hostable relay recipe + moderation | relay.comunes.org already runs; deliver a reproducible, documented recipe any seed network can self-host, plus NIP-56 report handling + key-blocking moderation tooling and an operator manual |
6,000 |
| M2 | Multi-device sync (app SyncService) |
Inventory replication across a user's own devices over the landed encrypted SyncTransport (NIP-78): serialise + push on mutation, idempotent LWW import, stable per-install device id, conflict UI; tests (relay sees only ciphertext) |
8,000 |
| M3 | Interoperability & data portability | Opt-in Darwin Core / GBIF export of agrobiodiversity (blurred location, collective-bank level, one-way); polished open export/import + identity portability docs | 5,000 |
| M4 | Messaging & offers hardening | NIP-44 interop-exact test vectors, offline DM delivery/retry queue, offer expiry + revocation on replicated relays, spam-filter polish; CI-gated | 7,000 |
| M5 | Trust cold-start + Ğ1 price integration + docs/release | WoT cold-start flows for fairs / Ğ1 groups (QR, offline); Ğ1 price tag + deep-link to wallets (no in-app payment); contributor architecture guide + multilingual user guide; F-Droid release | 6,000 |
| Total | 32,000 |
Submission checklist (before nlnet.nl/propose)
- Cross-check every field above against the live form + Guide for Applicants.
- Fit test: does the abstract + §4 opening read "federation / portability / self-hosting" before "seeds"?
- Budget: milestones independent & verifiable, effort realistic, sum = €32,000.
- Compliance: FOSS licence stated, privacy statement acknowledged, AI-disclosure + provenance log ready.
- Confirm the 1 Aug 2026 deadline on the site; submit with several days' margin.
- Language pass: rewrite §3–§5 in vjrj's voice; clear, technical English throughout.
Appendix — AI-use log (keep, attach or provide on request)
Fill as you go so the disclosure is accurate and verifiable.
| Date | Tool / model | Prompt (verbatim) | What the output was used for | Kept unedited? |
|---|---|---|---|---|
| 2026-07-10 | Claude Code (Opus 4.8) | "Me ayudas a presentar tane a esta convocatoria? qué pedirías…" | Initial English draft/outline from repo docs | No — to be rewritten & verified by lead |
| 2026-07-17 | Claude Code (Opus 4.8) | "He avanzado mucho en el desarrollo, puedes actualizar la application?…" | Updated draft to reflect shipped status + new milestones | No — to be rewritten & verified by lead |
Keep the raw session transcript alongside this table. If §3–§5 are rewritten by hand, note that here too.