Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.


share|improve this question

closed as primarily opinion-based by MichaelT, Snowman, durron597, Bart van Ingen Schenau, GlenH7 Nov 2 '15 at 17:57

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

Companies do this all the time, if you play World of Warcraft, then you have sent a great deal of the same information you want to collect to Blizzard. I would provide a way to NOT send this information, make it so the user must disable it, and when the application is installed inform the user. You should also have a small section on the website, if there is one, about this submission. – Ramhound Oct 14 '11 at 14:02
Everything except the unique system hash can actually be determined by the /download page quite easily server side. Geographic location is probably easier to determine from the server than the client. – configurator Oct 14 '11 at 14:11
@configurator - yeah, the thing about that though is that I'll be able to track download count easily, but what I would really like is actual install count... hence the client side. – Adam Haile Oct 14 '11 at 14:40
If you disclose you are collecting data and that it will be sent on install and they agree to your terms and conditions then what is the ethical dilemma. Either they accept and install or decline and do not. – Chad Oct 14 '11 at 15:28
@Chad - Well said, good point. – Adam Haile Oct 14 '11 at 16:26

Just explain it in the setup and make it opt-in. I could probably think of a few exceptions if you tortured me, but basically opt-out is always unethical (making the user go out of his way to prevent something). Opt-in with full-disclosure means you and we don't have to decide if it is ethical, your users can decide for themselves.

The first two are app-specific, so I don't see a problem with them. The third is probably necessary to do the install at all, so it's not really a question of if they'll tell you or not. The fourth is something I don't care about myself, but some people will. The last is something I'd be a little suspicious of from a user point of view. This may not be personally identifiable directly, but it sounds like it can potentially be compared to similar data from websites and used for tracking and some level of data mining, even if all they know is that mystery user X installed your app and also frequented Not that you would do that, but a user might not know that you're a StackExchange member and thus honest, trustworthy and upright.

Yeah, I know that horse has already left the barn. But since you're asking about ethics, "everybody does it" is no reason to jump on the bandwagon yourself. In any case, there's probably no harm in asking first. If you don't ask first, and even if the information is completely benign, you could look underhanded.

share|improve this answer
Thing I worry about with the opt-in option though is that most people never change the default options, so I'll probably never get ANY analytics data :( A bit of a conundrum... – Adam Haile Oct 14 '11 at 3:22
If you're worried that not enough people will opt in, well, that's the first step in justifying deciding for them what answer they should give. Again, I'm not saying you intend that, but basically, if you want this information, you have only two choices, convince them or take it without their knowledge/permission. Maybe you can find a creative way to convince them? – kylben Oct 14 '11 at 3:38
I disagree about opt-out being unethical... It's a simple checkbox, and what you're collecting is not identifiable or personal. – Fosco Oct 14 '11 at 4:36
@Fosco, if you think it is worth asking at all, then you're acknowledging that they may not want it. If the checkbox is checked by default, and they don't see it, they get the thing against their wishes. If the checkbox is off by default and they miss it, they miss an opportunity at worst. As a developer/website admin, etc., if the checkbox is on by default, you gain from making it hard to see or confusing. If it is off by default and you want them to check it, you gain from making it easy to see or find. Opt in aligns your interests with the user's, opt out puts them in conflict. – kylben Oct 14 '11 at 4:44

Not the answer you're looking for? Browse other questions tagged or ask your own question.