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

Add setup wizard (and node/device button and associate folder with node button) #134

Open
2 of 5 tasks
sten0 opened this issue May 5, 2022 · 32 comments
Open
2 of 5 tasks

Comments

@sten0
Copy link
Contributor

sten0 commented May 5, 2022

Relevant components

  • Standalone tray application (based on Qt Widgets)
  • Plasmoid/applet for Plasma desktop
  • Dolphin integration
  • [?] Command line tool (syncthingctl)
  • Integrated Syncthing instance (libsyncthing)
  • Backend libraries

Is your feature request related to a problem? Please describe.
Everyone I've introduced Syncthing to has found the initial setup really cumbersome. Even career developers.

Describe the solution you'd like
An "Add node (aka Devices)" button, and ability to associate Folders with Devices. A wizard-type interface could be nice too.

Describe alternatives you've considered
As noted, everyone I know has found the web GUI cumbersome and not intuitive at all. This project is already already has the desired functionality:
https://github.com/kozec/syncthing-gtk

@Martchus
Copy link
Owner

Martchus commented May 5, 2022

I always refrained from implementing device/folder adding/removing because implementing all options the official web UI has to offer and catching up on changes is a lot of effort that is likely better spent on improving the official web UI itself. Note that Syncthing Tray does not aim to fully replace the web UI (see README) as I think certain features are better implemented in the official GUI instead of every native integration.

If one likes to go ahead and implement that I'd be happy to help. However, the wizard should make it clear that one is possibly missing out configuration options from the regular GUI. The wizard's code should also be shared between the Qt Widgets GUI and the Plasmoid to keep it better maintainable.

Additionally, I'm not even sure what you're asking for exactly. Apparently some kind of wizard that is not even present in the official UI that somehow combines adding devices and folders.

@sten0
Copy link
Contributor Author

sten0 commented May 24, 2022 via email

@Martchus
Copy link
Owner

Ok, a wizard that guides on on Syncthing Tray's own initial configuration based on some automatic detection of what's already running on the system would certainly make sense. I've already had that idea myself but have never found the time to implement it. That wizzard would replace the current first-launch message then (and could be opened from the settings as well - which would likely also deserve a landing page).

Allowing one to add devices and folders as next step (after Syncthing is running / the connection to Syncthing has been established) would also make sense but of course adding devices/folders needed to be implemented first at all. Tweaking the most important settings of Syncthing itself could of course be done as well. However, it should never go against defaults of Syncthing itself and also never re-configure anything "accidentally" so this feature should be implemented with care.

Maybe I'll find the time/motivation to work on it at some point. I'd go in the order as I've just used to describe the different aspects. Finally a use case for https://doc.qt.io/qt-6/qwizard.html :-)

@stale
Copy link

stale bot commented Jul 24, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Jul 24, 2022
@Martchus
Copy link
Owner

I have actually some time ago thought about how to structure a wizard. Here the past from my notes (maybe I'll take the time to implement that next winter):


Wizzard sequence:

  1. Welcome page with dismiss option and direct access to normal config
  2. Find local config, try to connect
    1.1 If config found and connected, suggest to use config
    1.2 If not connected or connection found via 1.1 is dismissed
    • suggest to enter config manually
    • suggest to launch Syncthing via the internal launcher and configure connecting to that
    • also check for currently running Syncthing processes and warn if one is still running (but could not used via 1.1)
  3. Check for systemd units, possibly suggest to configure systemd integration (skip page completely if systemd support is disabled)
  4. Show summary/confirmation
  5. Allow enabling auto start
  6. Allow adding devices/folders

Further notes:

  • Re-use widgets from normal settings dialogs as much as possible. Possibly refactor.
  • Show wizzard on first startup and allow accessing it from normal config dialog
    • Maybe add "start page" to normal config dialog or "wizzard" button next to filter box which both would be new features
      on qtutilities-level

@stale stale bot removed the stale label Jul 24, 2022
@Martchus
Copy link
Owner

Martchus commented Aug 6, 2022

I've been enhancing the first-launch message box to use QWizard in preparation for adding a guided/automated setup (see 394af9b). (It can be shown via the hidden parameter --assume-first-launch when Syncthing Tray was launched before.)

@Martchus Martchus changed the title Add node/device button, associate folder with node button, or wizard Add setup wizzard (and node/device button and associate folder with node button) Aug 6, 2022
@sten0 sten0 changed the title Add setup wizzard (and node/device button and associate folder with node button) Add setup wizard (and node/device button and associate folder with node button) Sep 2, 2022
@sten0
Copy link
Contributor Author

sten0 commented Sep 2, 2022

Thank you for your work on this, I've noticed it in the commit logs! Re: your notes,

§4 should be part of §1.2, §3 should be the last item.

§2 is the most common mechanism on Linux systems so should be prefered to the internal launcher. The internal launcher should be the fallback on almost all modern systems, because almost all modern systems use systemd. FreeBSD builds will be configured without systemd so the default daemon launch method branch can be determined at configure/compile time.

I appreciate your thoroughness in considering case §1.2.3, which is vanishingly unlikely if a systemctl query succeeds. It seems like the most likely case for this would be a manually configured password (or SSL) via the web GUI.

P.S. Oops, I just spotted my embarassing typo.

@Martchus
Copy link
Owner

Martchus commented Oct 4, 2022

The WIP wizard already allows one to setup Syncthing Tray for the currently running Syncthing instance, for starting Syncthing via systemd (if the unit is installed) and for starting Syncthing via the internal launcher (if it is in path or Syncthing Tray has been configured with the built-in Syncthing library). It also allows one to enable/disable autostart.

It is currently only available in the Qt Widgets based GUI. To test it, start it via --wip which enables experimental features. The wizard is available via a button in the top-right corner of the settings windows (or can be shown via the CLI argument --show-wizard). It will also be shown on the first launch (which can be faked for testing via the CLI argument --assume-first-launch).

So anybody is welcome to help me testing. (You'll still need the mentioned flags in 1.2.4 release as I still consider the wizard experimental.)

@Martchus
Copy link
Owner

Martchus commented Oct 29, 2022

The wizard is now accessible without passing the --wip flag so it'll be available normally in the next release. I have improved it a little bit since I've wrote the last comment. It seems to work when I tested it under Arch Linux and Windows 10. Unfortunately I haven't gotten any feedback from users so there are likely still bugs to be found. Besides that, the wizard currently provides the bare minimum and many things are left to implement (besides missing features like configuration of dark mode or Syncthing itself, it can currently only detect an external Syncthing binary if it is in PATH and the systemd unit file names are also always assumed to be the standard ones).

@sten0
Copy link
Contributor Author

sten0 commented Nov 1, 2022 via email

@Martchus
Copy link
Owner

Martchus commented Nov 1, 2022

Since this is just one feature of Syncthing Tray it makes no sense to consider all of the next releases betas due to the wizard still being experimental. The worst thing that can happen is that it doesn't work and the user has to resort to manual configuration. I don't expect any severe bugs anymore at this point. That's also why I removed it from being guarded behind the --wip flag. Users will surely hit limitations but I guess it is ok.

Showing ones device ID and QR code directly from the wizard is a good idea.

About more advanced configuring of Syncthing itself: That's still not implemented yet as it requires to be able to modify Syncthing's config from within Syncthing Tray. That's something I have not intended to implement from the beginning because it is likely better done within Syncthing's official UI. Maybe I'll look into it nevertheless but if you really want a setup wizard for Syncthing itself it might make sense to ask Syncthing devs directly. (It would likely be fun to implement an Android/mobile UI at some point so then this would also be required. If I'll ever look into making an app I'll definitely try to make the backend code reusable so the wizard can benefit from it as well.)

On Debian, 60% of popcon-participating Syncthing Tray users use the plasmoid, so creating an entry point there seems like it may increase likelihood of feedback.

The wizard is at this point also ready to be used from the plasmoid. It is accessible from the settings. Only showing it on the first launch (or rather "adding" in this case) is missing. Note that WIP features can also be tested using the Plasmoid by setting an environment variable (which is now of course no longer relevant for the wizard). I suppose I should document that at some point.

or something else you don't want to support

This is not really my mindset. Just because I don't support something that doesn't mean it shouldn't be possible at all. In fact I also don't support Debian but this doesn't mean one cannot try using Syncthing Tray there. One just has to be aware that this environment has never been tested by upstream and manage one's own expectations. By the way, for the sake of testing this kind of configurability is actually an important feature and therefore the executable path and service names are actually overridable via an environment variable. (I just didn't bother mentioning this because users are likely not interested in setting environment variables before starting a wizard.)

@stale
Copy link

stale bot commented Dec 31, 2022

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Dec 31, 2022
@Martchus
Copy link
Owner

Since this is just one feature of Syncthing Tray it makes no sense to consider all of the next releases betas due to the wizard still being experimental. The worst thing that can happen is that it doesn't work and the user has to resort to manual configuration. I don't expect any severe bugs anymore at this point. That's also why I removed it from being guarded behind the --wip flag. Users will surely hit limitations but I guess it is ok.

At this point I'd say the feature is stable enough. At least I haven't gotten any bug reports besides problems with running the test suite.

Showing ones device ID and QR code directly from the wizard is a good idea.

I've have actually already implemented that now.

The wizard is at this point also ready to be used from the plasmoid. It is accessible from the settings. Only showing it on the first launch (or rather "adding" in this case) is missing.

Showing the wizard on the first "adding" of the Plasmoid has also been implemented.


I guess what's still missing is UI for adding folders and devices. However, for having this within the wizard one needed to have that kind of UI (and required backend functions) first at all.

Supposedly it would also be nice to have a simple way of enabling dark mode on Windows. That kind of setting would also fit well into the wizard.

@stale stale bot removed the stale label Dec 31, 2022
@sten0
Copy link
Contributor Author

sten0 commented Jan 7, 2023 via email

@stale
Copy link

stale bot commented Mar 8, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Mar 8, 2023
@sten0
Copy link
Contributor Author

sten0 commented Mar 8, 2023 via email

@stale stale bot closed this as completed Mar 15, 2023
@sten0
Copy link
Contributor Author

sten0 commented Mar 15, 2023

Please reopen

@sten0
Copy link
Contributor Author

sten0 commented Mar 15, 2023

It seems the stale bot no longer accepts email replies :(

@Martchus Martchus reopened this Mar 15, 2023
@stale stale bot removed the stale label Mar 15, 2023
@stale
Copy link

stale bot commented May 15, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label May 15, 2023
@Martchus
Copy link
Owner

I've recently setup a new device and I must say Syncthing's official web UI really has some nice featured like picking up a device ID from another device in the local network. I'm not sure whether I can (and want) Syncthing Tray to compete with that official UI. It would likely still make more sense to add a wizard for the remaining steps (to add devices and folders) to Syncting's own UI. The wizard of Syncthing Tray could then simply trigger this "official" wizard in the end (as it already suggests opening the official web UI to proceed configuring).

Before trying to implement this in the official UI one should of course reach out to upstream and ask whether a feature like this is actually wanted and whether it makes sense to implement it at this point (or rather wait until some general UI rework has been concluded).

@Martchus Martchus removed the stale label May 15, 2023
@sten0
Copy link
Contributor Author

sten0 commented May 23, 2023 via email

@Martchus
Copy link
Owner

It's a nice example how the easy_to_use vs powerful_control problem can be solved.

I know the app as I'm using the fork version myself. It is true that both UIs complement each other. However, I don't think that this helps with the user experience. Having to decide which UI is best for a given task is actually another hurdle. For instance, a casual user might actually benefit from the device discovery feature (as this feature is pretty easy to use) but might not even be aware that it is actually usable on Android as well because it is "hidden" in the web UI. I don't want Syncthing Tray to hide nice features of Syncthing itself like this. (How the current UI of Syncthing Tray is designed makes it hopefully clear that Syncthing Tray is only providing a condensed view.)

Unfortunately the Android app's UI cannot really avoid providing a native UI (to avoid the problem mentioned in the previous paragraph) because supposedly only the native UI can trigger a file dialog (which is quite important on Android for multiple reasons).

Please consider the knowledge paradox; this stuff isn't easy for most people!

I'm not saying that a wizard is useless. It is in fact useful for less experienced users. I'm just saying that it is better implemented in the official UI so all Syncthing users can benefit from it and to avoid the problems mentioned before.

Or do you mean whether or not upstream is interested in maintaining a quickstart wizard?

I'm just saying that it is likely a bad idea to just do some coding and create a PR. It would be better to coordinate with upstream first. Maybe they have even already done some planing in this regard. I've seen that there is some UI overhaul in the works. Maybe they don't want to add too much anymore to the old/current UI at this point as the current focus lies on the future one.

Would you like me to open the discussion with upstream Syncthing?

If you like to move this forward. I personally haven't moved it forward because I'm busy enough tweaking some other details and can live without this feature. If you create an issue on their repository, please mention this issue here for context and then GitHub should be able to create a back-reference.

Concretely, what are your actual concerns?

It would be very frustrating to spend a lot of time creating a PR and then they say for instance "this is too complex", "this is not what we've envisioned" or "we are focusing on a future UI replacement first".

@stale
Copy link

stale bot commented Jul 22, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Jul 22, 2023
@Martchus Martchus removed the stale label Jul 22, 2023
@sten0
Copy link
Contributor Author

sten0 commented Jul 23, 2023 via email

@stale
Copy link

stale bot commented Sep 21, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Sep 21, 2023
@sten0
Copy link
Contributor Author

sten0 commented Sep 23, 2023 via email

@stale stale bot removed the stale label Sep 23, 2023
Copy link

stale bot commented Nov 22, 2023

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Nov 22, 2023
@sten0
Copy link
Contributor Author

sten0 commented Nov 23, 2023 via email

@stale stale bot removed the stale label Nov 23, 2023
Copy link

stale bot commented Jan 22, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Jan 22, 2024
@sten0
Copy link
Contributor Author

sten0 commented Jan 22, 2024 via email

@stale stale bot removed the stale label Jan 22, 2024
Copy link

stale bot commented Mar 22, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale label Mar 22, 2024
@sten0
Copy link
Contributor Author

sten0 commented Mar 22, 2024 via email

@stale stale bot removed the stale label Mar 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants