Syncthing for macOS the road to v2 (official application)

Hi all,

This is a new topic based on the discussion going on in https://forum.syncthing.net/t/roadmap-and-deprecation-of-v1-release-branch

Yes i’m still alive (author of Syncthing for macOS, syncthing/syncthing-macos) and I feel te need for the migration from v1 to v2 Syncthing.

I was very busy lately past months and was a bit conservative to make v2 the main version. As @calmh mentions in the topic we should just use the current auto-update “appcast.xml” and have not two branches. Also this is needed because the auto updater URL is hardcoded in the app on distribution.

For chores/household of the syncthing-macos project I or we first need to merge some v1 changes into v2 branch because somebody added translation + spanish.

So what I (or we) need to do (git chores mostly):

  • Merge changes from develop → v2
  • Update README.md on deprecation of v1 branch and add some context
  • Upgrade bundled Syncthing cli/daemon to v2.0.13 (or higher) in v2 branch
  • Do some testing and chores on the Objective-C and Swift code
  • Create v1 branch from develop (deprecate v1 baseline)
  • Make v2 branch default by renaming it to → develop
  • Create v2.0.13-1 pre-release and let CI run to output DMG
  • Let public test the pre-release and see if it works (manual update)
  • When ok then we create v2.0.13-2 and this will be the public release of v2
  • Update appcast.xml so users are forced to v2.0.13-2 with Sparkle auto updater

Hope this helps a bit.

For people interested in release management of syncthing/syncthing-macos please read syncthing-macos/README.md at a0658ce041ba04d58444b276bcf6d78013554a54 · syncthing/syncthing-macos · GitHub

Have a nice day, and hope I will get it out soon.

NOTE TO SELF (related v1 → v2 topics) :

7 Likes

Hey @xor-gate ,

Just wanted to say

  • I am so glad to see this project isn’t dead, and
  • “echt bedaankt” for all the work you’ve done on this project. (Also, love your listed location on GitHub :grinning_face:)
  • Looking forward to seeing v2 fully come out

To date, I’m still on v1.30.0-1 on all my Macs. So can test migrations at some point when v2 is officially out.

And the reason I saw this post was because this morning I thought, “Gee, I wonder where things are at with syncthing-macos?” That led me down a rabbit hole. First, I see that Syncthing now lists another project (Synctrain) which also has a macOS version. And while that looks quite interesting, I’ve been very happy with your work. So kept looking around and found various forum threads, which eventually led me to seeing your post at the end of one which then took me here.

I just wanted to give a note of support, to cheer you on, and let you know how much your work is appreciated. No one who does open source has to do it. They choose to. And I am grateful that you not only chose to write the program at all, but that you wanted to share it with others. The fact that you give of your time (the most precious thing we have) like this says a lot about you. So again, thank you.

Anyway, that’s all. While I likely can’t do much to help, I’ll do what little I can.

P.S. I am originally from The Netherlands and have extended family in Eindhoven, though I haven’t been there in a very long time. So I feel a bit like kindred spirits. :wink:

1 Like

Thanks for reaching out Frank (@fseesink ). Actually I live near Eindhoven. I cycle to work (Eindhoven) almost every workday. It’s nice you want to test out my work. syncthing-macos is a bit “weird” because I want to keep it “Frugal”, “Simple”, “Native”. For sure Synctrain runs good. I have had contact with the Author and have a MIT license to use a first-start dialog and got the Swift code. But for some reason I cannot get it bridged to the Objective-C code, the dialog is there but it is zero pixels LOL. Synctrain is also from a Dutch guy.

The syncthing-macos was born out of frustration there was no native macOS wrapper. Only some hacks. I digged a whole weekend into the Apple desktop ecosystem “back then”. And shared it with the world. And was sucked into the official Syncthing umbrella project after few years.

Nice to hear from you!

2 Likes

Hallo allemaal :wink:

For those interested in the differences between Syncthing-macos and Synctrain:

Syncthing-macos and Synctrain are both wrappers around Syncthing for macOS, but have different philosophies about the user interface and likely serve different audiences. Synctrain for macOS is basically a specialized version of the Synctrain for iOS app. It does not use the Syncthing web interface but instead offers a native UI centered around the global file tree (and with some sprinkles added, such as selective file sync and on-demand downloading/streaming). The downside is it has less of a ‘control center UI’, and also some features are not available (i.e. versioning) unless you edit the config file manually. I expect Syncthing-macos to be a bit lighter on system resources because there is less magic involved - it’s just running Syncthing as its own process, whereas the Synctrain app runs Syncthing in-process. Due to this, upgrading the Syncthing binary in Syncthing-macos is possible whereas with Synctrain you’d have to upgrade Synctrain as a whole. Synctrain will in the long term likely be a bit slower to adapt to changes in either macOS or Syncthing because of the tighter integration.

Synctrain is using Syncthing v2 by the way (since september iirc).

5 Likes

Thanks for this update and for continuing to work on this project. It’s a very essential tool for Syncthing - especially for those of us who support less or non-technical users.

I can help test on multiple machines when you’re ready.

Thanks again.

1 Like

[If this keeps up, I’m going to expect to start hearing “Wij Houden Van Oranje” when I come here. :stuck_out_tongue: ]

Well @xor-gate and @pixelspark , I am sure that I am not alone in appreciating BOTH projects. And it’s great to see that you two have already collaborated.

That is one of the great things in the open source world. You both leverage a fantastic product in Syncthing itself. Then each of you took your respective choice of language (Objective-C and Swift) and wrote the program that each of you wanted. And then amazingly, you both shared them with the world so others could enjoy them, not to mention sharing with each other. I absolutely love this about the open source community.

Now I haven’t installed Synctrain to play with it yet, but I noted the differences from reading up on Synctrain. (The native UI and features like selective file sync did catch my eye.) And yes, they may well target different audiences. But that’s another thing that’s great here. People can try both and figure out which makes sense for them. Or heck, use both depending on their circumstances.

Since you’re both in here, I was curious whether either or both of you had ever tried seeing if/how well your respective programs played with each other, and if there’s any caveats there. (e.g., if you had 2 Macs, one running Syncthing for macOS and the other running Synctrain.)

That is, Syncthing for macOS has obviously been around longer. And I have had that installed on my various Macs, while I run a basic Syncthing instance on a Linux box and the Docker image running on my Synology NAS, tying it all together so I have my own personal cloud/Dropbox as it were.

In fact, I have it on both work and personal Macs, where I have remote devices configured specifically so work machines sync work things, personal machines sync personal things, and then the few things I want to share between all of them are synced as well. And that works very well since underneath they all are simply Syncthing and the configuration/management is done via the same Syncthing web interface across the board.

And to date on my iPhone, though admittedly I don’t use it that much, I have Mobius Sync. But I would be lying if I didn’t say I was curious to see how Synctrain might perform there, as well as possibly on a Mac or two.

Unfortunately, I don’t have enough time or spare gear currently to set up side-by-side comparisons. And not sure if/how badly I’d muck things up on either my phone or if I tried using both programs on the same set of Macs, for example. So I’ve left well enough alone for now. But the potential interoperability is something I am curious about, which is why I ask.

Anyway, all the best to both of you with your respective projects!

Thanks, Frank!

Both apps are ‘just’ Syncthing under the hood, so they should play along just fine (except for possible issues in Syncthing itself related to v1 vs. v2 differences). I run Syncthing-macos on an older MacBook, Synctrain on my MacBook as well as iPhone, all connected to each other as well as various Debian, Ubuntu and Synology machines, while working great. Issues could also arise if you try to run both simultaneously on the same machine (e.g. specific default ports will already be in use, and of course it’s not advisable to have two Syncthing instances syncing the same folder on disk).

I use both Synctrain and Moebius Sync on iDevices, both work fine.

Moebius Sync also works on older devices.

Thanks for the kind words to keep us motivated (like in @xor-gate and @pixelspark ). As Tommy explains Synctrain and official Syncthing for macOS (bundle) in the end make it comfortable for non-technical end users.

The macOS native Synctrain application which is developed by @pixelspark is more modern and uses mostly Swift programming language and binds the Syncthing code directly to it. syncthing-macos project uses mostly Objective-C and some Swift code for managing the syncthing daemon process.

I’m not a GUI/UX (graphical designer), but more hardcore commandline. GUI design and implementation is a different beast. That is why my syncthing-macos is just “frugal” and sits in your tray like Dropbox or some other file sharing application.

I even got a nice “first introduction” GUI re-licensed to MIT from @pixelspark but for some reason it doesn’t work connected to the Objective-C code. It’s about this PR: WIP: Introduction screen (OnBoardingView) by xor-gate · Pull Request #262 · syncthing/syncthing-macos · GitHub

I think, the main question for your users is, if and when syncthing-macos will allow to update it’s syncthing version - officially, not with that command line hack that was posted and that allowed me to use syncthing from MacPorts instead.

Many thanks