Let's say if I am doing desktop application, and I am interested to know whether our software really gets used or not. Is it alright to insert in code that tracks whether our software is used, for how long and so on?

Note that no person-identifiable information will be collected, all I am interested to know is how frequent and for how long the software is used. The information will be sent to our server for diagnosis.

What do you think?

  • 7
    An opt-in at install-time (not opt-out, that looks sneaky and malicious from the POV of an end-user) tracking system will probably work best. Especially if you detail that it is only usage stats. Although as with any voluntarily gathered statistics you will introduce a bias towards a particular class of user (think Nielsen ratings or Alexa rankings)
    – crasic
    Commented Jun 29, 2011 at 5:25
  • 1
    Interesting question, but legal matters are almost always "too localized". Commented Jun 29, 2011 at 8:03
  • 4
    This question appears to be off-topic because it is about legal questions which are outside of the professional knowledge of a programmer.
    – user40980
    Commented Jul 23, 2013 at 2:12

6 Answers 6


Take a look at the Eclipse Usage Data Collector. This monitors what the user is doing in eclipse and sends the data to the eclipse servers for analysis - pretty much exactly what you want to do.

The answer will undoubtedly depend on where the software is used; local laws can vary wildly on subjects such as this and I suggest you seek legal advice. However in the UK I think this will be OK so long as you make it obvious and the user opts in (disclaimer: I am not a lawyer and I may be wrong).


This sort of feature is done with many Microsoft products, and usually is called "customer experience improvement program". The important things are to tell customers what it does and to give them an option to turn it off. Give system administrators a way to disable (or enable) it via group policy. Here are 2 example web pages that describe the MS one:

One blog that explained a lot of what was going on was the one by Jensen Harris, but with the blog revamps at MS has become almost unreadable:
I think he doesn't work at MS anymore as no attempt to contact him over a period of 2 years was successful.

It took me more than a year to find out, but folks who work at MS claim that implementing a feature set like the MS Customer Experience Improvement Program takes 2 teams of about 30 people per team: one per desktop application and one team to write and maintain the server-side collection application.

At my last employer, contact with actual customers had to go through the PHB, and trying to decide what features our customers really wanted or really used, all were filtered through the big guy. Like Mr Harris mentions in his older posts, some of the most requested "new features" were already in Office (or in our case, the existing applications being shipped), yet the customers were unable to find them through the maze of menu options. Since our customers were the opposite of "early adopters" we had plenty of time before trying to move to the Office 2007 look (existing apps looked more like Office 2003). The PHB wanted to know what size of effort it would take to get this data to make a move to the ribbon actually useful for our customers (we shipped one small application with the ribbon/fluent interface but we never really understood what the point of it was for about a year after it first shipped). I abandoned my attempts to implement such a thing when I finally got an idea of how big the MS teams were (namely, each team was many times larger than our entire developer staff).

  • Just because MS has a huge team doesn't mean you need a huge team too. Diminishing marginal returns to labor mean that the last few staff aren't as important as having the first few. Commented Jun 29, 2011 at 14:50
  • @mathepic, the PHB wanted it to be "exactly like Microsoft's or don't do it at all."
    – Tangurena
    Commented Jun 29, 2011 at 15:46

Illegal? Perhaps, check with your local lawyer.

Unethical? Arguably (depending on the implementation). Opt-in to be on the safe side.

  • +1 for being the only programmer to admit to not being a lawyer and refuse to play one on TV ;)
    – user4051
    Commented Jun 29, 2011 at 11:08

IANAL But I wouldn't go about doing this. If someone kicked up a fuss about tracking, how would you prove you weren't being malicious about it?

  • If your customers were fussy about it, let them have something that can decode the packets so that they can see for themselves. An application like Fiddler can capture the traffic which you could then inspect.
    – Tangurena
    Commented Jun 29, 2011 at 15:48

As long as you make it clear to the user what data you will be collecting and what you will be doing with it, make it easy to turn it off at any time (including allowing the user to change their mind after turning it on) then it's moral.

Is it legal? Consult your local solicitor, but probably yes. In Europe, at least, if the data isn't personally-identifiable that gets rid of a lot of issues, but be aware that data that isn't totally anonymous may be considered personal data (for instance, one Swiss case recently held that and IP address on its own was personal data. Even holding a UUID to allow two transmissions to be connected might make the data personal depending on what else you collect and if it can cumulatively be used to track someone down). Even if it is personal data, obtaining the data subject's permission can often allow the data to be collected, though you may need to take steps to secure it. As I said before, check with your friendly local solicitor to find out what applies where you are.


The how much time does the user uses the software is somewhat like tracking the activities of the user. So this is like personal data. I suggest that you may store the information locally and send this data whenever the user closes the application or whenever the user reopens it,of course asking the user's consent before sending it. I am not in favor of direct monitoring of the product usage as it could lead to legal problems. Many desktop application does this tracking (e.g Eclipse IDE) on the consent of the user. Prepare a consent form with the help of your legal team and I think you can provide this feature as an update ton your app (Consent needed for updating the app also)...

I have not read all the responses : Please ignore this if you have already received same kind of response. Disclaimer : This is not a legal advise and I am not a lawyer. The information that I have provided may be wrong

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