BeamMP / BeamMP-Server

Server for the multiplayer mod BeamMP for BeamNG.drive
https://beammp.com
GNU Affero General Public License v3.0
116 stars 49 forks source link

Add opt-in statistics and metrics #330

Open lionkor opened 1 month ago

lionkor commented 1 month ago

Is your feature request related to a problem? Please describe. The more info we can gather (consensually) about where and how the server is used, the better we can optimize for those use-cases. For example, we currently don't know whether anyone even hosts the server on Windows, or which settings people are commonly setting. If we had a way to know these things (consensually), we could pick saner defaults and expand on existing behavior to improve features people are maybe not using as much as they should.

Describe the solution you'd like Two things:

  1. A setting in the ServerConfig that is opt-in to collect statistics and metrics. Add a link to documentation what is collected and why.
  2. An INFO message on startup, if the user did not opt in, that reads something like "If you'd like to help make the BeamMP-Server better, please turn on XYZ in the Server Config.".

If opted in, send the following data to a statistics endpoint in the backend (im happy to write that one, too) at some fixed frequency(?):

This whole feature can replace the SendErrors and SendErrorsShowMessage settings, and work similarly. We can then turn off the heartbeat functionality for those servers as well, or just in general (?).

Describe alternatives you've considered We could just collect this info without asking but that would violate their privacy. We could just not collect this info and keep guessing, but that sucks.

Alternatively to all this, we could print a survey link on startup and collect information that way, by letting people self-report stuff. That would possibly work as well.

lionkor commented 1 month ago

Very open to discussion and ideas on this one.

sla-ppy commented 1 month ago

Personally, I support the fact that it isn't forced upon the users to provide us with more information so this way individual users can choose if they do wish to support us in this way or not by default.

What I was thinking about is that we could have multiple degree's of ways to return more statistics towards us without the user being uncomfortable: