Skip to content

Alert contacts using old protocol of the need to upgrade - #140

Merged
special merged 3 commits into
ricochet-im:masterfrom
special:protocol-notify-old
Mar 25, 2015
Merged

Alert contacts using old protocol of the need to upgrade#140
special merged 3 commits into
ricochet-im:masterfrom
special:protocol-notify-old

Conversation

@special

@special special commented Mar 16, 2015

Copy link
Copy Markdown
Member

Ricochet 1.0.x clients have no way of showing an error when they try to connect to clients running the newer protocol. We decided backwards compatibility would be too much extra work in this particular case, and it's still early enough to make a hard break without inconveniencing people too much.

This is an attempt to make that hard break less hard. When an outbound connection is made to a known contact, and they negotiate the old protocol, it will send a chat message directing them to figure out how to upgrade:

example

That message is sent only once per contact, and only for outbound connections.

I don't like this solution, but since we currently lack a reliable way to tell users to upgrade, this seems like a step worth taking. Thoughts?

special added 2 commits March 16, 2015 13:27
This tiny protocol version negotiation is compatible with the Ricochet
1.0 protocol. It's a useful step to have in case there is a need to make
dramatic protocol changes in the future, e.g. with message encryption.
An opt-in feature protocol would be unnecessarily difficult to work with
in some cases.

This also allows us to treat old clients better, and maybe to send them
a useful message so users know that they will need to upgrade.
@rburchell

Copy link
Copy Markdown
Contributor

I assume you'll put something on that URL. Right now it just redirects to Github.

@rburchell

Copy link
Copy Markdown
Contributor

Alternatively, maybe putting a markdown doc in the source tree (and linking to that) would work?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this worthy of BUG()? Since bytesAvailable looked correct

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think no: I assume there are all sorts of reasons for a read/peek to fail. I'm mostly only concerned if peek succeeds and then read fails, or if we get some data but less than bytesAvailable promised.

@special

special commented Mar 17, 2015

Copy link
Copy Markdown
Member Author

Iterating on the message text:

Original:

[automatic message] I'm using a newer version of Ricochet, which is not compatible with yours. This is a one-time change to help improve Ricochet in the future. See https://ricochet.im/upgrade for instructions.

Revised:

[automatic message] I'm using a newer version of Ricochet that cannot connect to yours anymore. This is a one-time change to help improve Ricochet. See https://ricochet.im/upgrade for instructions on how to update.

Patrick's proposal:

[automatic message] I'm using a newer version of Ricochet that is not compatible with yours. This is a one-time change to help improve Ricochet. See https://ricochet.im/upgrade for instructions on downloading and installing the latest version of Ricochet. Once you have upgraded I will be able to see your messages again, and you mine.

@rburchell

Copy link
Copy Markdown
Contributor

I like the addition about explaining explicitly that upgrading will fix things.

@special

special commented Mar 24, 2015

Copy link
Copy Markdown
Member Author

[automatic message] I'm using a newer version of Ricochet that is not compatible with yours. This is a one-time change to help improve Ricochet. See https://ricochet.im/upgrade for instructions on getting the latest version. Once you have upgraded, I will be able to see your messages again.

…pgrades

Ricochet 1.0.x has no way of indicating protocol issues to users, and
it's not feasible to support both protocols simultaneously, given how
short this upgrade cycle should be.

To try to make that situation slightly less awful, this sends an evil
viral spam message to existing contacts when we connect to them and they
are using the old protocol. That message is sent at most once per
contact, and just encourages them to visit the website for more
information.

I don't like this format, and I don't like encouraging users to follow
links and get updates via messages from their contacts, but I think this
is the best option available: it's better than all of your contacts
appearing to be forever offline after the upgrade, until they happen to
notice the new versions too.
@special
special force-pushed the protocol-notify-old branch from 296ea0f to f41a825 Compare March 24, 2015 19:41
@special

special commented Mar 24, 2015

Copy link
Copy Markdown
Member Author

The XXX about UI for protocol negotiation errors will be addressed in a separate PR for easier review.

special added a commit that referenced this pull request Mar 25, 2015
Alert contacts using old protocol of the need to upgrade
@special
special merged commit 95e6ce9 into ricochet-im:master Mar 25, 2015
@special
special deleted the protocol-notify-old branch March 25, 2015 04:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants