# IPFS Foundation Worklog
### 2026-02-06 (week 6)
- Finished first draft of an architecture doc for a decentralized [Sentinel Collaborative Ground Segment]: https://hackmd.io/@vmx/decentralized-collgs
- Renamed matadata to Matadisco: https://vmx.github.io/matadisco-viewer/
[Sentinel Collaborative Ground Segment]: https://sentinels.copernicus.eu/missions/collaborative
### 2026-01-26 (week 5)
- Opened PR to remove deprecated [`multihashes`] library from `stac-migrate`: https://github.com/stac-utils/stac-migrate/pull/10
- Worked more on scraping the CSW catalogue at https://gdk.gdi-de.org/ so that it can be integrated into matadata
- Worked on architecture doc for a decentralized [Sentinel Collaborative Ground Segment]
[`multihashes`]: https://github.com/multiformats/js-multihash
[Sentinel Collaborative Ground Segment]: https://sentinels.copernicus.eu/missions/collaborative
### 2026-01-19 (week 4)
- Polished the [Sentinel STAC to ATProto Cloudflare worker] a bit:
- I found out about ATProto batching via `applyWrites`: https://docs.bsky.app/docs/api/com-atproto-repo-apply-writes
- Learnt a lot about CSW (Catalogue Service for the Web) and how to query it: https://en.wikipedia.org/wiki/Catalogue_Service_for_the_Web
- Wrote soon to be published blog post about matadata
[Sentinel STAC to ATProto Cloudflare worker]: https://github.com/vmx/sentinel-to-atproto/
### 2026-01-13 (week 3)
- Metadata on ATProto
- Cloudflare worker code to publish Sentinel-2 L2A metadata: https://github.com/vmx/sentinel-to-atproto/
- Code of the viewer: https://github.com/vmx/matadata-viewer/
- Demo of the viewer: https://vmx.github.io/matadata-viewer/
- Looked into metdata catalogs of Germany
- Aggregated one is called geodatenkatalog.de ([some information in english])
- There are two instance, I don't know what the difference is:
- https://geodatenkatalog.de/
- https://gdk.gdi-de.org (that one [is used by the data.gov.de crawler])
- INSPIRE changes a lot in 2026 according to [this gdi-de blog post]:
- The [INSPIRE Geoportal] is going to be discontinued, instead the data will be integrated into the [European data portal].
- The European data portal relies on [DCAT-AP], hence [GeoDCAT-AP] gains importantance and the INSPIRE metadata needs to be transformed into it. => Build new tools around GeoDCAT-AP, rather then INSPIRE.
[some information in english]: https://www.gdi-de.org/en/practice-projects/technical-components/spatial-data-catalogue
[is used by the data.gov.de crawler]: https://wiki.gdi-de.org/spaces/gdk/pages/18547376/Anbindung+der+GDI-DE+an+GovData?focusedCommentId=1052409877#comment-1052409877
[this gdi-de blog post]: https://wiki.gdi-de.org/spaces/insp/blog/2025/12/16/1474199905/Ausblick+2026+das+soll+sich+bei+INSPIRE+im+n%C3%A4chsten+Jahr+%C3%A4ndern
[INSPIRE Geoportal]: https://inspire-geoportal.ec.europa.eu/
[European data portal]: https://data.europa.eu/
[DCAT-AP]: https://op.europa.eu/en/web/eu-vocabularies/dcat-ap
[GeoDCAT-AP]: https://github.com/SEMICeu/GeoDCAT-AP
### 2026-01-06 (week 2)
- Some maintanance of the rust-multibase, rust-multihash and rust-cid crates. CI is green again.
- Metadata discovery project:
- Refactored the Cloudflare worker a bit so that it doesn't hit the subrequests limit of 50
- Created a basic viewer that listens on the ATProto Jetstream: https://vmx.cx/tmp/matadata/
- The records are currently created by a single account and can be found at https://atproto-browser.vercel.app/at/did:plc:otu6ccrwycke33kl3h4yjhwn/cx.vmx.dev.ataag.matadata
### 2025-12-29 (week 1)
off
### 2025-12-22 (week 52)
off
### 2025-12-15 (week 51)
- Updated information about the Rust IPLD libraries: https://github.com/ipld/ipld/pull/361
- Description of how metadata discovery on ATProto could look like: https://hackmd.io/@vmx/atproto-metadata-discovery
- I'm publishing some sattelite imagery records from a Cloudflare worker: https://atproto-browser.vercel.app/at/did:plc:otu6ccrwycke33kl3h4yjhwn/cx.vmx.dev.ataad.matadata
- Asking for [`showSaveFilePicker()`] support in all browsers at the IPFS Browsers & Standards work 2026 wishlish: https://discuss.ipfs.tech/t/browsers-standards-work-2026-call-for-community-input/19917/5
- Rust IPLD year in review blog post is up: https://ipfsfoundation.org/ipld-2025-in-review/
- Thanks to [@mriise] `rust-multibase` now has Base54 support: https://github.com/multiformats/rust-multibase/pull/116
[`showSaveFilePicker()`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/showSaveFilePicker
[@mriise]: https://github.com/mriise
### 2025-12-08 (week 50)
- Deployed a Cloudflare worker that queryies the STAC catalogue at https://earth-search.aws.element84.com/v1/ for updates of Sentinel 2 L2A data
- Next step is putting links to that data on ATProto
- Got more details on requirements for a prototype to have p2p based satellite imagery disitribution
### 2025-12-01 (week 49)
- Metadata discovery thread on Bluesky: https://bsky.app/profile/brookie.bsky.social/post/3m6uu3emkwc2s
- DASL testing test suite makes this fail that shouldn't: https://github.com/hyphacoop/dasl-testing/issues/17
- Started to actually experiment with ATProto: https://atproto-browser.vercel.app/at/vmx-atproto-dev.bsky.social
- Trying to make iroh-blobs concepts named more approachable: tags vs. something else: https://github.com/n0-computer/iroh-blobs/issues/200
### 2025-11-24 (week 48)
- [Peergos] does cool things, [block level access control], that sadly wasn't excepted into Kobo [IPIP-270], [original issue], [implementation].
- Though there is [IPFS-Nucleus], which does that authenticated Bitswap and is an IPFS stripped down to an IPLD-like things (blocks only).
- Thanks [Ian Preston] for catching up with me and explaining details
- Metadata discovery: some design ideas from [edsilv] at https://docs.google.com/document/d/1CylRKwnnWsnGQS4enAf4xihz8wmjf3CEGcT1gwwz1PM/edit?usp=sharing
- My talk on decentralized metadata based on ATProto was accepted at the German speaking FOSSGIS 2026 conference: https://pretalx.com/fossgis2026/talk/KV8VC7/
- python-libipld PR got merged, see the latest comment for perf numbers: https://github.com/MarshalX/python-libipld/pull/80
- Looking into [iroh-blobs] for data distribution of satellite imagery
[Peergos]: https://peergos.org/
[block level access control]: https://book.peergos.org/security/bats.html
[IPIP-270]: https://github.com/ipfs/specs/pull/270
[original issue]: https://github.com/ipfs/specs/issues/260
[implementation]: https://github.com/Peergos/go-bitswap-auth
[IPFS-Nucleus]: https://github.com/Peergos/ipfs-nucleus
[Ian Preston]: https://github.com/ianopolous
[edsilv]: https://github.com/edsilv
[iroh-blobs]: https://github.com/n0-computer/iroh-blobs
### 2025-11-17 (week 47)
- python-libipld with cbor4ii instead of libipld has now the right performance characteristics: https://github.com/MarshalX/python-libipld/pull/80
- Meeting with https://www.exhibit.so/ about overlap with decentralized metadata discovery on ATProto. It's about 100% overlap.
- Catching up on needs of the ESA ground segement
### 2025-11-10 (week 46)
- 5mins presentation about the ATGeo working group for [CID Congress #5]: https://hackmd.io/@vmx/cid-congress-atgeo-wg
- Moving python-libipld off the deprecated Rust libipld: https://github.com/MarshalX/python-libipld/pull/80
- Upstreaming perf improvements to the underlying CBOR library (which is also used in the `serde_ipld_dagcbor` crate: https://github.com/quininer/cbor4ii/pull/51
[CID Congress #5]: https://luma.com/5n563q8d
### 2025-11-04 (week 45)
- DASL CAR spec: change language to not have "headers" within the body: https://github.com/darobin/dasl.ing/pull/78
- CBOR42 IETF draft: https://ipfs-tech.github.io/cbor42/
- reviewed the 2025-11-03 version and responded to issues at https://github.com/ipfs-tech/cbor42/issues
- Looking into Python DASL/IPLD implementations
- Trying to move [python-libipld] from the deprecated Rust libipld directly to [cbor4ii].
- Calls with folks from the [The EASIER Data Initiative]
[python-libipld]: https://github.com/MarshalX/python-libipld
[cbor4ii]: https://github.com/quininer/cbor4ii
[The EASIER Data Initiative]: https://easierdata.org/
### 2025-10-27 (week 44)
- More thoughts on JavaScript and the potential support for floats in ATProto (sadly, it's still nothing sharable)
- Getting started with [FROST] again:
- Found some nice IPLD/IPFS related things to [Zarr]:
- https://discourse.pangeo.io/t/zarr-on-unixfsv1-vs-on-ipld/2500
- https://github.com/d70-t/ipldstore
- https://github.com/orcestra-campaign/data2ipfs
- Submitted a FROST related to to the German-language [FOSSGIS conference]: https://pretalx.com/fossgis2026/talk/review/SPDZAGN9RTGPGJ7JGNY8QLVV3JJFSMJY
[FROST]: https://github.com/TomNicholas/FROST
[Zarr]: https://zarr.dev/
[FOSSGIS conference]: https://www.fossgis-konferenz.de/2026/
### 2025-10-20 (week 43)
- Getting into the "what are the problems with floats" rabbit hole
- [ECMAScript clearly specifies how to convert a float unambiguously into a decimal number]. It's using the always shortest representation. The maximum length of the resulting decimal seems to be 25 characters. An easier to read intro [can be found on MDN].
- Writeup about what IPFS is and how it could be beneficial for my earth observation contacts: https://hackmd.io/@vmx/ipfs-for-sentinel-imagery
[ECMAScript clearly specifies how to convert a float unambiguously into a decimal number]: https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-numeric-types-number-tostring
[can be found on MDN]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString
### 2025-10-13 (week 42)
- Internal report about what I've done in my first month at the IPFS foundation
- ATProto:
- ATGeo-wg: joined the discussion about initial Lexicon ideas
- ATGeo: initial draft (not ready for sharing yet) of how we could encode geometries in the light of no floats support. Currently I think they should be encoded as CBOR.
- I'm in favour of having floats in ATProto. First version of a doc, still needs more work. I think the current workaround of encoding them as strings actualle introduces the issue that is trying to be prevented: https://hackmd.io/@vmx/floats-in-atproto
- Another round of DASL spec reviews
### 2025-10-06 (week 41)
off
### 2025-09-29 (week 40)
- New `rust-multibase` release: contains BASE256 emoji encoding. Nothing major, but it wasn't released in a long time and there aren't much upcoming changes
- Looking into https://github.com/ipld/rust-ipld-core/issues/19 again. There is active development on Serde again, so I thought I give the proper upstream fix a try. It didn't work out of the box, hence I left a comment: https://github.com/serde-rs/serde/pull/2781#issuecomment-3358428660
- For over 7 years I'm thinking that a peer-to-peer network would make sense for internal distribution of the [Copernicus Sentinel satellite imagery]. I never found the time to really dig into that much deeper. Now I had. The group working on national mirrors of the data is called [Collaborative Ground Segment] (CollGS). They have regular workshops [publish their presentations]. Quoting from some presentations:
- [Collaborative workshop objectives – 2025]:
> - Potential for improvements exist associated with unnecessary data duplication […] It features limited services reuse and chaining & offers limited interoperability.
> - Data volumes generated by Copernicus will become incompatble with a systematic data duplication
> - Efficient use of the rich Copernicus data holdings will require innovative data “organisation” and access interfaces
- [MS Presentation - Norway]:
> - Centralized, non-redundant, one stop shop, one point of failure data architecture with unclear future cost and temporal sustainability creates less trust and less use, should be avoided
> - Need to stimulate a future redundant, federated data management architecture that can handle diversified use
[Copernicus Sentinel satellite imagery]: https://sentinels.copernicus.eu/
[Collaborative Ground Segment]: https://sentinels.copernicus.eu/missions/collaborative
[publish their presentations]: https://sentinels.copernicus.eu/missions/collaborative/workshop
[Collaborative workshop objectives – 2025]: https://sentinels.copernicus.eu/documents/d/sentinel/2025-03-04_collgs_dte_workshop_intro
[MS Presentation - Norway]: https://sentinels.copernicus.eu/documents/d/sentinel/norway_2025_03_05_collgs_nosa
### 2025-09-22 (week 39)
- Working on getting approval from all contributors to `rust-cid` to approve the license change
- Reviewed MASL spec
- IPLD related tooling in Rust:
- A blockstore implementation: https://github.com/eigerco/blockstore
- A maintained Bitswap implementation for `rust-libp2p`: https://github.com/eigerco/beetswap
- Preparing for the ATGeo-WG meeting and read through all of https://discourse.lexicon.community/tag/wg-atgeo
- Good overview over the problem space: https://discourse.lexicon.community/t/atgeo-wg-designing-for-interoperability-with-a-common-data-model-for-places/58
- My current view: Combine off- and on-protocol records:
- on-protocol part is embedded and contains a very user specific version of the place made for humans. E.g. the name in the language the post was created in.
- off-protocol part is a reference, something along the lines of https://discourse.lexicon.community/t/atgeo-wg-how-should-we-refer-to-place-objects-from-off-protocol-reference-datasets/86/2.
That part would then be machine-readable.
- For more details see https://hackmd.io/@vmx/atgeo-wg.
- More projects using IPLD related tech:
- TinyCloud self-sovereign storage: https://github.com/TinyCloudLabs/tinycloud-node
- DialogDB embedded local-first database: https://github.com/dialog-db/dialog-db
- ATGeo-WG Meeting:
- I signed up for helping with specifying a lexicon for places
### 2025-09-15 (wwek 38)
- Rust IPLD codec library improvements: the codec code is now easily accessible
- Updating projects that still use (Rust) `libipld` to use `ipld-core`:
- `car-utils` also used a lot of old multiformats libraries: https://github.com/blocklessnetwork/car-utils/pull/18
- Meeting with @bumblefudge about the DASL history and future goals
- Notable (still active) projects that use the [Rust `ipld-core` library]:
- CAR file reader/writer: https://github.com/dapplion/rs-car
- Third Party ATProto library: https://github.com/atrium-rs/atrium
- IPFS implementation: https://github.com/dariusc93/rust-ipfs
- Twine protocol: https://github.com/twine-protocol/twine-rs
- Defluencer protocol: https://github.com/Defluencer
- Various rsky fixes to get their CI green. They no longer have libipld in their dependency tree
- Reviewed DASL CID, DRISL and CAR specs
[Rust `ipld-core` library]: https://github.com/ipld/rust-ipld-core
### 2025-09-08 (week 37)
- Initial round of reviving geo contacts:
- Tom Nicholas: https://github.com/TomNicholas/FROST
- ESA
- Former DLR (German national delegation of the ESA) employee
- Getting in touch with folks from the terrabyte project: https://docs.terrabyte.lrz.de/about/introduction/
- Updating projects that still use (Rust) `libipld` to use `ipld-core`:
- `rs-car-sync`: https://github.com/zenria/rs-car-sync/pull/1 (merged and released). Upstream user:
- https://github.com/blacksky-algorithms/rsky/pull/133
- https://github.com/blacksky-algorithms/rsky/pull/135
- `ssi-ucan`: https://github.com/spruceid/ssi/pull/680
- `monoutils-store`: was renamed to `ipldstore` and that one is no longer using `libipld`, but `ipld-core`
- `dwn`: was rewritten and no longer used `libipld`, but `ipld-core`
- `ax`, `ax_banyan`, `ax_banyan_utils`, `ax_core`, `ax_sdk`, `ax_types`, `cbor-data`: stays with outdated libipld version according to its author
- `pflow-metamodel`: https://github.com/pflow-xyz/metamodel-rs/pull/2
- `aerostream`: https://github.com/shigepon7/aerostream/pull/2
- `libp2p-bitswap-next`: the code of this crate was removed in this commit: https://github.com/dariusc93/rust-ipfs/commit/e199cdfb35d9806b3aaa0bfc278fa8b1d12325d6
- `homestar-invocation`, `homestar-runtime`, `homestar-wasm`, `homestar-workflow`: no further development.
- `wasm-wnfs`, `wnfs`, `wnfs-common`, `wnfs-hamt`, `wnfs-nameaccumulator`, `wnfs-namefilter`, `wnfs-unixfs-file`, `wnfs-wasm`: no further development.
- `noosphere`, `noosphere-api`, `noosphere-car`, `noosphere-cli`, `noosphere-collections`, `noosphere-core`, `noosphere-fs`, `noosphere-gateway`, `noosphere-into`, `noosphere-ipfs`, `noosphere-ns`, `noosphere-sphere`, `noosphere-storage`: No further development: https://newsletter.squishy.computer/p/subconscious-is-winding-down
- `car-mirror`, `car-mirror-axum`, `car-mirror-reqwest`, `car-mirror-wasm`: no further development
- All other crates haven't seen any update >2 years, hence not considering them for upgrades to `ipld-core`
- Clarifyied licensing details in serde_ipld_dagcbor: https://github.com/ipld/serde_ipld_dagcbor/pull/46
- Next round of trying to relicense `rust-cid` to MIT/Apache-2: https://github.com/multiformats/rust-cid/pull/177
## 2025-09-01 (week 36)
- Tooling discovery:
- Geo data and IPFS:
- [ipfs-stac] from [EASIER]
- Streaming larger files into IPFS with correct chunking
- https://github.com/ribasushi/DAGger
- IPLD library maintenance:
- Reviewed https://github.com/ipld/serde_ipld_dagcbor/pull/45
- Went through the `rust-multibase`, `rust-multihash`, `rust-cid` repos and updated the dependencies/reviewed PRs (thanks @rvagg for the fast reviews)
- https://github.com/ipld/serde_ipld_dagjson/issues/11 got a fix
- DASL testing Tier 1 fixes:
- one resulted in an upstream bug report: https://github.com/quininer/cbor4ii/issues/45
- Sort order of old and new CBOR spec for string keys is the same: https://github.com/darobin/dasl.ing/issues/26#issuecomment-3242160769
- This simplifies the DAG-CBOR spec: https://github.com/ipld/ipld/pull/356
- Helped - IPLD library maintenance:
- Reviewed https://github.com/ipld/serde_ipld_dagcbor/pull/45
- Went through the `rust-multibase`, `rust-multihash`, `rust-cid` repos and updated the dependencies/reviewed PRs (thanks @rvagg for the fast reviews)
- https://github.com/ipld/serde_ipld_dagjson/issues/11 got a fix
- DASL testing Tier 1 fixes:
- one resulted in an upstream bug report: https://github.com/quininer/cbor4ii/issues/45
- Sort order of old and new CBOR spec for string keys is the same: https://github.com/darobin/dasl.ing/issues/26#issuecomment-3242160769
- This simplifies the DAG-CBOR spec: https://github.com/ipld/ipld/pull/356
- Help answering questions the Iroh team has about DASL that came from its IPLD inheritance.
answering questions the Iroh team has about DASL that came from its IPLD inheritance.
[ipfs-stac]: https://github.com/DecentralizedGeo/ipfs-stac
[EASIER]: https://easierdata.org/notebooks/accessing-gedi-data
## 2025-08-25 (week 35)
- Meeting with the ATgeo working group. Discussed general goals and next steps.