I'm hoping we can get permission to provide this view on Tool Labs without a whitelist of keys like that and instead allow all, or at least a more liberal subset.

The main request is to provide what Toolserver provided which is:

An anonimized view of the user_properties table with an extra column that shows the date (not the time) of when the associated user was last active (which allows consumers of the data to focus on (or reject) recently active users vs. abandoned user accounts).

The raw user_properties database in Wikimedia production contains:

- up_user: The user_id of the user, this must of course not be exposed
   because that would allow consumers of the data to know which preferences
   belong to the same user, and in addition, since user ids are already public,
   to also know which user it belongs to).

- up_property: The preference names (disablemail, gender, language, skin, gadget-Foo, gadget-Bar etc.)

- up_value: The value of the preference. For most preferences these are boolean values (0 of off, 1 for on). Others are one of a finite set of values (like "language" and "skin"). And then there are some that take free numerical input (like "rclimit" which can be any number, e.g. 10 or 500, for the number of results to show by default on Special:Search or Special:RecentChanges). And lastly, there are some that take free textual input (like nickname and fancysig). This last category is usually identifying to a person. So I could understand why one might keep these hidden (though Luis already said those two were fine). I imagine it's fine because they're public (people use their signature and nickname all the time), and anonymised (not connected to other preferences of that same user).

Of these, the anonimized view would expose:

- up_property
- up_value

This will allow tools to know how popular certain preferences are (e.g. How many people use the Monobook skin, How many people change their interface language to French on German Wikipedia). I think however that this view should not be restricted to certain preferences. Especially because:

 1) Extensions and core add new preferences all the time.

 2) Gadgets are enabled through preferences as well, so if we do use a
    whitelist, it should whitelist any preference starting with "gadget-*".

 3) BetaFeatures also comes and goes with new preferences.
    The case of BetaFeatures is interesting, because it actually tracks
    and exposes the usage of its own preferences publicly (doesn't even
    require making a Tool of some kind).


In addition to these two columns, it would be very useful to have some kind of indicator to interpret these values. Toolserver did this by adding a shadow column showing a trimmed part of the timestamp of when the associated user was last active (trimmed to only show the date in YYYY-MM-DD, not the exact time of day). With this, statistics about preferences are much more useful due to the large number of abandoned accounts polluting the results.

Here's a query showing which keys are currently exposed in Toolserver's  user_properties_anonym table:

krinkle at willow.toolserver.org$ sql nlwiki_p
mysql> SELECT DISTINCT(up_property) FROM user_properties_anonym;
+-----------------------------------------+
| up_property                             |
+-----------------------------------------+
| ajaxsearch                              |
| autopatrol                              |
| ccmeonemails                            |
| cols                                    |
| contextchars                            |
| contextlines                            |
| date                                    |
| diffonly                                |
| disablemail                             |
| disablesuggest                          |
| echo-email-format                       |
| echo-email-frequency                    |
| echo-show-alert                         |
| echo-subscriptions-email-article-linked |
| echo-subscriptions-email-edit-thank     |
| echo-subscriptions-email-mention        |
| echo-subscriptions-email-reverted       |
| echo-subscriptions-web-article-linked   |
| echo-subscriptions-web-edit-thank       |
| echo-subscriptions-web-mention          |
| echo-subscriptions-web-reverted         |
| editfont                                |
| editondblclick                          |
| editsection                             |
| editsectiononrightclick                 |
| editwidth                               |
| enotifminoredits                        |
| enotifrevealaddr                        |
| enotifusertalkpages                     |
| enotifwatchlistpages                    |
| extendwatchlist                         |
| externaldiff                            |
| externaleditor                          |
| fancysig                                |
| forceeditsummary                        |
| gadget-Achtergrondkleur                 |
| gadget-Berichtbalk                      |
| gadget-Diffkleuren                      |
| gadget-Extra_bewerkingsknoppen          |
| gadget-fixhoofdbetekenis                |
| gadget-Geavanceerde_bijdragen           |
| gadget-HideFundraiser                   |
| gadget-HotCat                           |
| gadget-IProject                         |
| gadget-Navigatie_popups                 |
| gadget-purgelink                        |
| gadget-ReferenceTooltips                |
| gadget-Twinkle                          |
| gadget-UTCLiveClock                     |
| gender                                  |
| hideminor                               |
| hidepatrolled                           |
| highlightbroken                         |
| hover                                   |
| imagesize                               |
| justify                                 |
| language                                |
| math                                    |
| minordefault                            |
| newpageshidepatrolled                   |
| nocache                                 |
| norollbackdiff                          |
| numberheadings                          |
| previewonfirst                          |
| previewontop                            |
| quickbar                                |
| rcdays                                  |
| rclimit                                 |
| rememberpassword                        |
| searcheverything                        |
| searchlimit                             |
| searchNs-1                              |
| showhiddencats                          |
| showjumplinks                           |
| shownumberswatching                     |
| showtoc                                 |
| showtoolbar                             |
| skin                                    |
| stubthreshold                           |
| thumbsize                               |
| timecorrection                          |
| underline                               |
| usebetatoolbar                          |
| usebetatoolbar-cgd                      |
| useeditwarning                          |
| uselivepreview                          |
| usenewrc                                |
| variant                                 |
| vector-noexperiments                    |
| visualeditor-enable                     |
| watchcreations                          |
| watchdefault                            |
| watchdeletion                           |
| watchlistdays                           |
| watchlisthideanons                      |
| watchlisthidebots                       |
| watchlisthideliu                        |
| watchlisthideminor                      |
| watchlisthideown                        |
| watchlisthidepatrolled                  |
| watchmoves                              |
| wllimit                                 |
+-----------------------------------------+
102 rows in set


Are there any preferences we would explicitly not want to expose?