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

⚡️ 0.29 RELEASE 🚀 #654

Closed
13 of 19 tasks
vasco-santos opened this issue Jun 2, 2020 · 3 comments
Closed
13 of 19 tasks

⚡️ 0.29 RELEASE 🚀 #654

vasco-santos opened this issue Jun 2, 2020 · 3 comments
Labels

Comments

@vasco-santos
Copy link
Member

vasco-santos commented Jun 2, 2020

Libp2p hardening and improved browser experience

🗺 What's left for release

🔦 Highlights

🔒Signed Peer Records

A libp2p node shares its data publicly (e.g through the DHT) or relies on potentially untrustworthy intermediaries to relay information. This might have consequences as the peer data can be tempered by a third party.

A Signed Peer Record is an all-purpose data container that includes a signature of the data, so we can verify that the data came from a specific peer and that it hasn't been tampered with.

Signed peer records are now exchanged in the identify protocol and in gossipsub peer exchange (introduced in gossipsub 1.1).

🛡️Gossipsub v1.1

The libp2p-gossipsub javascript implementation is now upgraded according to the Gossipsub v1.1 spec and it packs several security hardening extensions, thanks to ChainSafe ❤️ . You can read more about it in its release blogpost.

We leveraged this update to rethink the pubsub interface, in order to make it easier and straightforward, as well as to be consistent with the API of the routers. Moreover, the interface was also reconstructed to ease new pubsub router implementations. This means less code in the libp2p bundle, as well as less code to maintain and test.

Uint8array replace Buffer

Aiming to improve libp2p browser support, we are moving away from node core modules unless we can guarantee that the code we are writing will not run in a browser. It is worth mentioning that modern JavaScript runtimes have TypedArrays such as Uint8Array backed by ArrayBuffers. All libp2p dependencies were also updated to use Uint8Array.

Part of the larger endeavour in ipfs/js-ipfs#3220

🏗 API Changes

The pubsub API is being updated to be consistent with the new js-libp2p-interfaces/src/pubsub.

All the API parameters and return values that used Buffer are now using Uint8array.

You can check the full details about these changes in the Migrating to libp2p@0.29 doc.

✅ Release Checklist

  • Robustness and quality
    • Ensure that all tests are passing, this includes:
      • unit
    • Publish a release candidate to npm
      # Minor prerelease (e.g. 0.24.1 -> 0.25.0-rc.0)
      $ npx aegir release --type preminor -t node -t browser --preid rc --dist-tag next
      
      # Increment prerelease (e.g. 0.25.0-rc.0 -> 0.25.0-rc.1)
      $ npx aegir release --type prerelease -t node -t browser --preid rc --dist-tag next
    • Run tests of the following projects with the new release:
  • Documentation
    • Ensure that README.md is up to date
    • Ensure that all the examples run
    • Ensure that libp2p/docs is updated
  • Communication
    • Create the release issue
    • Take a snapshot between of everyone that has contributed to this release (including its subdeps in IPFS, libp2p, IPLD and multiformats) using name-your-contributors. Generate a nice markdown list with this script
    • Announcements (both pre-release and post-release)
    • Blog post
    • Copy release notes to the GitHub Release description

❤️ Huge thank you to everyone that made this release possible

In alphabetical order, here are all the humans that contributed to the release:

🙌🏽 Want to contribute?

Would you like to contribute to the libp2p project and don't know how? Well, there are a few places you can get started:

⁉️ Do you have questions?

The best place to ask your questions about libp2p, how it works and what you can do with it is at discuss.libp2p.io. We are also available at the #libp2p channel on Freenode.

@vasco-santos vasco-santos pinned this issue Jun 2, 2020
@jacobheun
Copy link
Contributor

Per discussions over at ipfs/kubo#7433 (comment), we should look at getting some better built in support for AutoRelay or an AutoRelay like component. I'll create an issue for tracking the specific use case and how we can look at phasing in improved support for this. I think there are some quicker changes we could potentially land in 0.29, and then we can phase in more in subsequent releases.

@negamaxi
Copy link

It seems like this release was already published 20 days ago...

https://github.com/libp2p/js-libp2p/releases/tag/v0.29.0

@jacobheun
Copy link
Contributor

Yes it was, I'll switch the pinned issues to 0.30.

@jacobheun jacobheun unpinned this issue Sep 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants