I wrapping up an application I'm writing that I'm hoping will get a decent user base. It will be free and open source, but I'm interested in collecting some analytic data on the install base. Essentially a small version of Google Analytics, but for a desktop application instead of a website.
Details I would like to collect are:
- Previous App Version (if any)
- Current App Version
- OS Version
- Regional Geographic Location (Country/City level only, probably IP based).
- Unique System Hash (To determine # of unique installs)
I have a feeling that the first three could probably be done with no real worries as they are data points gathered by pretty much EVERY website in existence without ever asking permission.
Geographic location I'm still fairly comfortable is OK. Again, collected by every website out there... and heck, they even get your actual IP. I wouldn't get this, but actually resolve the geo location client side and send ONLY that. All this data would probably be submitted to a google docs form, so I wouldn't have IP access even at the collection level.
I'm a little more worried about the unique system hash as people might see this as identifiable. However, my current thought is to gather the systems motherboard and CPU serial, concatenate them together and then create a hash (probably MD5) out of that string. Same thing that's done with passwords, no way to reverse it so really NO way to discern who the data actually belongs to. You'd have to have that specific hash from every computer along with their owner info to match them up.
So, I'm probably fine, but I just want to cover my ass here.
Any thoughts from the community as to if the data I want to collect is reasonable or if there are some data points I should not collect (or none at all). As previously mentioned, the application will be totally open source, so they would be more than able to look at the code and verify that no questionable data is sent. The only thing I might be tempted to "hide" is the actual address of the collection form, purely so someone doesn't decide to spam it with bogus data (maybe I'm being to paranoid). As it is, the app uses some web APIs for which I have personal keys that cannot be given away in the checked in source, so I have a file that is omitted from source control that contains things like those API keys. The application still works without them, just in a more limited fashion and anyone could get a key of their own and compile to make it full featured. I figure I could put the form URL in this section.