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

Outdated Version Notice #6487

Open
Stebalien opened this issue Jul 9, 2019 · 8 comments · May be fixed by #10438
Open

Outdated Version Notice #6487

Stebalien opened this issue Jul 9, 2019 · 8 comments · May be fixed by #10438
Labels
effort/hours Estimated to take one or several hours exp/intermediate Prior experience is likely helpful help wanted Seeking public contribution on this issue kind/enhancement A net-new feature or improvement to an existing feature kind/feature A new feature kind/maintenance Work required to avoid breaking changes or harm to project's status quo P2 Medium: Good to have, but can wait until someone steps up topic/devexp Developer Experience

Comments

@Stebalien
Copy link
Member

It would be great to print a notice to users when they're running an outdated version of go-ipfs. Luckily, we should be able to do this without deploying any new services or making any additional requests.

Instead, can just use the bootstrappers (i.e., "trusted nodes") to determine if we're out of date, no extra network communication required.

  1. On start, register for connection events.
  2. When we connect to a bootstrapper, check it's version.
  3. If it's running a newer (non-RC) version, print a message.

Caveats:

  • This won't work if we stop connecting to bootstrappers. However, we're likely to continue to try to connect to at least one bootstrapper when possible.
  • We can't determine the latest release when we're testing an RC and/or custom build on a bootstrapper.
@Stebalien Stebalien added the kind/feature A new feature label Jul 9, 2019
@Kubuxu
Copy link
Member

Kubuxu commented Jul 9, 2019

Bitcoin has a notice system where there is a group of keys that can sign a message and this message will be propagated across the p2p network and displayed to users.

@lidel
Copy link
Member

lidel commented Jan 10, 2022

This was mentioned during stewards sync today, my thinking:

  • We don't want to rely on bootstrappers too much: we want to use them only on initial bootstrap (Censorship resistant bootstrapping (e.g. for wikipedia) #3908, Saving previously seen nodes for later bootstrapping #3926), so can't use them for this reliably.
  • Instead, we could detect when certain % of go-ipfs peers (Agent Version column from ipfs stats dht) use newer version and warn user that they should update to the latest version
    • this has very nice property of "not calling home" or producing any unnecessary DNSLink lookups for https://dist.ipfs.io/go-ipfs/ and does not impact private swarms, only public peers
  • It needs to be WARNING printed to the stdout / logs of ipfs daemon
    • that way it will reach everyone, no matter what package manager / docker image is used etc
    • we could be very polite and allow for disabling new version check by setting ENV variable – but the default should always run this check

@lidel lidel added this to Weekly Candidates in Maintenance Priorities - Go Jan 10, 2022
@lidel lidel added effort/hours Estimated to take one or several hours exp/intermediate Prior experience is likely helpful kind/enhancement A net-new feature or improvement to an existing feature kind/maintenance Work required to avoid breaking changes or harm to project's status quo P2 Medium: Good to have, but can wait until someone steps up topic/devexp Developer Experience help wanted Seeking public contribution on this issue labels Jan 10, 2022
@BigLep BigLep removed this from Weekly Candidates in Maintenance Priorities - Go Mar 10, 2022
@BigLep BigLep added this to the Best Effort Track milestone Mar 10, 2022
@BigLep
Copy link
Contributor

BigLep commented Mar 10, 2022

I like this @lidel.

@schomatis : what do you think about implementing this?

@schomatis
Copy link
Contributor

Yes, assigning.

@schomatis schomatis self-assigned this Mar 11, 2022
@aschmahmann
Copy link
Contributor

Instead, we could detect when certain % of go-ipfs peers (Agent Version column from ipfs stats dht) use newer version and warn user that they should update to the latest version

@lidel did you mean to specifically reference the DHT routing table (ipfs stats dht) since it has some basic sybil resistance going on, or did you just mean generally the user agents of all peers we're connected to, or even all peers we have information about in the peerstore.

These are all sort of manipulatable without some reasonably trustable mutability source (IPNS, DNSLink, HTTPS, bootstrappers, ...) although I guess there's not much to get out of it other than causing some confusion. Maybe we just want a wider pool here with which to gather update statistics from instead of something smaller like routing table size.

@lidel
Copy link
Member

lidel commented Mar 30, 2022

I meant nothing fancy tbh, just peers we are connected to at the moment would do, or (ideally) a bigger sample of peers we were connected to within last ~24h (if it is possible to get that info from the peerstore).

Realistically, we just want to know when new "stable" version appears on the network and gets popular enough (> some %).
This check would execute on startup (after bootstrapp) and then every 24h, and we show the WARNING only once (until user reboots their node).
Does not have to be perfect – if someone sybils our node with fake new version the only side-effect will be WARNING in logs.

@schomatis
Copy link
Contributor

As mentioned in the DIscord thread I'll go over the routing table from that command. If I should do it differently please state it explicitly in this thread.

@schomatis schomatis pinned this issue Mar 31, 2022
@schomatis schomatis unpinned this issue Mar 31, 2022
@schomatis schomatis linked a pull request Mar 31, 2022 that will close this issue
@lidel lidel removed this from the Best Effort Track milestone Jul 4, 2023
@BigLep BigLep mentioned this issue Aug 3, 2023
@lidel
Copy link
Member

lidel commented Sep 15, 2023

We are still observing significant lag in updates (source):

We've learned about big deployments which are packaging Kubo in docker images etc.

My suggestion for next step is to try to address it in Kubo 0.24:

@BigLep BigLep mentioned this issue Nov 9, 2023
11 tasks
@lidel lidel linked a pull request Jun 19, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/hours Estimated to take one or several hours exp/intermediate Prior experience is likely helpful help wanted Seeking public contribution on this issue kind/enhancement A net-new feature or improvement to an existing feature kind/feature A new feature kind/maintenance Work required to avoid breaking changes or harm to project's status quo P2 Medium: Good to have, but can wait until someone steps up topic/devexp Developer Experience
Projects
No open projects
Status: 🥞 Todo
Development

Successfully merging a pull request may close this issue.

6 participants