Closed BigLep closed 1 year ago
My primary goal in this conversation is how to best enable Bedrock to detach from the "boxo" effort, while also unblocking https://github.com/ipfs/boxo/issues/196
Item 1: what to do with go-car
Item 2: what to do with go-merkledag
Item 3: any other disagreements that Rod wants to share? (Also encourage written thoughts to be shared publicly. They can be posted in this issue.)
Note @BigLep is not great at listening well and taking notes. Below is some of what was covered...
Rod: go-car and go-merkledag are different ends of the spectrum
go-merkledag is not something that IPFS implementations should depend on.
It shouldn't be permanent.
These aren't important things that should need for an IPFS implementation
There is worry that it will become ore ossified by being in "boxo"
Wants to see it die.
Don't want to care about it.
General worry is that by pulling all this stuff in, that are crowding out the ability for people to make their own choices about what libraries to use (that can't as easily mix and match components).
go-car Yes want to opt out of having a Boxo dependency.
Meta feedback Need to get people onboard with making changes If haven't gotten EngRes onboard, how about the rest of the ecosystem?
Currently has low trust towards Kubo maintainers as...
Maybe can do a migration/breakage campaign but it can't be continual and it needs to be well thought through. Don't want to experience the repeated set of breakages like had with go-libp2p.
Steve: We're not in a position right now to lead a fully buttoned-up migration campaign. Focus is on how we decouple to not so Kubo maintainer work is not impacting Bedrock.
dvd: summary of the concerns:
Steve: Full acknowledgment that https://github.com/ipld/go-car/pull/356 was not handled correctly. It shouldn't have been merged.
[There were other things, but the above was the gist I got written down.]
defer: Discussion on bitswap in boxo.
Actions around go-car and go-merkledag were added to the top-level description.
Clarifying ownershp of go-car and requiring CODEOWNER PR approval is happening in: https://github.com/ipld/go-car/pull/403 https://github.com/ipld/github-mgmt/pull/51
Clarifying the status of go-merkledag and adding a COEOWNERS is happening in https://github.com/ipfs/go-merkledag/pull/101
I plan to send this message to #bedrock in FIL Slack on 2023-03-28. Review / 👍 welcome.
Hello Bedrock,
I know various on the Bedrock team have been snagged by efforts from the @kubo-maintainers to consolidate various repos into "boxo" (formerly called go-libipfs). Here's a quick update on where we're at...
Per conversations the week of 2023-03-20 in https://github.com/ipfs/boxo/issues/218, go-car and go-merkledag no longer depend on Boxo. That dependency established earlier in 2023 has been reverted.
The list of repos that will be getting copied into boxo (and their status) are listed here: https://github.com/ipfs/boxo/issues/202 . If anything seems off, please share in https://github.com/ipfs/boxo/issues/218 by EOD Friday 2023-03-31, as otherwise @kubo-maintainers will be adding "not maintained" notices to these repos and deprecated types starting 2023-04-03.
boxo's next milestone is to be setup for more example-driven-development with a consolidated set of repos that can be versioned and refactored collectively can be found here. More info and tracking about that effort can be fond here: https://github.com/ipfs/boxo/issues/196
Thanks and let us know if you have any questions, @kubo-maintianers
I'm resolving this issue since
Can I make sure I’m understanding #202 correctly go-car and go-merkledag will remain in boxo, but also exist as independent forks (maintained by individuals from Bedrock)?
That seems… like a worst of both worlds.
Re go-car: why would IPFS stewards maintain a fork of code from the ipld organization? Why would two separate teams, both actually part of the Protocol Labs organization, maintain two separate copies of a repository? It just seems terrible. What expertise do IPFS stewards bring to a CAR library? How do they plan to develop it? Will they incorporate go-car changes (go-car is in active development and will remain so). How will the boxo version diverge from go-car?
To me, the clear decision should be to simply have boxo use the external copies, rather than make two versions of the same software.
The current decision seems like a concession to individuals, all at Protocol Labs, who have personal relationships with the stewards team, that's unmaintainable over the long term. It doesn’t address the underlying concern, which is the entire Boxo effort is creating friction not just for individuals but the whole ecosystem. I would rather we think about: what is best for the ecosystem? Because most people in the ecosystem don't have personal relationships. The fact that the end result notification is "send a message to a private slack channel" to me feels like further evidence that we're not having discussions in the open or thinking holistically about the ecosystem value of the entire Boxo project.
If we're going with this, I sure hope it's temporary cause it seems untenable. Maybe stewards will show why go-car has to live inside of boxo and we decide we can remove go-car after all. If not, I hope we'll recognize that go-car is a seperate tool, maintained and developed most actively by other people, and there's no reason for it to live in boxo.
I'm reopening as am already seeing some additional actions to take and will also work on responding to @hannahhoward
Thanks for your message @hannah. Below are my thoughts and the actions I want to take as a result:
A few things I want to make sure are clear and understood:
Ldwrite
).The fact that the end result notification is “send a message to a private slack channel” to me feels like further evidence that we’re not having discussions in the open or thinking holistically about the ecosystem value of the entire Boxo project.
I’m not sure where the flag about not having discussions in the open is coming from. The message in the private FIL Slack #bedrock channel was an additional measure taken beyond all the other public steps that have been taken out of awareness that there is a large stream of notifications coming through. If there are other suggestions for working more in the open here, I certainly welcome hearing them.
I think we have already hit “agree to disagree” on the value of the Boxo effort. At this piont, I think we need to get over the hump and we can evaluate after if the decision was right. Given the lack of shared cross-group certainty about this decision, our shifted emphasis has been to do it in a way that minimizes the blast-radius and impact on others in case it turns out to be a misstep. Better/consolidated justification for the Boxo work is in progress here.
For the record, alternatives were attempted in the past around ipld/go-car:
🎬 I think these actions should be taken in light of this conversation. I’ll add them to the done criteria before closing this issue:
PR to better clarify boxo/ipld/car's relationship with ipld/go-car: https://github.com/ipfs/boxo/pull/244
There has been some more discussion about a future with boxo depending on ipld/go-car if there's some refactoring in: https://github.com/ipfs/boxo/pull/244#issuecomment-1492546786
Per 2023-04-12 maintainer conversation, @Jorropo is going to respond here.
I have posted a feedback about go-car
in https://github.com/ipld/go-car/issues/416, this include the changes I'll plan to make in boxo/car
, if we can agree on a lighter package and simpler out streaming API and cleaner go.mod I don't see any issues dropping the one from go-car
.
Doh - we have comments in here and https://github.com/ipfs/boxo/pull/244
I meant to put https://github.com/ipfs/boxo/issues/218#issuecomment-1504258929 in https://github.com/ipfs/boxo/pull/244
if we can agree on a lighter package and simpler out streaming API and cleaner go.mod I don't see any issues dropping the one from go-car.
go-car
about what introducing the lighter API you're proposing will look like
go.mod
that are not also in the boxo one.Per IPFS Thing 2023 conversations, we are going to be able to remove Boxo's ipld/go-car copy from Boxo. When that happens, this issue becomes moot and can be closed. @Jorropo will do this work.
@Jorropo : just checking in on how this going.
I updated the issue description to make clear that the done criteria is now to to get boxo/car removed.
We can remove boxo/car once https://github.com/ipfs/boxo/issues/291 is handled.
Given that the work for https://github.com/ipfs/boxo/issues/291 has made its way into Boxo and been validated in upstream consumers (Kubo, Boost, Lotus), we are unblocked to close this out. Completing this issue means "boxo/car is removed. boxo will use ipld/go-car." @Jorropo said on 2023-06-13 he will take this since it is quick.
This was closed given the work to replace boxolo/ipld/car by ipld/go-car in https://github.com/ipfs/boxo/pull/400 .
Current
Done criteria
boxo/car is removed. boxo will use ipld/go-car.
vvv OLD vvv
Done Criteria
Decision is made on the relation to be had between ipfs/boxo and ipld/go-car and ipfs/go-merkledag. This could mean having a dependency on ipfs/boxo (e.g., https://github.com/ipfs/go-merkledag/pull/100 ) or boxo taking a fork of the relevant functionality it needs and maintaining it.
Why Important
The https://github.com/ipfs/boxo/issues/196 effort (and particularly https://github.com/ipfs/boxo/pull/206) can't be completed without decisions here, and that work is blocking other refactoring work like https://github.com/ipfs/boxo/pull/176.
Resulting Actions
Below are the actions that are being taken as a result of the 2023-03-21 meeting:
✅ Item 1: Get go-car decoupled:
✅ Item 2: copy in go-merkledag to boxo This will get handled as part of https://github.com/ipfs/boxo/issues/202 A row will be added for go-merkledag. No deprecated types will be added.
A CODOWNERS will be added. https://github.com/ipfs/go-merkledag/pull/101
Additional items that have come up since>