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