Closed Bug 968458 Opened 10 years ago Closed 8 years ago

Track app install/uninstalls per user+device

Categories

(Marketplace Graveyard :: Consumer Pages, enhancement, P4)

Avenir
x86
macOS
enhancement

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: robhudson, Unassigned)

References

Details

(Keywords: privacy-review-needed, Whiteboard: [too-big-bug?][break-down-like-it's-1979][marketplace-transition])

This is a cleanup and make everything awesome bug.

Currently our app installs are tracked in the Installed table. An install is inserted via the undocumented install API (https://github.com/mozilla/zamboni/blob/master/mkt/installs/api.py).

The problems:
1. The install API can be called "manually" and isn't tied to an actual device.
2. The data itself is questionable (See bug 933406 for details)
3. We have no way of tracking uninstalls so this list goes stale.

Proposal:
When a user hits Marketplace, use navigator.mozApps.getInstalled() to get the list of apps on the device. Send this list back to Marketplace via an API. It'd be nice if we could also send some sort of device ID or signature and track apps per device. Update the list of installed apps based on this list being sent. If we haven't seen the app before (based on the manifest_url) add it to the table. (Note: There may be manifest_urls that we don't have in our Marketplace) If we know which device the user is using and we have an app on our side that is no longer in the list, flag the app as being uninstalled (this will be a strong signal for recommendations). Knowing the app was installed on multiple user devices would probably be a reasonable signal for recommendations as well.

We can then revamp the consumer pages "My Apps" list.
* At the moment, at least for me, it has very stale app data. I even see an app that has been rejected for 7 months with an "Install" button on it that fails b/c the app has been taken down. I don't see a way to edit this list to remove the stale apps.
* We could show apps per device?

This proposal helps the problems listed above:
1. Tying installed apps to a device. The API could still be called "manually" -- I don't think there's a way around that.
2. The data would be updated as the user hits Marketplace so the data is kept up to date and current.
3. We can finally be able to track uninstalls.
(In reply to Rob Hudson [:robhudson] from comment #0)
> Currently our app installs are tracked in the Installed table. An install is
> inserted via the undocumented install API
> (https://github.com/mozilla/zamboni/blob/master/mkt/installs/api.py).

Seems reasonably documented to me: http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.html#free-apps

> The problems:
> 1. The install API can be called "manually" and isn't tied to an actual
> device.
> 2. The data itself is questionable (See bug 933406 for details)

I think that is a questionable statement. But whatever, happy to revamp it.

> Proposal:
> When a user hits Marketplace, use navigator.mozApps.getInstalled() to get
> the list of apps on the device. Send this list back to Marketplace via an
> API. 

Would that be all apps, or just ones installed from the Marketplace? Sending all apps would be a big privacy no-no.

> It'd be nice if we could also send some sort of device ID or signature
> and track apps per device. 

Again, we'd need to check with privacy on that one.

> If we know which device the user is using and
> we have an app on our side that is no longer in the list, flag the app as
> being uninstalled (this will be a strong signal for recommendations).

We'll need to cope with where the user has an app on one device, but not on another.
(In reply to Andy McKay [:andym] from comment #1)
> Seems reasonably documented to me:
> http://firefox-marketplace-api.readthedocs.org/en/latest/topics/payment.
> html#free-apps

Ah, thanks. I was looking in the wrong place for it.

> Would that be all apps, or just ones installed from the Marketplace? Sending
> all apps would be a big privacy no-no.

I thought it returned all apps. But the docs says it "Get a list of all installed apps from this origin.", which is exactly what we'd want.

> We'll need to cope with where the user has an app on one device, but not on
> another.

If the table was unique by device and app, that would work ok, assuming we can get some sort of device ID.

Without a way to track device we can't reasonably track uninstalls, which is the main reason why I'm proposing this.
(In reply to Rob Hudson [:robhudson] from comment #2)
> I thought it returned all apps. But the docs says it "Get a list of all
> installed apps from this origin.", which is exactly what we'd want.

Awesome. This sounds pretty good then.
Depends on: 968474
Severity: normal → enhancement
Priority: -- → P4
Whiteboard: [too-big-bug?]
Whiteboard: [too-big-bug?] → [too-big-bug?][break-down-like-it's-1979]
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
Whiteboard: [too-big-bug?][break-down-like-it's-1979] → [too-big-bug?][break-down-like-it's-1979][marketplace-transition]
You need to log in before you can comment on or make changes to this bug.