services/healthreport/docs/dataformat.rst

branch
TOR_BUG_3246
changeset 5
4ab42b5ab56c
equal deleted inserted replaced
-1:000000000000 0:496b0eaecfda
1 .. _healthreport_dataformat:
2
3 ==============
4 Payload Format
5 ==============
6
7 Currently, the Firefox Health Report is submitted as a compressed JSON
8 document. The root JSON element is an object. A *version* field defines
9 the version of the payload which in turn defines the expected contents
10 the object.
11
12 As of 2013-07-03, desktop submits Version 2, and Firefox for Android submits
13 Version 3 payloads.
14
15 Version 3
16 =========
17
18 Version 3 is a complete rebuild of the document format. Events are tracked in
19 an "environment". Environments are computed from a large swath of local data
20 (e.g., add-ons, CPU count, versions), and a new environment comes into being
21 when one of its attributes changes.
22
23 Client documents, then, will include descriptions of many environments, and
24 measurements will be attributed to one particular environment.
25
26 A map of environments is present at the top level of the document, with the
27 current named "current" in the map. Each environment has a hash identifier and
28 a set of attributes. The current environment is completely described, and has
29 its hash present in a "hash" attribute. All other environments are represented
30 as a tree diff from the current environment, with their hash as the key in the
31 "environments" object.
32
33 A removed add-on has the value 'null'.
34
35 There is no "last" data at present.
36
37 Daily data is hierarchical: by day, then by environment, and then by
38 measurement, and is present in "data", just as in v2.
39
40 Leading by example::
41
42 {
43 "lastPingDate": "2013-06-29",
44 "thisPingDate": "2013-07-03",
45 "version": 3,
46 "environments": {
47 "current": {
48 "org.mozilla.sysinfo.sysinfo": {
49 "memoryMB": 1567,
50 "cpuCount": 4,
51 "architecture": "armeabi-v7a",
52 "_v": 1,
53 "version": "4.1.2",
54 "name": "Android"
55 },
56 "org.mozilla.profile.age": {
57 "_v": 1,
58 "profileCreation": 15827
59 },
60 "org.mozilla.addons.active": {
61 "QuitNow@TWiGSoftware.com": {
62 "appDisabled": false,
63 "userDisabled": false,
64 "scope": 1,
65 "updateDay": 15885,
66 "foreignInstall": false,
67 "hasBinaryComponents": false,
68 "blocklistState": 0,
69 "type": "extension",
70 "installDay": 15885,
71 "version": "1.18.02"
72 },
73 "{dbbf9331-b713-6eda-1006-205efead09dc}": {
74 "appDisabled": false,
75 "userDisabled": "askToActivate",
76 "scope": 8,
77 "updateDay": 15779,
78 "foreignInstall": true,
79 "blocklistState": 0,
80 "type": "plugin",
81 "installDay": 15779,
82 "version": "11.1 r115"
83 },
84 "desktopbydefault@bnicholson.mozilla.org": {
85 "appDisabled": false,
86 "userDisabled": true,
87 "scope": 1,
88 "updateDay": 15870,
89 "foreignInstall": false,
90 "hasBinaryComponents": false,
91 "blocklistState": 0,
92 "type": "extension",
93 "installDay": 15870,
94 "version": "1.1"
95 },
96 "{6e092a7f-ba58-4abb-88c1-1a4e50b217e4}": {
97 "appDisabled": false,
98 "userDisabled": false,
99 "scope": 1,
100 "updateDay": 15828,
101 "foreignInstall": false,
102 "hasBinaryComponents": false,
103 "blocklistState": 0,
104 "type": "extension",
105 "installDay": 15828,
106 "version": "1.1.0"
107 },
108 "{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}": {
109 "appDisabled": false,
110 "userDisabled": true,
111 "scope": 1,
112 "updateDay": 15879,
113 "foreignInstall": false,
114 "hasBinaryComponents": false,
115 "blocklistState": 0,
116 "type": "extension",
117 "installDay": 15879,
118 "version": "1.3.2"
119 },
120 "_v": 1
121 },
122 "org.mozilla.appInfo.appinfo": {
123 "_v": 3,
124 "appLocale": "en_us",
125 "osLocale": "en_us",
126 "distribution": "",
127 "acceptLangIsUserSet": 0,
128 "isTelemetryEnabled": 1,
129 "isBlocklistEnabled": 1
130 },
131 "geckoAppInfo": {
132 "updateChannel": "nightly",
133 "id": "{aa3c5121-dab2-40e2-81ca-7ea25febc110}",
134 "os": "Android",
135 "platformBuildID": "20130703031323",
136 "platformVersion": "25.0a1",
137 "vendor": "Mozilla",
138 "name": "fennec",
139 "xpcomabi": "arm-eabi-gcc3",
140 "appBuildID": "20130703031323",
141 "_v": 1,
142 "version": "25.0a1"
143 },
144 "hash": "tB4Pnnep9yTxnMDymc3dAB2RRB0=",
145 "org.mozilla.addons.counts": {
146 "extension": 4,
147 "plugin": 1,
148 "_v": 1,
149 "theme": 0
150 }
151 },
152 "k2O3hlreMeS7L1qtxeMsYWxgWWQ=": {
153 "geckoAppInfo": {
154 "platformBuildID": "20130630031138",
155 "appBuildID": "20130630031138",
156 "_v": 1
157 },
158 "org.mozilla.appInfo.appinfo": {
159 "_v": 2,
160 }
161 },
162 "1+KN9TutMpzdl4TJEl+aCxK+xcw=": {
163 "geckoAppInfo": {
164 "platformBuildID": "20130626031100",
165 "appBuildID": "20130626031100",
166 "_v": 1
167 },
168 "org.mozilla.addons.active": {
169 "QuitNow@TWiGSoftware.com": null,
170 "{dbbf9331-b713-6eda-1006-205efead09dc}": null,
171 "desktopbydefault@bnicholson.mozilla.org": null,
172 "{6e092a7f-ba58-4abb-88c1-1a4e50b217e4}": null,
173 "{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}": null,
174 "_v": 1
175 },
176 "org.mozilla.addons.counts": {
177 "extension": 0,
178 "plugin": 0,
179 "_v": 1
180 }
181 }
182 },
183 "data": {
184 "last": {},
185 "days": {
186 "2013-07-03": {
187 "tB4Pnnep9yTxnMDymc3dAB2RRB0=": {
188 "org.mozilla.appSessions": {
189 "normal": [
190 {
191 "r": "P",
192 "d": 2,
193 "sj": 653
194 },
195 {
196 "r": "P",
197 "d": 22
198 },
199 {
200 "r": "P",
201 "d": 5
202 },
203 {
204 "r": "P",
205 "d": 0
206 },
207 {
208 "r": "P",
209 "sg": 3560,
210 "d": 171,
211 "sj": 518
212 },
213 {
214 "r": "P",
215 "d": 16
216 },
217 {
218 "r": "P",
219 "d": 1079
220 }
221 ],
222 "_v": "4"
223 }
224 },
225 "k2O3hlreMeS7L1qtxeMsYWxgWWQ=": {
226 "org.mozilla.appSessions": {
227 "normal": [
228 {
229 "r": "P",
230 "d": 27
231 },
232 {
233 "r": "P",
234 "d": 19
235 },
236 {
237 "r": "P",
238 "d": 55
239 }
240 ],
241 "_v": "4"
242 },
243 "org.mozilla.searches.counts": {
244 "bartext": {
245 "google": 1
246 },
247 "_v": "4"
248 },
249 "org.mozilla.experiment": {
250 "lastActive": "some.experiment.id"
251 "_v": "1"
252 }
253 }
254 }
255 }
256 }
257 }
258
259 App sessions in Version 3
260 -------------------------
261
262 Sessions are divided into "normal" and "abnormal". Session objects are stored as discrete JSON::
263
264 "org.mozilla.appSessions": {
265 _v: 4,
266 "normal": [
267 {"r":"P", "d": 123},
268 ],
269 "abnormal": [
270 {"r":"A", "oom": true, "stopped": false}
271 ]
272 }
273
274 Keys are:
275
276 "r"
277 reason. Values are "P" (activity paused), "A" (abnormal termination).
278 "d"
279 duration. Value in seconds.
280 "sg"
281 Gecko startup time (msec). Present if this is a clean launch. This
282 corresponds to the telemetry timer *FENNEC_STARTUP_TIME_GECKOREADY*.
283 "sj"
284 Java activity init time (msec). Present if this is a clean launch. This
285 corresponds to the telemetry timer *FENNEC_STARTUP_TIME_JAVAUI*,
286 and includes initialization tasks beyond initial
287 *onWindowFocusChanged*.
288
289 Abnormal terminations will be missing a duration and will feature these keys:
290
291 "oom"
292 was the session killed by an OOM exception?
293 "stopped"
294 was the session stopped gently?
295
296 Version 3.1
297 -----------
298
299 As of Firefox 27, *appinfo* is now bumped to v3, including *osLocale*,
300 *appLocale* (currently always the same as *osLocale*), *distribution* (a string
301 containing the distribution ID and version, separated by a colon), and
302 *acceptLangIsUserSet*, an integer-boolean that describes whether the user set
303 an *intl.accept_languages* preference.
304
305 The search counts measurement is now at version 5, which indicates that
306 non-partner searches are recorded. You'll see identifiers like "other-Foo Bar"
307 rather than "other".
308
309 Other notable differences from Version 2
310 ----------------------------------------
311
312 * There is no default browser indicator on Android.
313 * Add-ons include a *blocklistState* attribute, as returned by AddonManager.
314 * Searches are now version 4, and are hierarchical: how the search was started
315 (bartext, barkeyword, barsuggest), and then counts per provider.
316
317 Version 2
318 =========
319
320 Version 2 is the same as version 1 with the exception that it has an additional
321 top-level field, *geckoAppInfo*, which contains basic application info.
322
323 geckoAppInfo
324 ------------
325
326 This field is an object that is a simple map of string keys and values
327 describing basic application metadata. It is very similar to the *appinfo*
328 measurement in the *last* section. The difference is this field is almost
329 certainly guaranteed to exist whereas the one in the data part of the
330 payload may be omitted in certain scenarios (such as catastrophic client
331 error).
332
333 Its keys are as follows:
334
335 appBuildID
336 The build ID/date of the application. e.g. "20130314113542".
337
338 version
339 The value of nsXREAppData.version. This is the application's version. e.g.
340 "21.0.0".
341
342 vendor
343 The value of nsXREAppData.vendor. Can be empty an empty string. For
344 official Mozilla builds, this will be "Mozilla".
345
346 name
347 The value of nsXREAppData.name. For official Firefox builds, this
348 will be "Firefox".
349
350 id
351 The value of nsXREAppData.ID.
352
353 platformVersion
354 The version of the Gecko platform (as opposed to the app version). For
355 Firefox, this is almost certainly equivalent to the *version* field.
356
357 platformBuildID
358 The build ID/date of the Gecko platfor (as opposed to the app version).
359 This is commonly equivalent to *appBuildID*.
360
361 os
362 The name of the operating system the application is running on.
363
364 xpcomabi
365 The binary architecture of the build.
366
367 updateChannel
368 The name of the channel used for application updates. Official Mozilla
369 builds have one of the values {release, beta, aurora, nightly}. Local and
370 test builds have *default* as the channel.
371
372 Version 1
373 =========
374
375 Top-level Properties
376 --------------------
377
378 The main JSON object contains the following properties:
379
380 lastPingDate
381 UTC date of the last upload. If this is the first upload from this client,
382 this will not be present.
383
384 thisPingDate
385 UTC date when this payload was constructed.
386
387 version
388 Integer version of this payload format. Currently only 1 is defined.
389
390 clientID
391 An identifier that identifies the client that is submitting data.
392
393 This property may not be present in older clients.
394
395 See :ref:`healthreport_identifiers` for more info on identifiers.
396
397 clientIDVersion
398 Integer version associated with the generation semantics for the
399 ``clientID``.
400
401 If the value is ``1``, ``clientID`` is a randomly-generated UUID.
402
403 This property may not be present in older clients.
404
405 data
406 Object holding data constituting health report.
407
408 Data Properties
409 ---------------
410
411 The bulk of the health report is contained within the *data* object. This
412 object has the following keys:
413
414 days
415 Object mapping UTC days to measurements from that day. Keys are in the
416 *YYYY-MM-DD* format. e.g. "2013-03-14"
417
418 last
419 Object mapping measurement names to their values.
420
421
422 The value of *days* and *last* are objects mapping measurement names to that
423 measurement's values. The values are always objects. Each object contains
424 a *_v* property. This property defines the version of this measurement.
425 Additional non-underscore-prefixed properties are defined by the measurement
426 itself (see sections below).
427
428 Example
429 -------
430
431 Here is an example JSON document for version 1::
432
433 {
434 "version": 1,
435 "thisPingDate": "2013-03-11",
436 "lastPingDate": "2013-03-10",
437 "data": {
438 "last": {
439 "org.mozilla.addons.active": {
440 "masspasswordreset@johnathan.nightingale": {
441 "userDisabled": false,
442 "appDisabled": false,
443 "version": "1.05",
444 "type": "extension",
445 "scope": 1,
446 "foreignInstall": false,
447 "hasBinaryComponents": false,
448 "installDay": 14973,
449 "updateDay": 15317
450 },
451 "places-maintenance@bonardo.net": {
452 "userDisabled": false,
453 "appDisabled": false,
454 "version": "1.3",
455 "type": "extension",
456 "scope": 1,
457 "foreignInstall": false,
458 "hasBinaryComponents": false,
459 "installDay": 15268,
460 "updateDay": 15379
461 },
462 "_v": 1
463 },
464 "org.mozilla.appInfo.appinfo": {
465 "_v": 1,
466 "appBuildID": "20130309030841",
467 "distributionID": "",
468 "distributionVersion": "",
469 "hotfixVersion": "",
470 "id": "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
471 "locale": "en-US",
472 "name": "Firefox",
473 "os": "Darwin",
474 "platformBuildID": "20130309030841",
475 "platformVersion": "22.0a1",
476 "updateChannel": "nightly",
477 "vendor": "Mozilla",
478 "version": "22.0a1",
479 "xpcomabi": "x86_64-gcc3"
480 },
481 "org.mozilla.profile.age": {
482 "_v": 1,
483 "profileCreation": 12444
484 },
485 "org.mozilla.appSessions.current": {
486 "_v": 3,
487 "startDay": 15773,
488 "activeTicks": 522,
489 "totalTime": 70858,
490 "main": 1245,
491 "firstPaint": 2695,
492 "sessionRestored": 3436
493 },
494 "org.mozilla.sysinfo.sysinfo": {
495 "_v": 1,
496 "cpuCount": 8,
497 "memoryMB": 16384,
498 "architecture": "x86-64",
499 "name": "Darwin",
500 "version": "12.2.1"
501 }
502 },
503 "days": {
504 "2013-03-11": {
505 "org.mozilla.addons.counts": {
506 "_v": 1,
507 "extension": 15,
508 "plugin": 12,
509 "theme": 1
510 },
511 "org.mozilla.places.places": {
512 "_v": 1,
513 "bookmarks": 757,
514 "pages": 104858
515 },
516 "org.mozilla.appInfo.appinfo": {
517 "_v": 1,
518 "isDefaultBrowser": 1
519 }
520 },
521 "2013-03-10": {
522 "org.mozilla.addons.counts": {
523 "_v": 1,
524 "extension": 15,
525 "plugin": 12,
526 "theme": 1
527 },
528 "org.mozilla.places.places": {
529 "_v": 1,
530 "bookmarks": 757,
531 "pages": 104857
532 },
533 "org.mozilla.searches.counts": {
534 "_v": 1,
535 "google.urlbar": 4
536 },
537 "org.mozilla.appInfo.appinfo": {
538 "_v": 1,
539 "isDefaultBrowser": 1
540 }
541 }
542 }
543 }
544 }
545
546 Measurements
547 ============
548
549 The bulk of payloads consists of measurement data. An individual measurement
550 is merely a collection of related values e.g. *statistics about the Places
551 database* or *system information*.
552
553 Each measurement has an integer version number attached. When the fields in
554 a measurement or the semantics of data within that measurement change, the
555 version number is incremented.
556
557 All measurements are defined alphabetically in the sections below.
558
559 org.mozilla.addons.addons
560 -------------------------
561
562 This measurement contains information about the currently-installed add-ons.
563
564 Version 2
565 ^^^^^^^^^
566
567 This version adds the human-readable fields *name* and *description*, both
568 coming directly from the Addon instance as most properties in version 1.
569 Also, all plugin details are now in org.mozilla.addons.plugins.
570
571 Version 1
572 ^^^^^^^^^
573
574 The measurement object is a mapping of add-on IDs to objects containing
575 add-on metadata.
576
577 Each add-on contains the following properties:
578
579 * userDisabled
580 * appDisabled
581 * version
582 * type
583 * scope
584 * foreignInstall
585 * hasBinaryComponents
586 * installDay
587 * updateDay
588
589 With the exception of *installDay* and *updateDay*, all these properties
590 come direct from the Addon instance. See https://developer.mozilla.org/en-US/docs/Addons/Add-on_Manager/Addon.
591 *installDay* and *updateDay* are the number of days since UNIX epoch of
592 the add-ons *installDate* and *updateDate* properties, respectively.
593
594 Notes
595 ^^^^^
596
597 Add-ons that have opted out of AMO updates via the
598 *extensions._id_.getAddons.cache.enabled* preference are, since Bug 868306
599 (Firefox 24), included in the list of submitted add-ons.
600
601 Example
602 ^^^^^^^
603 ::
604
605 "org.mozilla.addons.addons": {
606 "_v": 2,
607 "{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}": {
608 "userDisabled": false,
609 "appDisabled": false,
610 "name": "Adblock Plus",
611 "version": "2.4.1",
612 "type": "extension",
613 "scope": 1,
614 "description": "Ads were yesterday!",
615 "foreignInstall": false,
616 "hasBinaryComponents": false,
617 "installDay": 16093,
618 "updateDay": 16093
619 },
620 "{e4a8a97b-f2ed-450b-b12d-ee082ba24781}": {
621 "userDisabled": true,
622 "appDisabled": false,
623 "name": "Greasemonkey",
624 "version": "1.14",
625 "type": "extension",
626 "scope": 1,
627 "description": "A User Script Manager for Firefox",
628 "foreignInstall": false,
629 "hasBinaryComponents": false,
630 "installDay": 16093,
631 "updateDay": 16093
632 }
633 }
634
635 org.mozilla.addons.plugins
636 -------------------------
637
638 This measurement contains information about the currently-installed plugins.
639
640 Version 1
641 ^^^^^^^^^
642
643 The measurement object is a mapping of plugin IDs to objects containing
644 plugin metadata.
645
646 The plugin ID is constructed of the plugins filename, name, version and
647 description. Every plugin has at least a filename and a name.
648
649 Each plugin contains the following properties:
650
651 * name
652 * version
653 * description
654 * blocklisted
655 * disabled
656 * clicktoplay
657 * mimeTypes
658 * updateDay
659
660 With the exception of *updateDay* and *mimeTypes*, all these properties come
661 directly from ``nsIPluginTag`` via ``nsIPluginHost``.
662 *updateDay* is the number of days since UNIX epoch of the plugins last modified
663 time.
664 *mimeTypes* is the list of mimetypes the plugin supports, see
665 ``nsIPluginTag.getMimeTypes()`.
666
667 Example
668 ^^^^^^^
669
670 ::
671
672 "org.mozilla.addons.plugins": {
673 "_v": 1,
674 "Flash Player.plugin:Shockwave Flash:12.0.0.38:Shockwave Flash 12.0 r0": {
675 "mimeTypes": [
676 "application/x-shockwave-flash",
677 "application/futuresplash"
678 ],
679 "name": "Shockwave Flash",
680 "version": "12.0.0.38",
681 "description": "Shockwave Flash 12.0 r0",
682 "blocklisted": false,
683 "disabled": false,
684 "clicktoplay": false
685 },
686 "Default Browser.plugin:Default Browser Helper:537:Provides information about the default web browser": {
687 "mimeTypes": [
688 "application/apple-default-browser"
689 ],
690 "name": "Default Browser Helper",
691 "version": "537",
692 "description": "Provides information about the default web browser",
693 "blocklisted": false,
694 "disabled": true,
695 "clicktoplay": false
696 }
697 }
698
699 org.mozilla.addons.counts
700 -------------------------
701
702 This measurement contains information about historical add-on counts.
703
704 Version 1
705 ^^^^^^^^^
706
707 The measurement object consists of counts of different add-on types. The
708 properties are:
709
710 extension
711 Integer count of installed extensions.
712 plugin
713 Integer count of installed plugins.
714 theme
715 Integer count of installed themes.
716 lwtheme
717 Integer count of installed lightweigh themes.
718
719 Notes
720 ^^^^^
721
722 Add-ons opted out of AMO updates are included in the counts. This differs from
723 the behavior of the active add-ons measurement.
724
725 If no add-ons of a particular type are installed, the property for that type
726 will not be present (as opposed to an explicit property with value of 0).
727
728 Example
729 ^^^^^^^
730
731 ::
732
733 "2013-03-14": {
734 "org.mozilla.addons.counts": {
735 "_v": 1,
736 "extension": 21,
737 "plugin": 4,
738 "theme": 1
739 }
740 }
741
742
743
744 org.mozilla.appInfo.appinfo
745 ---------------------------
746
747 This measurement contains basic XUL application and Gecko platform
748 information. It is reported in the *last* section.
749
750 Version 2
751 ^^^^^^^^^
752
753 In addition to fields present in version 1, this version has the following
754 fields appearing in the *days* section:
755
756 isBlocklistEnabled
757 Whether the blocklist ping is enabled. This is an integer, 0 or 1.
758 This does not indicate whether the blocklist ping was sent but merely
759 whether the application will try to send the blocklist ping.
760
761 isTelemetryEnabled
762 Whether Telemetry is enabled. This is an integer, 0 or 1.
763
764 Version 1
765 ^^^^^^^^^
766
767 The measurement object contains mostly string values describing the
768 current application and build. The properties are:
769
770 * vendor
771 * name
772 * id
773 * version
774 * appBuildID
775 * platformVersion
776 * platformBuildID
777 * os
778 * xpcomabi
779 * updateChannel
780 * distributionID
781 * distributionVersion
782 * hotfixVersion
783 * locale
784 * isDefaultBrowser
785
786 Notes
787 ^^^^^
788
789 All of the properties appear in the *last* section except for
790 *isDefaultBrowser*, which appears under *days*.
791
792 Example
793 ^^^^^^^
794
795 This example comes from an official OS X Nightly build::
796
797 "org.mozilla.appInfo.appinfo": {
798 "_v": 1,
799 "appBuildID": "20130311030946",
800 "distributionID": "",
801 "distributionVersion": "",
802 "hotfixVersion": "",
803 "id": "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
804 "locale": "en-US",
805 "name": "Firefox",
806 "os": "Darwin",
807 "platformBuildID": "20130311030946",
808 "platformVersion": "22.0a1",
809 "updateChannel": "nightly",
810 "vendor": "Mozilla",
811 "version": "22.0a1",
812 "xpcomabi": "x86_64-gcc3"
813 },
814
815 org.mozilla.appInfo.update
816 --------------------------
817
818 This measurement contains information about the application update mechanism
819 in the application.
820
821 Version 1
822 ^^^^^^^^^
823
824 The following daily values are reported:
825
826 enabled
827 Whether automatic application update checking is enabled. 1 for yes,
828 0 for no.
829 autoDownload
830 Whether automatic download of available updates is enabled.
831
832 Notes
833 ^^^^^
834
835 This measurement was merged to mozilla-central for JS FHR on 2013-07-15.
836
837 Example
838 ^^^^^^^
839
840 ::
841
842 "2013-07-15": {
843 "org.mozilla.appInfo.update": {
844 "_v": 1,
845 "enabled": 1,
846 "autoDownload": 1,
847 }
848 }
849
850 org.mozilla.appInfo.versions
851 ----------------------------
852
853 This measurement contains a history of application version numbers.
854
855 Version 2
856 ^^^^^^^^^
857
858 Version 2 reports more fields than version 1 and is not backwards compatible.
859 The following fields are present in version 2:
860
861 appVersion
862 An array of application version strings.
863 appBuildID
864 An array of application build ID strings.
865 platformVersion
866 An array of platform version strings.
867 platformBuildID
868 An array of platform build ID strings.
869
870 When the application is upgraded, the new version and/or build IDs are
871 appended to their appropriate fields.
872
873 Version 1
874 ^^^^^^^^^
875
876 When the application version (*version* from *org.mozilla.appinfo.appinfo*)
877 changes, we record the new version on the day the change was seen. The new
878 versions for a day are recorded in an array under the *version* property.
879
880 Notes
881 ^^^^^
882
883 If the application isn't upgraded, this measurement will not be present.
884 This means this measurement will not be present for most days if a user is
885 on the release channel (since updates are typically released every 6 weeks).
886 However, users on the Nightly and Aurora channels will likely have a lot
887 of these entries since those builds are updated every day.
888
889 Values for this measurement are collected when performing the daily
890 collection (typically occurs at upload time). As a result, it's possible
891 the actual upgrade day may not be attributed to the proper day - the
892 reported day may lag behind.
893
894 The app and platform versions and build IDs should be identical for most
895 clients. If they are different, we are possibly looking at a *Frankenfox*.
896
897 Example
898 ^^^^^^^
899
900 ::
901
902 "2013-03-27": {
903 "org.mozilla.appInfo.versions": {
904 "_v": 2,
905 "appVersion": [
906 "22.0.0"
907 ],
908 "appBuildID": [
909 "20130325031100"
910 ],
911 "platformVersion": [
912 "22.0.0"
913 ],
914 "platformBuildID": [
915 "20130325031100"
916 ]
917 }
918 }
919
920 org.mozilla.appSessions.current
921 -------------------------------
922
923 This measurement contains information about the currently running XUL
924 application's session.
925
926 Version 3
927 ^^^^^^^^^
928
929 This measurement has the following properties:
930
931 startDay
932 Integer days since UNIX epoch when this session began.
933 activeTicks
934 Integer count of *ticks* the session was active for. Gecko periodically
935 sends out a signal when the session is active. Session activity
936 involves keyboard or mouse interaction with the application. Each tick
937 represents a window of 5 seconds where there was interaction.
938 totalTime
939 Integer seconds the session has been alive.
940 main
941 Integer milliseconds it took for the Gecko process to start up.
942 firstPaint
943 Integer milliseconds from process start to first paint.
944 sessionRestored
945 Integer milliseconds from process start to session restore.
946
947 Example
948 ^^^^^^^
949
950 ::
951
952 "org.mozilla.appSessions.current": {
953 "_v": 3,
954 "startDay": 15775,
955 "activeTicks": 4282,
956 "totalTime": 249422,
957 "main": 851,
958 "firstPaint": 3271,
959 "sessionRestored": 5998
960 }
961
962 org.mozilla.appSessions.previous
963 --------------------------------
964
965 This measurement contains information about previous XUL application sessions.
966
967 Version 3
968 ^^^^^^^^^
969
970 This measurement contains per-day lists of all the sessions started on that
971 day. The following properties may be present:
972
973 cleanActiveTicks
974 Active ticks of sessions that were properly shut down.
975 cleanTotalTime
976 Total number of seconds for sessions that were properly shut down.
977 abortedActiveTicks
978 Active ticks of sessions that were not properly shut down.
979 abortedTotalTime
980 Total number of seconds for sessions that were not properly shut down.
981 main
982 Time in milliseconds from process start to main process initialization.
983 firstPaint
984 Time in milliseconds from process start to first paint.
985 sessionRestored
986 Time in milliseconds from process start to session restore.
987
988 Notes
989 ^^^^^
990
991 Sessions are recorded on the date on which they began.
992
993 If a session was aborted/crashed, the total time may be less than the actual
994 total time. This is because we don't always update total time during periods
995 of inactivity and the abort/crash could occur after a long period of idle,
996 before we've updated the total time.
997
998 The lengths of the arrays for {cleanActiveTicks, cleanTotalTime},
999 {abortedActiveTicks, abortedTotalTime}, and {main, firstPaint, sessionRestored}
1000 should all be identical.
1001
1002 The length of the clean sessions plus the length of the aborted sessions should
1003 be equal to the length of the {main, firstPaint, sessionRestored} properties.
1004
1005 It is not possible to distinguish the main, firstPaint, and sessionRestored
1006 values from a clean vs aborted session: they are all lumped together.
1007
1008 For sessions spanning multiple UTC days, it's not possible to know which
1009 days the session was active for. It's possible a week long session only
1010 had activity for 2 days and there's no way for us to tell which days.
1011
1012 Example
1013 ^^^^^^^
1014
1015 ::
1016
1017 "org.mozilla.appSessions.previous": {
1018 "_v": 3,
1019 "cleanActiveTicks": [
1020 78,
1021 1785
1022 ],
1023 "cleanTotalTime": [
1024 4472,
1025 88908
1026 ],
1027 "main": [
1028 32,
1029 952
1030 ],
1031 "firstPaint": [
1032 2755,
1033 3497
1034 ],
1035 "sessionRestored": [
1036 5149,
1037 5520
1038 ]
1039 }
1040
1041 org.mozilla.crashes.crashes
1042 ---------------------------
1043
1044 This measurement contains a historical record of application crashes.
1045
1046 Version 2
1047 ^^^^^^^^^
1048
1049 The switch to version 2 coincides with the introduction of the
1050 :ref:`crashes_crashmanager`, which provides a more robust source of
1051 crash data.
1052
1053 This measurement will be reported on each day there was a crash. The
1054 following fields may be present in each record:
1055
1056 mainCrash
1057 The number of main process crashes that occurred on the given day.
1058
1059 Yes, version 2 does not track submissions like version 1. It is very
1060 likely submissions will be re-added later.
1061
1062 Also absent from version 2 are plugin crashes and hangs. These will be
1063 re-added, likely in version 3.
1064
1065 Version 1
1066 ^^^^^^^^^
1067
1068 This measurement will be reported on each day there was a crash. The
1069 following properties are reported:
1070
1071 pending
1072 The number of crash reports that haven't been submitted.
1073 submitted
1074 The number of crash reports that were submitted.
1075
1076 Notes
1077 ^^^^^
1078
1079 Main process crashes are typically submitted immediately after they
1080 occur (by checking a box in the crash reporter, which should appear
1081 automatically after a crash). If the crash reporter submits the crash
1082 successfully, we get a submitted crash. Else, we leave it as pending.
1083
1084 A pending crash does not mean it will eventually be submitted.
1085
1086 Pending crash reports can be submitted post-crash by going to
1087 about:crashes.
1088
1089 If a pending crash is submitted via about:crashes, the submitted count
1090 increments but the pending count does not decrement. This is because FHR
1091 does not know which pending crash was just submitted and therefore it does
1092 not know which day's pending crash to decrement.
1093
1094 Example
1095 ^^^^^^^
1096
1097 ::
1098
1099 "org.mozilla.crashes.crashes": {
1100 "_v": 1,
1101 "pending": 1,
1102 "submitted": 2
1103 },
1104 "org.mozilla.crashes.crashes": {
1105 "_v": 2,
1106 "mainCrash": 2
1107 }
1108
1109 org.mozilla.healthreport.submissions
1110 ------------------------------------
1111
1112 This measurement contains a history of FHR's own data submission activity.
1113 It was added in Firefox 23 in early May 2013.
1114
1115 Version 2
1116 ^^^^^^^^^
1117
1118 This is the same as version 1 except an additional field has been added.
1119
1120 uploadAlreadyInProgress
1121 A request for upload was initiated while another upload was in progress.
1122 This should not occur in well-behaving clients. It (along with a lock
1123 preventing simultaneous upload) was added to ensure this never occurs.
1124
1125 Version 1
1126 ^^^^^^^^^
1127
1128 Daily counts of upload events are recorded.
1129
1130 firstDocumentUploadAttempt
1131 An attempt was made to upload the client's first document to the server.
1132 These are uploads where the client is not aware of a previous document ID
1133 on the server. Unless the client had disabled upload, there should be at
1134 most one of these in the history of the client.
1135
1136 continuationUploadAttempt
1137 An attempt was made to upload a document that replaces an existing document
1138 on the server. Most upload attempts should be attributed to this as opposed
1139 to *firstDocumentUploadAttempt*.
1140
1141 uploadSuccess
1142 The upload attempt recorded by *firstDocumentUploadAttempt* or
1143 *continuationUploadAttempt* was successful.
1144
1145 uploadTransportFailure
1146 An upload attempt failed due to transport failure (network unavailable,
1147 etc).
1148
1149 uploadServerFailure
1150 An upload attempt failed due to a server-reported failure. Ideally these
1151 are failures reported by the FHR server itself. However, intermediate
1152 proxies, firewalls, etc may trigger this depending on how things are
1153 configured.
1154
1155 uploadClientFailure
1156 An upload attempt failued due to an error/exception in the client.
1157 This almost certainly points to a bug in the client.
1158
1159 The result for an upload attempt is always attributed to the same day as
1160 the attempt, even if the result occurred on a different day from the attempt.
1161 Therefore, the sum of the result counts should equal the result of the attempt
1162 counts.
1163
1164 org.mozilla.places.places
1165 -------------------------
1166
1167 This measurement contains information about the Places database (where Firefox
1168 stores its history and bookmarks).
1169
1170 Version 1
1171 ^^^^^^^^^
1172
1173 Daily counts of items in the database are reported in the following properties:
1174
1175 bookmarks
1176 Integer count of bookmarks present.
1177 pages
1178 Integer count of pages in the history database.
1179
1180 Example
1181 ^^^^^^^
1182
1183 ::
1184
1185 "org.mozilla.places.places": {
1186 "_v": 1,
1187 "bookmarks": 388,
1188 "pages": 94870
1189 }
1190
1191 org.mozilla.profile.age
1192 -----------------------
1193
1194 This measurement contains information about the current profile's age.
1195
1196 Version 1
1197 ^^^^^^^^^
1198
1199 A single *profileCreation* property is present. It defines the integer
1200 days since UNIX epoch that the current profile was created.
1201
1202 Notes
1203 ^^^^^
1204
1205 It is somewhat difficult to obtain a reliable *profile born date* due to a
1206 number of factors.
1207
1208 Example
1209 ^^^^^^^
1210
1211 ::
1212
1213 "org.mozilla.profile.age": {
1214 "_v": 1,
1215 "profileCreation": 15176
1216 }
1217
1218 org.mozilla.searches.counts
1219 ---------------------------
1220
1221 This measurement contains information about searches performed in the
1222 application.
1223
1224 Version 2
1225 ^^^^^^^^^
1226
1227 This behaves like version 1 except we added all search engines that
1228 Mozilla has a partner agreement with. Like version 1, we concatenate
1229 a search engine ID with a search origin.
1230
1231 Another difference with version 2 is we should no longer misattribute
1232 a search to the *other* bucket if the search engine name is localized.
1233
1234 The set of search engine providers is:
1235
1236 * amazon-co-uk
1237 * amazon-de
1238 * amazon-en-GB
1239 * amazon-france
1240 * amazon-it
1241 * amazon-jp
1242 * amazondotcn
1243 * amazondotcom
1244 * amazondotcom-de
1245 * aol-en-GB
1246 * aol-web-search
1247 * bing
1248 * eBay
1249 * eBay-de
1250 * eBay-en-GB
1251 * eBay-es
1252 * eBay-fi
1253 * eBay-france
1254 * eBay-hu
1255 * eBay-in
1256 * eBay-it
1257 * google
1258 * google-jp
1259 * google-ku
1260 * google-maps-zh-TW
1261 * mailru
1262 * mercadolibre-ar
1263 * mercadolibre-cl
1264 * mercadolibre-mx
1265 * seznam-cz
1266 * twitter
1267 * twitter-de
1268 * twitter-ja
1269 * yahoo
1270 * yahoo-NO
1271 * yahoo-answer-zh-TW
1272 * yahoo-ar
1273 * yahoo-bid-zh-TW
1274 * yahoo-br
1275 * yahoo-ch
1276 * yahoo-cl
1277 * yahoo-de
1278 * yahoo-en-GB
1279 * yahoo-es
1280 * yahoo-fi
1281 * yahoo-france
1282 * yahoo-fy-NL
1283 * yahoo-id
1284 * yahoo-in
1285 * yahoo-it
1286 * yahoo-jp
1287 * yahoo-jp-auctions
1288 * yahoo-mx
1289 * yahoo-sv-SE
1290 * yahoo-zh-TW
1291 * yandex
1292 * yandex-ru
1293 * yandex-slovari
1294 * yandex-tr
1295 * yandex.by
1296 * yandex.ru-be
1297
1298 And of course, *other*.
1299
1300 The sources for searches remain:
1301
1302 * abouthome
1303 * contextmenu
1304 * searchbar
1305 * urlbar
1306
1307 The measurement will only be populated with providers and sources that
1308 occurred that day.
1309
1310 If a user switches locales, searches from default providers on the older
1311 locale will still be supported. However, if that same search engine is
1312 added by the user to the new build and is *not* a default search engine
1313 provider, its searches will be attributed to the *other* bucket.
1314
1315 Version 1
1316 ^^^^^^^^^
1317
1318 We record counts of performed searches grouped by search engine and search
1319 origin. Only search engines with which Mozilla has a business relationship
1320 are explicitly counted. All other search engines are grouped into an
1321 *other* bucket.
1322
1323 The following search engines are explicitly counted:
1324
1325 * Amazon.com
1326 * Bing
1327 * Google
1328 * Yahoo
1329 * Other
1330
1331 The following search origins are distinguished:
1332
1333 about:home
1334 Searches initiated from the search text box on about:home.
1335 context menu
1336 Searches initiated from the context menu (highlight text, right click,
1337 and select "search for...")
1338 search bar
1339 Searches initiated from the search bar (the text field next to the
1340 Awesomebar)
1341 url bar
1342 Searches initiated from the awesomebar/url bar.
1343
1344 Due to the localization of search engine names, non en-US locales may wrongly
1345 attribute searches to the *other* bucket. This is fixed in version 2.
1346
1347 Example
1348 ^^^^^^^
1349
1350 ::
1351
1352 "org.mozilla.searches.counts": {
1353 "_v": 1,
1354 "google.searchbar": 3,
1355 "google.urlbar": 7
1356 },
1357
1358 org.mozilla.searches.engines
1359 ----------------------------
1360
1361 This measurement contains information about search engines.
1362
1363 Version 1
1364 ^^^^^^^^^
1365
1366 This version debuted with Firefox 31 on desktop. It contains the
1367 following properties:
1368
1369 default
1370 Daily string identifier or name of the default search engine provider.
1371
1372 This field will only be collected if Telemetry is enabled. If
1373 Telemetry is enabled and then later disabled, this field may
1374 disappear from future days in the payload.
1375
1376 The special value ``NONE`` could occur if there is no default search
1377 engine.
1378
1379 The special value ``UNDEFINED`` could occur if a default search
1380 engine exists but its identifier could not be determined.
1381
1382 This field's contents are
1383 ``Services.search.defaultEngine.identifier`` (if defined) or
1384 ``"other-"`` + ``Services.search.defaultEngine.name`` if not.
1385 In other words, search engines without an ``.identifier``
1386 are prefixed with ``other-``.
1387
1388 org.mozilla.sync.sync
1389 ---------------------
1390
1391 This daily measurement contains information about the Sync service.
1392
1393 Values should be recorded for every day FHR measurements occurred.
1394
1395 Version 1
1396 ^^^^^^^^^
1397
1398 This version debuted with Firefox 30 on desktop. It contains the following
1399 properties:
1400
1401 enabled
1402 Daily numeric indicating whether Sync is configured and enabled. 1 if so,
1403 0 otherwise.
1404
1405 preferredProtocol
1406 String version of the maximum Sync protocol version the client supports.
1407 This will be ``1.1`` for for legacy Sync and ``1.5`` for clients that
1408 speak the Firefox Accounts protocol.
1409
1410 actualProtocol
1411 The actual Sync protocol version the client is configured to use.
1412
1413 This will be ``1.1`` if the client is configured with the legacy Sync
1414 service or if the client only supports ``1.1``.
1415
1416 It will be ``1.5`` if the client supports ``1.5`` and either a) the
1417 client is not configured b) the client is using Firefox Accounts Sync.
1418
1419 syncStart
1420 Count of sync operations performed.
1421
1422 syncSuccess
1423 Count of sync operations that completed successfully.
1424
1425 syncError
1426 Count of sync operations that did not complete successfully.
1427
1428 This is a measure of overall sync success. This does *not* reflect
1429 recoverable errors (such as record conflict) that can occur during
1430 sync. This is thus a rough proxy of whether the sync service is
1431 operating without error.
1432
1433 org.mozilla.sync.devices
1434 ------------------------
1435
1436 This daily measurement contains information about the device type composition
1437 for the configured Sync account.
1438
1439 Version 1
1440 ^^^^^^^^^
1441
1442 Version 1 was introduced with Firefox 30.
1443
1444 Field names are dynamic according to the client-reported device types from
1445 Sync records. All fields are daily last seen integer values corresponding to
1446 the number of devices of that type.
1447
1448 Common values include:
1449
1450 desktop
1451 Corresponds to a Firefox desktop client.
1452
1453 mobile
1454 Corresponds to a Fennec client.
1455
1456 org.mozilla.sysinfo.sysinfo
1457 ---------------------------
1458
1459 This measurement contains basic information about the system the application
1460 is running on.
1461
1462 Version 2
1463 ^^^^^^^^^
1464
1465 This version debuted with Firefox 29 on desktop.
1466
1467 A single property was introduced.
1468
1469 isWow64
1470 If present, this property indicates whether the machine supports WoW64.
1471 This property can be used to identify whether the host machine is 64-bit.
1472
1473 This property is only present on Windows machines. It is the preferred way
1474 to identify 32- vs 64-bit support in that environment.
1475
1476 Version 1
1477 ^^^^^^^^^
1478
1479 The following properties may be available:
1480
1481 cpuCount
1482 Integer number of CPUs/cores in the machine.
1483 memoryMB
1484 Integer megabytes of memory in the machine.
1485 manufacturer
1486 The manufacturer of the device.
1487 device
1488 The name of the device (like model number).
1489 hardware
1490 Unknown.
1491 name
1492 OS name.
1493 version
1494 OS version.
1495 architecture
1496 OS architecture that the application is built for. This is not the
1497 actual system architecture.
1498
1499 Example
1500 ^^^^^^^
1501
1502 ::
1503
1504 "org.mozilla.sysinfo.sysinfo": {
1505 "_v": 1,
1506 "cpuCount": 8,
1507 "memoryMB": 8192,
1508 "architecture": "x86-64",
1509 "name": "Darwin",
1510 "version": "12.2.0"
1511 }
1512
1513
1514
1515 org.mozilla.experiments.info
1516 ----------------------------------
1517
1518 Daily measurement reporting information about the Telemetry Experiments service.
1519
1520 Version 1
1521 ^^^^^^^^^
1522
1523 Property:
1524
1525 lastActive
1526 ID of the final Telemetry Experiment that is active on a given day, if any.
1527
1528
1529 Version 2
1530 ^^^^^^^^^
1531
1532 Adds an additional optional property:
1533
1534 lastActiveBranch
1535 If the experiment uses branches, the branch identifier string.
1536
1537 Example
1538 ^^^^^^^
1539
1540 ::
1541
1542 "org.mozilla.experiments.info": {
1543 "_v": 2,
1544 "lastActive": "some.experiment.id",
1545 "lastActiveBranch": "control"
1546 }
1547

mercurial