Skip to content

Release 0.15 #9152

Closed
Closed
@BigLep

Description

Items to do upon creating the release issue

  • Fill in the Meta section
  • Assign the issue to the release owner and reviewer.
  • Name the issue "Release v0.15.0"
  • Set the proper values for X.Y.Z
  • Pin the issue

Meta

See the Kubo release process for more info.

Initial planning

Themes

  1. Clean up cruft
  2. Communicating outwards from IPFS Thing
  3. Bitswap
  • Priority: knowledge transfer
  • Finish separation
  • Improve server
  • Leverage test-plans
  • Final validate by deploying to a Cluster
  1. Reframe followup
  2. Gateway improvement followups?

Items we're explicitly not doing

  1. Kubo RPC cleanup: Point users at canonical kubo/client/rpc library #9124?
  2. Repo consolidation
  3. Enabling libp2p resource manager

Kubo 0.15.0 Release

We're happy to announce Kubo 0.15.0, bla bla...

As usual, this release includes important fixes, some of which may be critical for security. Unless the fix addresses a bug being exploited in the wild, the fix will not be called out in the release notes. Please make sure to update ASAP. See our release process for details.

🗺 What's left for release

<List of items with PRs and/or Issues to be considered for this release>

🔦 Highlights

This is a release mainly with bugfixing and library updates.
We are improving release speed and cadence trying to have a new release every 5 weeks.

#️⃣ Blake support

You can now use blake3 as a valid hash function: ipfs block put --mhtype=blake3.
It uses a 32 bytes default size.
To use other hash length set mhlen: ipfs block put --mhtype=blake3 --mhlen=64

💉 Fx Options plugin

This adds a plugin interface that lets the plugin modify the fx options that are passed to fx when the app is initialized.
This means plugins can inject their own implementations of IPFS interfaces.
This enables granular customization of go-ipfs behavior by plugins, such as:

  • Bitswap with custom filters (e.g. for CID blocking)
  • Custom interface implementations such as Pinner or DAGService
  • Dynamic configuration of libp2p ...

Here's an example plugin that overrides the default Pinner with a custom one:

func (p *PinnerPlugin) Options(opts []fx.Option) ([]fx.Option, error) {
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
	defer cancel()
	cfg, err := config.LoadDefaultConfig(context.Background())
	if err != nil {
		return nil, fmt.Errorf("loading AWS config: %w", err)
	}
	logger, err := zap.NewProduction()
	if err != nil {
		return nil, fmt.Errorf("constructing logger: %w", err)
	}
	smClient := secretsmanager.NewFromConfig(cfg)
	pinsDB, err := db.NewPinsDB(ctx, logger.Sugar(), smClient)
	if err != nil {
		return nil, fmt.Errorf("constructing PinsDB: %w", err)
	}
	pinner := &pinner.Pinner{PinsDB: pinsDB}
	return append(opts, fx.Replace(fx.Annotate(pinner, fx.As(new(pin.Pinner))))), nil
}

Extra plugin info here.

✅ Release Checklist

For each RC published in each stage:

  • version string in version.go has been updated (in the release-v0.15.0 branch).
  • new commits should be added to the release-v0.15.0 branch from master using git cherry-pick -x ...
  • tag commit with v0.15.0-rcN
  • add artifacts to https://dist.ipfs.tech
    1. Make a PR against ipfs/distributions with local changes produced by add-version (see usage)
    2. Wait for PR to build artifacts and generate diff
    3. Inspect results, merge if CI is green and the diff looks ok
    4. Wait for master branch to build and update DNSLink at https://dist.ipfs.tech
  • cut a pre-release on github and reuse signed artifacts from https://dist.ipfs.tech/kubo (upload the result of the ipfs/distributions build in the previous step).
  • Announce the RC:
    • Create a new post on Discuss
      • This will automatically post to IPFS Discord #ipfs-chatter
      • Examples from the past: 0.14.0
    • Pin the topic. You need admin privileges for that.
    • To the early testers listed in docs/EARLY_TESTERS.md. Do this by copy/pasting their GitHub usernames and checkboxes as a comment so they get a GitHub notification. (example)

Checklist:

⁉️ Do you have questions?

The best place to ask your questions about IPFS, how it works and what you can do with it is at discuss.ipfs.io. We are also available at the #ipfs channel on Freenode, which is also accessible through our Matrix bridge.

Release improvements for next time

< Add any release improvements that were observed this cycle here so they can get incorporated into future releases. >

Items for a separate comment

< Do these as a separate comment to avoid the main issue from getting too large and checkbox updates taking too long. >

Changelog

Changelog

https://github.com/ipfs/kubo/blob/master/docs/changelogs/v0.15.md

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Labels

No labels
No labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions