Skip to content

Make user agent RFC 9110, add popularity contest, improve update check dialog - #8948

Draft
nbolton wants to merge 2 commits into
masterfrom
RFC-9110
Draft

Make user agent RFC 9110, add popularity contest, improve update check dialog#8948
nbolton wants to merge 2 commits into
masterfrom
RFC-9110

Conversation

@nbolton

@nbolton nbolton commented Sep 12, 2025

Copy link
Copy Markdown
Member
  • Fixes user agent header not being RFC 9110 10.1.5
  • Only send extra user agent data in popularity contest mode
  • Fixes update check URL settings key (should be GUI, not Core)
  • Remove custom tab stops from settings dialog and use default

New design for version/update check dialog:
image

@nbolton
nbolton force-pushed the RFC-9110 branch 2 times, most recently from 1b76749 to 04ec88c Compare September 12, 2025 08:36
@nbolton
nbolton requested a review from sithlord48 September 12, 2025 08:38
@nbolton
nbolton force-pushed the RFC-9110 branch 3 times, most recently from 50edcaf to ddd84a3 Compare September 12, 2025 09:55

@sithlord48 sithlord48 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I am 100% not ok with sending users machine info to our api.

Why do we need to send this data ?

not to mention any stats you collect would be HIGHLY skewed as it woudl only be those with an update check who report in our popularity contest

@nbolton

This comment was marked as outdated.

@sithlord48

This comment was marked as outdated.

@sithlord48

This comment was marked as outdated.

sithlord48

This comment was marked as outdated.

@nbolton

This comment was marked as outdated.

Comment thread src/lib/common/Settings.h
@nbolton
nbolton force-pushed the RFC-9110 branch 2 times, most recently from 3e0e1ba to a362902 Compare September 12, 2025 12:59
Comment thread src/lib/gui/Messages.cpp Outdated
Comment thread src/lib/common/Settings.h
Comment thread src/lib/gui/VersionChecker.cpp
Comment thread src/lib/gui/dialogs/SettingsDialog.ui Outdated
@sithlord48

sithlord48 commented Sep 12, 2025

Copy link
Copy Markdown
Member

Small Nitpick:

How about using a tooltip to describe what the popularity contest does / sends instead of being on the dialog ?

Edit Edit,

Come to think of it i would like this to not be tied at all to the update check..

Perhaps we should have this instead be a button you can press on the dialog to report this way its a onetime report not every update check

@sithlord48

This comment was marked as outdated.

@nbolton

nbolton commented Sep 15, 2025

Copy link
Copy Markdown
Member Author

two check boxes

That's an idea. I'll try it out and see what it looks like.

@nbolton
nbolton marked this pull request as draft September 15, 2025 12:01
@nbolton
nbolton force-pushed the RFC-9110 branch 3 times, most recently from 88175c7 to dfcd5f2 Compare November 20, 2025 14:20
Comment thread src/lib/common/Settings.cpp Outdated
Comment thread src/lib/gui/Messages.cpp Outdated
@sithlord48 sithlord48 added this to the 1.26.0 milestone Nov 20, 2025
@sithlord48

sithlord48 commented Nov 21, 2025

Copy link
Copy Markdown
Member

Please explicty show the data to be captured.

It woudl be nice to see im gonna send this info

"dfv1.24.0,linux,wayland,x86_64" or something like that to show exaactly what is sent.

@sithlord48 sithlord48 changed the title Add popularity contest Add popularity contest and improve the check for updates dialog Nov 21, 2025

@sithlord48 sithlord48 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Lots of places to use auto .

Can you add some initial translations for your new strings with google translate and tag the translation team to look at them .

Comment thread src/lib/gui/VersionChecker.cpp Outdated
@nbolton
nbolton marked this pull request as draft November 21, 2025 14:34
@nbolton nbolton changed the title Add popularity contest and improve the check for updates dialog Make user agent RFC 9110, add popularity contest, improve update check dialog Nov 21, 2025
@nbolton

nbolton commented Nov 21, 2025

Copy link
Copy Markdown
Member Author

Please explicty show the data to be captured.

It woudl be nice to see im gonna send this info

"dfv1.24.0,linux,wayland,x86_64" or something like that to show exaactly what is sent.

Nice idea.

Lots of places to use auto .

Can you add some initial translations for your new strings with google translate and tag the translation team to look at them .

I'll take a look.

@nbolton
nbolton force-pushed the RFC-9110 branch 5 times, most recently from cdafd26 to 2f590bd Compare November 24, 2025 12:17
Comment thread translations/deskflow_es.ts
Comment thread translations/deskflow_ru.ts
@nbolton
nbolton requested a review from sithlord48 November 24, 2025 12:22
@nbolton
nbolton marked this pull request as ready for review November 24, 2025 12:22
@sithlord48

sithlord48 commented Nov 24, 2025

Copy link
Copy Markdown
Member

My first issues here got lost in the long long

It was this. I see some issue with this

  1. I can't be in the popularity contest and not have updates on ☹️
    • This is not ideal. These are two separate things and i could see a few reasons users may want to send popularity data without checking for updates. The most common being those who have deskflow via a package manager.
  2. The popularity reporting is reported when you do an update check.
    • This is going to skew our data towards users who restart the app or reboot their machines being more popular. Just think of how popular my (or your) computer config will be if we were to turn on the popularity contest as is.

So what can we do to fix this....

  • Popularity and Online check should be untangled.
  • We should only report the install once sending the popularity info when the users presses OK on this dialog
  • We need to remember this somehow or fingerprint the install we could use something like https://doc.qt.io/qt-6/qsysinfo.html#machineUniqueId to keep track upstream if an id has reported its version info and with that version info. To be fair idk how i feel about fingerprinting but the alternative of saving in settings can result in duplicate data if the user resets their settings this is the only approach i can see avoid that issue. However with both we can avoid sending data if we don't need as well as filter existing info from being used in our stats.
  • We report X11 or Wayland, this can change per boot.. this just begs the question of collecting usage data.. Now are users ok with this... So we end up with more a slider of what can we share from NONE - Popular only - minimal stats - full usage. Cause one we find one data point that is useful you start to think about how others could also help.
    • This brings be back to initial concern of usage tracking and reporting at all. For us to use it we need to attach some kind of identifier for the install / machine. This is just more unnecessary breadcrumb that could be potentially used against the reporter by a bad actors. I am aware of how this sounds but all data points can tell you something.. Im not saying we would not sanitize any data we share, but am just saying if we store it its possible someone steals it from our db. This kinda of collection always give me pause its nothing about this patch at all.

@nbolton

nbolton commented Nov 24, 2025

Copy link
Copy Markdown
Member Author
  • I can't be in the popularity contest and not have updates on ☹️

Fair point. The original idea was just a case of measuring the data that was being sent anyway. Was meant to be a nice little quick add on. Then the privacy discussion happened and things got complicated.

  • The popularity reporting is reported when you do an update check.

The API only records it once and then ignores all further requests from that IP. Obviously not perfect, but I was just aiming for 'good enough'. I get that it's inefficient to keep sending it, so we could certainly have a setting state entry to record that it was sent. That'd need to be reset each time the version number changes (edit: or we record the version number in a popularityContestLastVersion state entry), as the version number is measured too. I can see that kind of server/client state management getting a bit complicated. (edit: maybe not if we use the popularityContestLastVersion idea)

@sithlord48

Copy link
Copy Markdown
Member

Well you need to also be careful w/ using a state entry since those files are expected to just be removed sometimes. This is why I was thinking the route of a machineID then we send this w/ and we can then on server side see oh machine ID is has been using 1.24.0 now new version is 1.25.0 and we just say oh we seen machine:version so lets +1 the new version and on the server our check will now be machine:1.25.0. this way if they downgrade we can also look to track the numbers of users who have downgraded and from what version to what other one.

@nbolton

nbolton commented Nov 25, 2025

Copy link
Copy Markdown
Member Author

Ok, that's interesting. So instead of having the state management burden on the client side, we shift it over to the server-side where it's much easier to fix state bugs.

The trade-off is that we would be sending the request every time the GUI starts. Before I start making changes, are we on the same page?

@sithlord48

Copy link
Copy Markdown
Member

No im saying you need to do both.. we don't want to send messages when we don't need to (client check) and we don't want to add messages from the same machine @ version to teh tally (server check)

@nbolton
nbolton marked this pull request as draft November 27, 2025 11:51
@sithlord48 sithlord48 removed this from the 1.26.0 milestone Dec 15, 2025
@sithlord48 sithlord48 mentioned this pull request Dec 30, 2025
…t (RFC 9110 10.1.5)

feat: Add option to participate in popularity contest

- Only sets extra user agent info if the option is enabled
- Default is disabled
- Added checkbox to version checker dialog
- Added option to settings dialog
@sithlord48 sithlord48 added the 🔶 pending response Waiting for the OP to respond. Items left in this state for too long may be closed. label Jul 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔶 pending response Waiting for the OP to respond. Items left in this state for too long may be closed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants