Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update website to latest js-ipfs and ipld-explorer-components #69

Closed
1 of 3 tasks
lidel opened this issue Apr 7, 2021 · 8 comments
Closed
1 of 3 tasks

Update website to latest js-ipfs and ipld-explorer-components #69

lidel opened this issue Apr 7, 2021 · 8 comments
Labels
effort/days Estimated to take multiple days, but less than a week exp/intermediate Prior experience is likely helpful kind/bug A bug in existing code (including security flaws) kind/maintenance Work required to avoid breaking changes or harm to project's status quo P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked

Comments

@lidel
Copy link
Collaborator

lidel commented Apr 7, 2021

@lidel lidel added exp/intermediate Prior experience is likely helpful P1 High: Likely tackled by core team if no one steps up kind/maintenance Work required to avoid breaking changes or harm to project's status quo effort/days Estimated to take multiple days, but less than a week status/ready Ready to be worked need/triage Needs initial labeling and prioritization labels Apr 7, 2021
@lidel lidel removed the need/triage Needs initial labeling and prioritization label May 28, 2021
@alanshaw

This comment has been minimized.

@achingbrain
Copy link
Member

achingbrain commented Jul 28, 2021

update to latest js-ipfs

The latest js-ipfs supports the new multiformats stack, but some formats haven't been ported yet (e.g. ipld-bitcoin, ipld-ethereum, ipld-git and ipld-zcash at least) - these will need to be wrapped in the ipld-format-to-blockcodec module if we wish to continue supporting them in the explorer.

@lidel
Copy link
Collaborator Author

lidel commented Jul 28, 2021

fwiw this should not be a blocker – I suggested removing those fringe formats from example list – those are not supported out of the box in js-ipfs anymore, and adding dag-cbor / dag-json ones instead is way more valuable for ecosystem: #62 (comment)

Added to the maintenance board.

@lidel lidel added kind/bug A bug in existing code (including security flaws) P0 Critical: Tackled by core team ASAP labels Jul 28, 2021
@achingbrain
Copy link
Member

those are not supported out of the box in js-ipfs anymore

It's possible to configure them fairly easily, see examples/traverse-ipld-graphs/eth.js and examples/traverse-ipld-graphs/git.js for how.

@lidel lidel removed the P0 Critical: Tackled by core team ASAP label Jul 30, 2021
@BigLep
Copy link

BigLep commented Jul 30, 2021

Next steps per 2021-07-30 discussion:

  1. When this does get touched, we need to make sure we're able to stay up-to-date with latest ipld used in js-ipfs. We should have CI running that catches issues sooner while attempting to use the latest versions.
  2. We don't know if a tribute will be able to take this during their tribute week.
  3. It may make sense to build this application from scratch and hire it out. The first step here would be w3dt Stewards to write a Minimal Project Proposal describing the problem/candidate.

@BigLep
Copy link

BigLep commented Sep 22, 2021

Note that on 2021-09-21 we had another outage that was resolved with #72

@lidel
Copy link
Collaborator Author

lidel commented Sep 23, 2021

Additional context about how IPLD Explorer consumes libraries and data (useful for onboarding when picking up the upgrade tasks):

There is a deeper problem and nuance around ownership and dogfooding in IPLD Explorer.
IIRC IPLD Explorer reads raw blocks via ipfs.block.get and processes them in the browser using js-ipld (thse days deprecated in favor of js-multiformats).

I believe the app uses IPLD libs directly because ipfs.dag.* was not enough at the time. Last time I checked ipfs.dag.* was still not ready (API exposed by js-ipfs and go-ipfs+js-ipfs-http-client had different behaviors).

While tempting to "do use IPLD end-to-end" here, switching IPLD Explorer to ipfs.dag.* is much bigger task because it requires cleanup and unification of ipfs.dag.* in go-ipfs and js-ipfs* and I am not sure if that should be in scope of this app (we have interop test suite for things like this).

Keeping the existing approach of fetching raw blocks and processing them via IPLD lib directly is probably the safest path forward, as it is immune to ipfs.dag.* discrepancies and makes it work the same no matter which backend is used.

In my mind, descoping ipfs.dag.* from IPLD explorer is a feature, not a bug: this way we could create and run E2E tests for explore.ipld.io in CI of js-multiformats library, providing IPLD team with instant feedback about breaking changes and painful refactors.

@lidel
Copy link
Collaborator Author

lidel commented Feb 4, 2022

Interop around ipfs.block.get (ipfs/ipld-explorer-components@a9e86f4) was included with #73:

This wrapper ensures the new block service
from js-ipfs AND js-ipfs-http-client works with the legacy code
present in ipld-explorer-components

(ir)rationale: we have no bandwidth to rewrite entire IPLD Explorer
..but thanks to it using only ipfs.block.get, making it extra compatible
is not very expensive. This buys us some time, but this technical debt
needs to be paid eventually.

@lidel lidel closed this as completed Feb 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/days Estimated to take multiple days, but less than a week exp/intermediate Prior experience is likely helpful kind/bug A bug in existing code (including security flaws) kind/maintenance Work required to avoid breaking changes or harm to project's status quo P1 High: Likely tackled by core team if no one steps up status/ready Ready to be worked
Projects
None yet
Development

No branches or pull requests

4 participants