Syncthing v0.12 "Beryllium Bedbug" Release Notes - v0.12.0-beta1

Syncthing v0.12.0 isn’t released yet, but these notes are valid for the development builds and betas in the meantime and give an overview of what to expect from the actual release.

Upgrade Notes

:bangbang: Both the discovery and the sync protocol has changed from v0.11. Devices running v0.12 will not discover or successfully connect to devices running v0.11.

:bangbang: If you run a private discovery server, you must upgrade it to the v0.12 release. The protocol and port number is different, so old and new discovery servers can coexist on the same machine and serve their respective clients.

:bangbang: The API endpoint /rest/system/discovery has been removed for POST requests.

:bangbang: The default list of discovery servers is no longer explicitly in the configuration - instead the configuration entry “default” represents the full set of default discovery servers. If you need to edit this default set, watch the startup messages for a full list of used servers and edit to suit.

There are probably more changes to come. Do not run this release unless you’re willing to participate in experimenting.


Important Changes and Improvements

:heavy_check_mark: Connection Relaying

Syncthing now has the ability to connect two devices via a relay when there exists no direct path between them (firewalls on both ends). There is a default set of relays that is used out of the box, although private relays can be used and relaying can of course be disabled. Relayed connections are encrypted in the usual manner, end to end, so the relay has no more insight into the connection than any other random eavesdropper on the Internet.

(Thanks @AudriusButkevicius)

:books: Documentation to update

  • Specs (changes the discovery protocol)
  • Specs (the new relay protocol)
  • “Configuration” article, adds new config options, new format on some config values
  • relaysrv needs docs

:banana: Also,

  • make a release of relaysrv.

:heavy_check_mark: Device Discovery over HTTPS

The global discovery protocol has been rewritten to use HTTPS over the standard port 443. A number of geographically redundant discovery servers have been deployed.

(Thanks @calmh)

:books: Documentation to update

  • Specs (the new discovery protocol)
  • “Configuration” article, different meaning and format of globalAnnounceServer entries.

Minor Changes and Improvements

:heavy_check_mark: Scanning Progress Indicator

Folders now indicate scanning progress in percent in the same way as while syncing.

:books: Documentation to update

  • “GUI overview” article

(Thanks @AudriusButkevicius)

:heavy_check_mark: Device Pause/Resume

(Thanks @calmh)

:books: Documentation to update

  • “GUI overview” article

(Thanks @calmh)

:heavy_check_mark: Signed Automatic Upgrades

Automatic upgrades are now cryptographically signed and verified before an update is applied. This also goes for manual upgrades à la syncthing -upgrade-from http://.../syncthing.tar.gz, which is thus a safe way to upgrade to a package of unknown provenance… There is a new CLI utility stsigtool to manually generate and verify signatures. There is a documentation article on the subject.

:heavy_check_mark: Extended Usage Reporting

Syncthing now reports what features are in use (such as Introducer, Master Folder, etc), as well as wether default or custom discovery and relay servers are used, and the number of CPUs in the system. This provides us with guidance about where to focus efforts. As this is a change from the previously reported data set, any previous acceptance of anonymous usage reporting is automatically revoked and the question pose again some time after installation. The exact details of the new report values are here and here.


Things That May Yet Be Included

:grey_question: Unkept Ignores, Default Set of Ignores

TBD

:grey_question: Temporary Indexes

TBD

2 Likes

BTW I’m not sure we even need to do a “beta” of this one, as the changes are not breaking or very scary.

However the discovery protocols have changed, so v0.11.x Syncthings won’t be able to find v0.12.x Syncthings and vice versa.

I guess syncthing/specs needs an update?

1 Like

(Moved to announce, as this may be relevant for people who like living on the bleeding edge (and like bleeding).)

Question:

For those running their own discosrv (standalone, and prior to the PostgreSQL version), will v.0.12.0 devices discover each other when they are pointed to this server - and “relay” is disabled ?

No, you need a newer discosrv. But the new version can also run standalone (i.e. without an external database setup).

@Nutomic @Zillode (Androiders)

You guys may want to hack this list of discovery servers (resolved into their corresponding IP:s) into the config for v0.12. Those replace the old udp4://... and udp6://... entries. The ?id=... parameters are for authenticating the servers, so should stay in there.

I can’t understand this sentence.

btw I think we should do a beta for breaking changes. I’m not sure why, it’s just a gut feeling.

Also the release notes should show the new information collected in the same format as syncthing displays it to the users.

Yeah, now there are some rather breaking changes, so now we will.

That sentence is broken.

The protocol and port number is different, so old and new discovery servers can coexist on the same machine and serve their respective clients.

Better?

Too extensive for the release notes IMHO. Should be a doc article on it somewhere though, with what the various attributes mean.

Much better.

I don’t agree with the usage reporting decision: if we don’t show users what information they are sending we will lose trust. The current draft of the release notes links to two changesets that a minority of people will understand. Why not lose those two links and instead have one link to an example of what information people will be sending instead?

1 Like

Sure. Note though that Syncthing will, as mentioned, show the question and actual data to be reported again. It doesn’t need to be in here for it to be visible to the user. Big blobs of JSON in the release notes are … not something I think makes the release notes readable. Maybe in a footnote, but again I’d prefer it as something that can be referred to outside of the release notes, linked from here.

I agree (that’s what I wrote! I suggested a link!)

1 Like

I’ve unleashed a first beta into the wild. Give it a whirl if you like! Report anomalies above and beyond the usual…

It complains a lot about wrong config formats when coming from 0.11. Will this be auto updated some times?

It should already be handled. File it please?

[35K66] 15:51:35 INFO: syncthing v0.12.0-beta0+113-g8d421a6 "Beryllium Bedbug" (go1.5.1 linux-amd64 default) stefan@alderaan 2015-09-21 08:54:21 UTC
...
[35K66] 15:51:37 INFO: Using discovery server udp4://announce.syncthing.net:22026
[35K66] 15:51:37 WARNING: Global discovery: unsupported scheme udp4
[35K66] 15:51:37 INFO: Using discovery server udp6://announce-v6.syncthing.net:22026
...
[35K66] 15:51:38 INFO: Unknown address schema sevenbyte.org:22000
[35K66] 15:51:38 INFO: Unknown address schema tatooine.sevenbyte.org:22000
[35K66] 15:51:40 INFO: Unknown address schema sevenbyte.org:22000
[35K66] 15:51:40 INFO: Unknown address schema tatooine.sevenbyte.org:22000

I see two problems:

  • Devices configured with DNS addresses, instead of dynamic.
  • Due to the new discovery stuff, the configuration has to be updated appropriately.

Can you set some sttrace var so that we’d get line numbers.

Were you already running an earlier non-release build on this box? The conversion of these items should be done correctly when migrating the config from version 11 to version 12 (set in the header of the config file). If you came from v0.11, it should have been migrated…

If you were running an earlier dev build, you may have gotten a version 12 config using an earlier version of the migration code. That’s not supported. :slight_smile: