---
# System prepended metadata

title: IPFS Foundation Worklog
tags: [IPLD, DASL, IPFS]

---

# 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.

