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
Merge js-libp2p interfaces into one repo #383
Comments
I totally agree on this. Just thinking if we should finish the async migration for all the interfaces before. Now we have a few with async await, while others with PRs for async await on WIP |
Fair point. What is your prediction for that endeavor to be finished? |
The number of PRs is actually pretty small, so I don't think we need to wait. There may be some coordination annoyances deploying things individually, but it's easy enough to recreate them in the new repo. I started a new repo, currently under my org for experimenting but I will move that over to libp2p soon, https://github.com/jacobheun/js-interfaces. Edit: We can ignore the below per ipfs/js-ipfs#2222 (comment). The interfaces will get released as a single module, The major thing I have realized after moving these all under 1 repo is that releasing them individually with Aegir would be annoying. Tagging is the main reason. If the modules are still released individually, Aegir will want to create tags for them, which will likely conflict with the tags from the other interfaces. To get around this we could look at updating Aegir to be able to specify prefixes for tags, or possibly a sub path of the folder you want to release. This could look like: aegir release -t node --dir stream-muxer which would look at the package.json file there, and handle any version bumping. The tag could then be prefixed with the path, Thinking ForwardFor the interfaces I think we could really just combine them and release as a new package |
Continuing the conversation from ipfs/js-ipfs#2222 (comment) here, as it pertains primarily to this migration.
Right, so anyone bundling should be fine as only the needed dependencies should get bundled, however if you're not bundling you may get some extraneous dependencies, like @hugomrdias another thing I am thinking about is how the test suites and interfaces themselves will be required. For example, let's say I want to use the Transport interface for one of the async migrations. It has some base Error exports, along with the Transport test suite. My thinking is we would do something like: // our test file
const TransportTests = require('lib2p-interfaces/transport/tests') // In the src transport code
const { AbortError } = require('lib2p-interfaces/transport/errors') Our current setup, has us nesting all source code in I am trying to think through how we could have aegir handle some of this and/or through repo structure, without causing issues with the webpack builds. |
@jacobheun the problem here is the IMO this is a js community thing that tends to over complicate everything, i don't think we should buy into it. That said if the js team thinks this is the way to go, we can add an extra step to the release command to copy |
Either way, I think both ways will be fine. The most important is to coalesce the interface repos for improved developer productivity :) |
I have created a PR for the merge at js-interfaces#1. I also updated the original post here to include steps for cleanup, once that has been released. |
Done, right? |
I created PRs for adding the deprecation notice in the README. Once we release |
FYI, we need to transfer the issues and somehow track the open PRs that might be relevant and close the others. |
@vasco-santos I moved the issues. Didn't find any open PRs (but wouldn't be able to move them if there were any) |
Thanks @daviddias ❤️ |
This is done! |
Following ipfs/js-ipfs#2222
Can I get a Yay or block on this? Happy to take this one and ship it next week
Modules
Cleanup
NPM Deprecation Notice
Content RoutingReadme Deprecation Notice
Github Archival
Description replacement:
[DEPRECATED]: now part of the https://github.com/libp2p/js-interfaces
repoGithub Archival: Record Store
Description replacement:
[DEPRECATED]: deprecated in favor of https://github.com/ipfs/interface-datastore
The text was updated successfully, but these errors were encountered: