Campbell et al v. Facebook Inc.
Filing
184
EXHIBITS re 181 Administrative Motion to Seal Documents Accompanying Class Certification Briefs and Evidentiary Objections filed by Facebook Inc.. (Attachments: # 1 Exhibit 53 (Redacted), # 2 Exhibit 54 (Unredacted), # 3 Exhibit 55 (Redacted), # 4 Exhibit 56 (Unredacted), # 5 Exhibit 57 (Redacted), # 6 Exhibit 58 (Unredacted), # 7 Exhibit 59 (Redacted), # 8 Exhibit 60 (Unredacted), # 9 Exhibit 61 (Redacted), # 10 Exhibit 62 (Unredacted), # 11 Exhibit 63 (Redacted), # 12 Exhibit 64 (Unredacted), # 13 Exhibit 65 (Redacted), # 14 Exhibit 66 (Unredacted), # 15 Exhibit 67 (Redacted), # 16 Exhibit 68 (Unredacted), # 17 Exhibit 69 (Redacted), # 18 Exhibit 70 (Unredacted), # 19 Exhibit 71 (Redacted), # 20 Exhibit 72 (Unredacted), # 21 Exhibit 73 (Redacted), # 22 Proof of Service)(Related document(s) 181 ) (Chorba, Christopher) (Filed on 3/28/2016) Modified on 3/29/2016 (kcS, COURT STAFF).
1
2
3
4
5
6
7
8
9
10
11
12
13
GIBSON, DUNN & CRUTCHER LLP
JOSHUA A. JESSEN, SBN 222831
JJessen@gibsondunn.com
JEANA BISNAR MAUTE, SBN 290573
JBisnarMaute@gibsondunn.com
PRIYANKA RAJAGOPALAN, SBN 278504
PRajagopalan@gibsondunn.com
ASHLEY M. ROGERS, SBN 286252
ARogers@gibsondunn.com
1881 Page Mill Road
Palo Alto, California 94304
Telephone: (650) 849-5300
Facsimile: (650) 849-5333
GIBSON, DUNN & CRUTCHER LLP
CHRISTOPHER CHORBA, SBN 216692
CChorba@gibsondunn.com
333 South Grand Avenue
Los Angeles, California 90071
Telephone: (213) 229-7000
Facsimile: (213) 229-7520
Attorneys for Defendant
FACEBOOK, INC.
14
UNITED STATES DISTRICT COURT
15
NORTHERN DISTRICT OF CALIFORNIA
16
OAKLAND DIVISON
17
18
19
20
21
22
MATTHEW CAMPBELL and MICHAEL
HURLEY,
Plaintiffs,
v.
FACEBOOK, INC.,
Case No. C 13-05996 PJH (MEJ)
PUTATIVE CLASS ACTION
DECLARATION OF ALEX HIMEL IN
SUPPORT OF DEFENDANT FACEBOOK,
INC.’S OPPOSITION TO PLAINTIFFS’
MOTION FOR CLASS CERTIFICATION
Defendant.
23
24
25
26
27
28
Gibson, Dunn &
Crutcher LLP
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
Table of Contents
1
2
I.
Identifying Proposed Class Members ....................................................................................... 1
3
II.
Share Objects ............................................................................................................................ 3
A.
6
III.
Share Objects and Global Share Objects and Messages ............................................... 4
C.
5
Overview ....................................................................................................................... 3
B.
4
Variability in Connection with Share Objects .............................................................. 6
Global Share Object Counters................................................................................................... 8
7
A.
Overview ....................................................................................................................... 8
8
B.
Variability in Connection with Global Share Object Counters..................................... 9
9
IV.
A.
Plugin Count and Messages ........................................................................................ 11
C.
11
Overview ..................................................................................................................... 10
B.
10
12
Plugin Count ........................................................................................................................... 10
Variability in Connection with Plugin Count ............................................................. 12
V.
13
........................................................................................................................... 13
A.
Overview ..................................................................................................................... 13
14
B.
and Messages........................................................................................ 14
15
C.
16
VI.
............................................................. 14
Nectar ...................................................................................................................................... 15
A.
VII.
20
Nectar and Share Scrapes for Messages ..................................................................... 16
C.
18
Overview ..................................................................................................................... 15
B.
17
19
Variability in Connection with
Variability in Connection with Nectar ........................................................................ 16
Insights and Related APIs ....................................................................................................... 17
A.
Overview ..................................................................................................................... 17
21
B.
Insights and Related APIs and Messages .................................................................... 18
22
C.
Variability in Connection with Insights and Related APIs ......................................... 18
23
24
25
26
VIII.
“Link_Stats” and Graph API................................................................................................... 19
A.
Overview ..................................................................................................................... 19
B.
“Link_Stats” and Graph API and Messages ............................................................... 20
C.
Variability in Connection with “Link_Stats” & Graph API ....................................... 21
27
28
Gibson, Dunn &
Crutcher LLP
i
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
I, Alex Himel, declare as follows:
1.
2
I have been employed as a software engineer at Facebook since April 2009, and my
3
current title is Engineering Director. I am over the age of 18. From 2009-2014, I worked on
4
Facebook’s Developer Platform, and my work encompassed Facebook’s Social Plugins and Insights
5
features. I have personal knowledge of the matters stated herein and, if called as a witness, could and
6
would testify competently thereto.
2.
7
I provide this Declaration in support of Facebook’s Opposition to Plaintiffs’ Motion
8
for Class Certification, and to explain certain facts regarding Facebook’s software code as it relates to
9
Facebook’s share objects, Plugin Counters,
Hive table, “Nectar” logging of share scrape
10
events, Insights (including the user interface (“UI”), application program interface (“API”), and
11
dashboard, also referred to below as “Insights and Related APIs”), and other public APIs including
12
“link_stats” and Graph API. This Declaration also describes certain Facebook services related to
13
these functions, particularly as they relate to uniform resource locators (“URLs”) in messages sent
14
and received through the Facebook platform.
3.
15
16
I also understand that, on November 13, 2015, Plaintiffs filed a Motion seeking to
certify the following proposed class:
All natural-person Facebook users located within the United States who have sent, or
received from a Facebook user, private messages that included URLs in their content
(and from which Facebook generated a URL attachment), from within two years before
the filing of this action up through the date of the certification of the class.
17
18
19
20
I understand that Plaintiffs filed their action on December 30, 2013, and that therefore the relevant
21
period for Plaintiffs’ new purported class is December 30, 2011 to the present (the “Class Period”).
22
23
I.
Identifying Proposed Class Members
4.
To my knowledge, neither Facebook nor any other entity possesses the data that would
24
be required to identify all persons meeting Plaintiffs’ class definition. Facebook does not possess
25
records showing all users that sent or received a message that included a URL in its content and from
26
which Facebook generated a URL attachment. For example, people who included a URL in their
27
message, and for which a URL attachment was generated, but who deleted the attachment before
28
Gibson, Dunn &
Crutcher LLP
1
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
send, fall within Plaintiffs’ class as written. However, users’ messages on their face do not reflect
2
that information, and therefore even a manual, message-by-message review could not identify these
3
putative class members.
4
5.
Additionally, as discussed below, determining whether any given person was
5
subjected to the challenged practices would require a message-by-message inquiry. To my
6
knowledge, neither Facebook nor any other entity possesses the data that would be required to
7
determine whether any given person meeting this criteria was subjected to all the challenged
8
practices.
9
6.
In her report, Dr. Golbeck says that “to retrieve a list of class members, the Code
10
process should be relatively straightforward,” and that “a database query could be used to select the
11
Facebook user IDs of everyone whose actions had created an EntShare from a private message.”
12
(Golbeck Report ¶ 103.) In the next two paragraphs of her report, she provides “sample” code that
13
she contends would return a list of “Facebook user IDs of everyone whose actions had created an
14
EntShare from a private message,” and, in her deposition, she said that such a list would identify the
15
class members. (Golbeck Deposition Transcript at 331:2-8.)
16
7.
That is incorrect. This query would return a list of users that is both under- and over-
17
inclusive of the proposed class. For example, a share object does not include any information about
18
the recipients of the message sharing that URL. Therefore a query for IDs in share objects will not
19
include recipient class members. Also, Dr. Golbeck uses the “global” field in the share objects to
20
eliminate any global objects from showing in the results of her query, but the “global”’ field did not
21
exist in the share objects created early in the proposed class period, and would not have been
22
correctly set for those older objects. Thus, this query might incorrectly return global share objects
23
that were NOT generated by a URL shared in a message, or incorrectly exclude older share objects
24
without correct information in the “global” field.
25
8.
In addition, Facebook’s systems do not index the fields set out in Dr. Golbeck’s query;
26
in other words, there is no existing table of the key fields she is searching for that can be searched
27
quickly and efficiently. Instead, in order to accommodate her query, Facebook would have to load
28
Gibson, Dunn &
Crutcher LLP
2
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
every share object in its databases into memory sequentially and examine each object’s values to find
2
those containing a particular individual’s Facebook ID, in order to know whether that individual’s
3
message URL share had resulted in the creation of a share object. Facebook share objects comprise
4
two trillion database rows, distributed across 50,000 database machines. Searching those objects
5
would require writing queries to access every database, and to individually assess every share object
6
(as described above) in an object-by-object analysis.
7
9.
Further, the results of this query will include users who never typed a URL into a
8
message, and instead merely chose to “Share” a URL through a “Share” button on a third-party
9
website in a message. (Golbeck Deposition Transcript at 339:18-340:13.) The URL attachments to
10
11
these messages were not generated from text typed into a message.
II.
Share Objects
12
A.
Overview
13
10.
All information that users share through the Facebook platform, including messages
14
and all other information, is received by Facebook and stored on Facebook servers. Facebook must
15
receive and host all information shared on the site in order to provide its social-networking service.
16
Facebook also anonymizes and aggregates certain data in order to help facilitate users’ discovery of
17
potentially relevant and interesting information on the web at large. For example, Facebook offers a
18
“Like” button social plugin, which has been integrated into websites all over the world; if a user
19
clicks on the “Like” button, Facebook displays a “story” of that action on the users’ Timeline, and
20
Facebook keeps a count of the number of times that webpage has been “Liked” and provides some of
21
that data publicly in the aggregate.
22
11.
Another way that users interact with webpages is by “sharing” the URL to that
23
webpage, for example by copying and pasting the URL into a post or a message. Under certain
24
circumstances “sharing” a URL in that way will involve some specific processing, which, if
25
successful, may result in storing that event on a Facebook server as a “share.” As explained in
26
Facebook’s Second Supplemental Responses and Objections to Plaintiffs’ Narrowed Interrogatory
27
No. 8, attached as Exhibit MM, Facebook stores “shares” (whether in a post or in a message) as
28
Gibson, Dunn &
Crutcher LLP
3
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
“objects.” Generally, in computer science, “object” refers to data and software code grouped together
2
to make the process of writing and running source code efficient and effective. The concept of an
3
“object” is a basic element of what is widely referred to as “object-oriented code.” When certain
4
types of data are configured into a limited number of classes in this way, the code that actually
5
processes that data can be written more efficiently, which can improve speed and reduce errors.
6
Facebook’s “objects” group together data in order to make the operation of its software more
7
efficient.
8
9
12.
Facebook’s source code creates, stores, and accesses “objects” for innumerable
processes and purposes. For example, when a user copies and pastes a URL into a post, Facebook
10
stores the information about that users’ action of sharing that URL in a post in a “share object.”
11
There is nothing unusual or nefarious about the use of “objects”—which are merely a name for a
12
certain way of storing data—in software programming.
13
B.
Share Objects and Global Share Objects and Messages
14
13.
As explained in Facebook’s Supplemental Responses and Objections to Plaintiffs’
15
First Set of Interrogatories (attached as Exhibit NN), during the relevant period in this case, if a user
16
typed a URL into the text field in the Facebook Messages product, and the user had JavaScript
17
enabled in her browser, the JavaScript code running in the user’s browser may have detected the
18
existence of a URL and requested information from a Facebook server in order to provide a preview
19
of the typed URL (“URL preview”)—including a brief description of the URL and, if available, a
20
relevant image from the website. At the time the request was sent to Facebook for a preview,
21
Facebook assessed whether the URL was in its library of known malicious URLs. If it was,
22
Facebook would not return a preview; if it was not, Facebook may have returned information already
23
on a Facebook server to generate a preview.
24
14.
Or, if information to generate the URL preview was not available already on a
25
Facebook server, a Facebook server may have sent a request to the website, generated an image and
26
description if available, and delivered those components to the user’s browser to generate a URL
27
preview. Facebook sometimes refers to this function as its “share scraper.” When Facebook
28
Gibson, Dunn &
Crutcher LLP
4
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
“scrapes” a third-party website for the first time, it creates a record for that URL in its system, called
2
a “global share object.” The global share object stores the components necessary to generate URL
3
previews across the Facebook website.1 By storing these elements on a Facebook server, Facebook
4
can avoid scraping the website every time it needs to generate a preview, thereby reducing traffic and
5
allowing for faster and more efficient and effective preview generation. It also allows Facebook to
6
generate previews even when third-party websites have errors or down time. The purpose of a global
7
share object is not to track Facebook’s users’ interactions with URLs across the Web; rather, the
8
purpose is to efficiently and effectively store data about the URL, to make it easier to write and run
9
code that uses or presents information about that URL for myriad purposes ranging from site integrity
10
and security processes, to URL preview generation, and for other features and processes that present
11
information about that URL in compelling ways and at compelling times to the right users.
12
15.
Where available, URL previews helped users verify the URL they were sharing before
13
sending their messages. Whether or not a URL preview was generated depended on myriad factors,
14
such as the configuration of the user’s browser, the type of URL entered, the number of URLs
15
entered, and the speed of send, among other individualized factors. A URL preview is an attachment
16
to the draft message. Once the URL attachment was created, changes to the characters in the text
17
field of the draft message did not impact the URL attachment. Therefore, if someone using Facebook
18
deleted the URL in the text field of a message after a URL preview had been generated, the URL
19
preview would not have been deleted (unless the sender affirmatively deleted it).
20
16.
If a URL attachment was successfully created (and not deleted by the user) before the
21
message was sent, then, after the message was sent and the message and components were received
22
and stored on a Facebook server, and if the message was not blocked in the course of abuse- and
23
security-related processing, a “share object”2 may have been created reflecting the fact that the
24
1
25
26
27
28
Gibson, Dunn &
Crutcher LLP
2
In Facebook’s storage system, “global share objects” are typically accessed in the form of
“EntGlobalShares,” which represent the set of fields and data about that URL and about
engagement with that URL.
In Facebook’s storage system, “share objects” are typically accessed in the form of EntShares,
which represent the set of fields and data about that share event.
5
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
message had a URL as an attachment. These URL share objects are stored in a system called TAO.
2
If a URL preview was not created before the message was sent or was deleted by the user before
3
sending, no share object was created. Similarly, if a malicious message or URL was successfully
4
“blocked,” no share object was created. Share objects may also have been deleted if the user deleted
5
his message or account, or if data was lost.
6
17.
Another way to share a URL in a Facebook message was to click on the “Share”
7
button on a third-party website, and choose (from the options presented to the user) to share the URL
8
for that page in a Facebook message. In these circumstances, Facebook did not detect the URL from
9
any text written by the user; instead a preview was automatically generated (where possible),
10
11
generally with the URL for the page on which the “Share” button was displayed.
18.
When a URL attachment is successfully sent with a message, the share object is the
12
storage of the URL attachment to the message. When the sender or recipient of a message with a
13
URL attachment chooses to view the message, Facebook displays the message and the attachment.
14
The attachment is displayed from the information stored in the share object. If a share object is not
15
created for a URL attachment, or the share object is deleted, no URL attachment will reach the inbox
16
for the sender or the recipient. If a share object for a URL attachment is deleted, the URL attachment
17
can no longer be displayed to the sender or recipient. In Facebook’s source code, the share object is
18
necessary in order to deliver the URL attachment to the mailboxes for the sender and recipient, and it
19
is necessary in order to display the URL attachment to the sender and recipient after it is sent.
20
19.
The same processes for URL preview generation, and the same variability in those
21
processes described below, are applicable to URLs shared in Facebook posts as well as Facebook
22
messages.
23
C.
Variability in Connection with Share Objects
24
20.
A share object is not created every time a person includes a URL in a Facebook
25
message. Rather, a share object will not be created, even if there is a URL in a message, unless there
26
is a URL preview generated and successfully sent with the message. There are many circumstances
27
in which no URL preview will be generated, including if the user does not have JavaScript enabled,
28
Gibson, Dunn &
Crutcher LLP
6
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
there was more than one URL in the draft message (in which case a preview would only be generated
2
for the first URL), the preview was blocked by Facebook’s anti-abuse or security processes, or the
3
message was sent too quickly to generate a preview, among other reasons. There are also subtle
4
differences in how the user enters the URL that may impact whether a URL preview is generated.
5
For example, if a user copies and pastes a URL into a draft message, the process for generating a
6
preview will begin, whereas if a user manually types a URL into a draft message, but does not add a
7
space at the end of the URL before sending the message, no preview will be generated. Also,
8
messages sent from Facebook’s stand-alone messenger mobile application do not generate URL
9
attachments.
10
21.
Additionally, even if a URL preview attachment was generated, a share object may not
11
have been created. For example, if the user deleted the attachment before sending, no share object
12
was created. Additionally, if the message or attachment was blocked in the course of abuse- and
13
security-related processing, no share object was created. Share objects may also have been deleted if
14
the user deleted his message or account or data was lost.
15
22.
Taking all of this variation together, at a minimum, determining whether a user’s
16
inclusion of a URL in a Facebook message resulted in creation of a share object would involve the
17
following individualized inquiries for each message:
18
a.
Was the user using a browser that is JavaScript capable?
19
b.
Did the user have JavaScript enabled in her browser?
20
c.
Did the user paste in a URL or type a message including a URL and press
21
“space”?
22
d.
Did the user send the message too quickly to generate a preview?
23
e.
Did the user include more than one URL in the message?
24
f.
Did the user delete the URL text in the body of the message before sending?
25
g.
Was a URL preview successfully created?
26
h.
Was a URL preview created, but deleted prior to the message being sent?
27
i.
Was the URL or the message blocked by Facebook’s security-related or anti-
28
Gibson, Dunn &
Crutcher LLP
7
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
abuse processing?
2
3
j.
III.
Was the message sent from the messenger mobile application?
Global Share Object Counters
4
A.
Overview
5
23.
Global share objects contain a field called “tracking information,” which contains five
6
aggregate, anonymous counters named: share_count, post_count, like_count, comment_count, and
7
click_count. These internal counters are intended to aggregate the number of certain categories of
8
actions taken relating to that URL object.
9
24.
Share_count is the internal counter that attempts to keep track of the total number of
10
times a URL attachment was shared in a Facebook message or when a person chooses to send a URL
11
in a message through the “Share” button dialog on a third-party website. Post_count is the internal
12
counter that attempts to keep track of the total number of times a URL is posted in a person’s feed.
13
Like_count is the internal counter that attempts to keep track of the total number of times people have
14
clicked a “Like” button for that URL or “Liked” a story on a user’s Newsfeed with an attachment for
15
that URL. Comment_count is the internal counter that attempts to keep track of the total number of
16
times people have commented on that URL. Click_count is the internal counter that attempted to
17
keep track of the total number of times a URL was clicked on after being shared.
18
25.
The share_count is an entirely anonymous and aggregate counter. It does not identify
19
the people who shared the URL in a message, nor is there any association back to those people, the
20
messages containing the URL attachment, or any information about those user-specific share events.
21
A particular share object will have a field that includes the identifier for the relevant global share
22
object, but the reason for this is to provide a way to obtain information about the URL. For example,
23
to ensure that URL attachments in previously sent messages appear updated when a sender or
24
recipient looks at them later, the field with the identifier to the global share object provides an easy
25
way to get updated information about that URL (since the global share objects are updated regularly).
26
The relationship is not reciprocal, however, and it is generally not possible to determine from
27
share_count which people shared URL attachments in Facebook messages. While the global share
28
Gibson, Dunn &
Crutcher LLP
8
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
object has some fields for information about “associations” to specific persons who have engaged
2
with the URL in a public way (for example in a public post), it does not include associations to
3
people who only shared the URL in a message.
4
5
26.
There is also no data from which to identify persons whose sharing of URLs in
messages was included in the “share_count” in the global share object.
6
B.
Variability in Connection with Global Share Object Counters
7
27.
For people using Facebook who sent a message with a URL attachment, only those
8
people for whom the URL attachment actually resulted in the successful creation of a share object
9
even potentially could have had their URL share included in the share_count in the global share
10
object. Specifically, the share_count counter could have been incremented only based on the
11
generation of a share object, which, in a variety of instances, might never have been generated. For
12
instance, as discussed above, if the URL attachment were deleted by the user before sending the
13
message, no share object would have been created, and the counter in the global share object would
14
not have been incremented. Similarly, if the message or its attachments were blocked in the course of
15
abuse- and security-related processing, no share object would have been created, and the share_count
16
would not have been incremented.
28.
17
Additionally, even when a share object was created from a URL attachment to a
18
Facebook message, that action did not always result in an increment in the share_count in the global
19
share object. For example, global share objects were not generated for Facebook webpages, and thus
20
URL shares for Facebok websites did not increase the share_count in any global share object. Also,
21
race conditions, database failures, and database contention each may have resulted in failure to
22
increment the counters in share_count even where a share object was created.3 “Race” conditions
23
occur when multiple people share the same URL at the same time and Facebook only processes one
24
increment to the count; this happens more frequently when many people try to share at once.
25
26
27
28
Gibson, Dunn &
Crutcher LLP
3
Facebook’s system comprises tens of millions of lines of code, hundreds of thousands of servers
supporting over 1.5 billion people, and handling over 1 trillion requests each day. As with any
system of this size, it is expected that at least some machines will always be offline or not
functioning properly resulting in some error.
9
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
Database failure or contention can occur for many reasons, including the interplay between different
2
databases stored in different locations contributing to a single count.
3
29.
Taking all of this variation together, at a minimum, determining whether a person’s
4
inclusion of a URL in a message resulted in an increment of the anonymous, aggregate share_count
5
in the global share object for that URL would require the following individualized inquiries for each
6
message:
7
a.
When was the message sent?
8
b.
Was a share object successfully created for a URL attachment in that message?
9
(i.e., all the individualized inquiries in paragraph 22 above.)
10
c.
Was the URL to a third-party webpage (as opposed to a Facebook webpage)?
11
d.
Were race conditions present?
12
e.
Was there database failure?
13
f.
Was there database contention?
14
30.
To my knowledge, neither Facebook nor any other entity possesses the data that would
15
be required to ascertain the answers to the inquiries in paragraph 29, either on an individual or bulk
16
basis, for putative class members.
17
IV.
Plugin Count
18
A.
Overview
19
31.
During the proposed Class Period, Facebook offered websites “social plugins,” or
20
units of embeddable code that allow people to share information using Facebook directly from third-
21
party websites. For example, a third-party website may embed code for the Facebook “Like” button
22
plugin on its website, enabling people using Facebook to directly “Like” the website and to share that
23
action with their Facebook connections (without having to return to https://www.facebook.com or the
24
Facebook mobile app to share the content).
25
32.
The “Like” button plugin also may display an anonymous and aggregate count of all
26
“Likes” for that particular website. At different times, this aggregate count next to the plugin
27
(“Plugin Count”) may have included URLs (a) shared (in the NewsFeed), (b) commented on,
28
Gibson, Dunn &
Crutcher LLP
10
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
(c) liked, and (d) sent as an attachment to a message (and recorded as a share object). Or, depending
2
on how it was configured by the site owner, it may have displayed the number of “fans” for that page.
3
33.
Instructions for how to embed the “Like” button and Plugin Count into a website, and
4
an explanation of the components of the Plugin Count, were disclosed publicly in Facebook’s
5
developer guidance—one of the primary locations where Facebook explains the functionality of its
6
service to the public. For a period beginning at least as early as March 7, 2011, the developer
7
guidance included a section entitled “What makes up the number shown on my Like button?” and
8
explains that the number is “the sum of:
9
•
The number of likes of this URL
10
•
The number of shares of this URL (this includes copy/pasting a link back to Facebook
11
•
The number of likes and comments on stories on Facebook about this URL [and]
12
•
The number of inbox messages containing this URL as an attachment.”
13
B.
Plugin Count and Messages
14
34.
From the beginning of the Class Period until December 19, 2012, if the Facebook
15
Plugin Count next to a “Like” button for a third-party website was not configured to reflect its “fan
16
count,” it displayed the combination of the following fields from the counters in the global share
17
object record: share_count, like_count, comment_count, post_count.
18
35.
During that time period, the share_count reflected in the global share object record
19
attempted to reflect all instances of sharing a URL using the external Facebook “Share” button dialog
20
(and choosing to share in a Facebook message) and URL attachments for third-party webpages
21
shared in messages sent from the Facebook website that resulted in the creation of a share object.
22
Therefore, under certain circumstances, if a URL was shared in a message, a Plugin Count on a third-
23
party website may have been incremented.
24
36.
I understand that Plaintiffs’ expert, Dr. Jennifer Golbeck, has suggested that by
25
removing URL shares in messages from the Plugin Count (after that practice was the subject of
26
considerable national press attention) that Facebook simply “hid” that activity from the public.
27
(Golbeck Report ¶ 85.) This is false. Facebook does detect (and has detected) URLs in draft
28
Gibson, Dunn &
Crutcher LLP
11
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
messages (as it does all over the Facebook website) for a number of purposes, including for the
2
sharescrape process (which facilitates Facebook’s security and anti-abuse related processes and then
3
generates a URL preview for the sender) and in order to create a share object (which is necessary to
4
deliver the URL attachment to the inboxes of the sender and recipient). There is nothing unusual or
5
nefarious about Facebook taking note of its users’ experiences and preferences and the reaction of the
6
press. Facebook is sensitive to users’ feedback and regularly incorporates that feedback into its
7
design and engineering decisions.
8
C.
Variability in Connection with Plugin Count
9
37.
On December 19, 2012, I made a change to Facebook’s source code such that, if the
10
Facebook Plugin Count for a third-party website was not configured to reflect its “fan count,” it
11
displayed the combination of the following fields from the counters in the global share object record:
12
like_count, comment_count, post_count. As of the date of that change to the source code, Plugin
13
Counts displayed on third-party websites did not include the share_count from the global share object
14
and therefore did not reflect URLs shared in messages.
15
38.
As noted above, if a person using Facebook shared a URL through a message but no
16
share object was created, the sharing of that URL did not increment the share_count counter in the
17
global share object, nor any Plugin Count on the destination website. Also, if the share_count in the
18
global share object did not increment, for one of a number of reasons discussed above, the sharing of
19
that URL did not increment the Plugin Count on the website (even if a share object was created).
20
39.
Similarly, if the destination website associated with the URL did not display a
21
Facebook Plugin Count, the sharing of that URL did not increment the Plugin Count on the website
22
(even if a share object was created). And, if the Plugin Count was instead configured to display that
23
sites’ “fan” count, the sharing of that URL did not increment the Plugin Count on the website (even if
24
a share object was created).
25
40.
Additionally, in some cases, even if a share object was created and the destination
26
website associated with the URL had a Facebook Plugin Count, and the Plugin Count did not point to
27
its “fan” count, the Plugin Count on the destination website may not have been incremented (for
28
Gibson, Dunn &
Crutcher LLP
12
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
example, if the URL a user included in a message was not exactly the same as the URL the developer
2
passed to the plugin).
3
41.
But even if sharing a URL in a message did result in an increase in a Plugin Count on
4
a third-party website, there is no way to identify which user or what particular action resulted in that
5
increment. The Plugin Count is aggregate and anonymous and cannot be traced to specific users or
6
actions.
7
42.
At a minimum, determining whether a putative class member’s inclusion of a URL in
8
a message ever actually incremented a Plugin Count displayed on a third-party website would require
9
the following individualized inquiries for each message:
10
a.
When was the message sent?
11
b.
Was a share object successfully created for a URL attachment in that message?
12
(i.e., all the individualized inquiries in paragraph 22 above.)
13
c.
14
Was the share_count incremented in the global share object? (i.e., all the
individualized inquiries in paragraph 29 above.)
15
d.
Did the third-party website display a Plugin Count?
16
e.
Did the third-party website configure its Plugin Count to display its “fan” count?
17
f.
Was the URL included in the message exactly the same as the URL the
18
developer passed to the plugin?
19
43.
To my knowledge, neither Facebook nor any other entity possesses the data that would
20
be required to ascertain the answers to the inquiries in paragraph 42, either on an individual or bulk
21
basis, for putative class members.
22
V.
23
A.
Overview
24
44.
For a period of time, prior to the Class Period, Facebook logged data regarding share
25
objects in a table,
”4 in its Hive database, a data warehouse. The table was used for,
26
27
28
Gibson, Dunn &
Crutcher LLP
4
This is not the same as the
FQL table discussed in my June 1, 2015 declaration.
13
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
among other things, Facebook’s Recommendations social plugin, which I understand is addressed in
2
the Declaration of Dan Fechete being submitted in support of Facebook’s Opposition to Certification.
3
Data logged in the “
4
understand that Plaintiffs have claimed that a particular printout of Facebook source code, a file
5
called
6
record of the user ID, the action the user took, the time of action, a pointer to data structures, and an
7
indicator of whether it was publicly posted or not. However, as noted above, this table was deleted
8
prior to the beginning of the Class Period. No URL shares by any purported class member were
9
stored in this table during the Class Period.
Hive table was deleted in 2011 prior to the Class Period. I
(FB000014183), demonstrated that the fields in
10
B.
11
45.
contained a
and Messages
If a person sent a Facebook message, and a URL attachment was successfully created
12
(and not deleted by the user) prior to the message being sent, then, after the message was sent and the
13
message and components were received and stored on a Facebook server, and if it was not blocked by
14
Facebook’s security and anti-abuse related processes, a share object may have been created reflecting
15
the fact that the message had a URL as an attachment. If a share object was created from a URL
16
attachment sent with a Facebook message, during certain periods prior to the Class Period, it may
17
have been logged to the
18
share from that message would not have been logged or stored in the
Hive table. However, if no share object was created, the URL
table in any way.
19
C.
Variability in Connection with
20
46.
For people who sent a message with a URL attachment in 2011 prior to the Class
21
Period, only those people for whom the URL attachment actually resulted in the successful creation
22
of a share object even potentially could have had their URL share included in the
23
table. For the same reasons discussed above in paragraph 27, there are a number of reasons why a
24
share object may not have been created, and thus there would be no log to the
25
47.
Hive
table.
Even when a share object was created from a URL attachment to a Facebook message
26
during that time, that action did not always result in logging to the
27
same reasons discussed above in paragraph 28 with respect to the global share tracking information.
28
Gibson, Dunn &
Crutcher LLP
Hive table, for the
14
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
2
48.
Additionally, if a message was sent with a URL attachment during the Class Period,
which began after the
3
49.
table was deleted, no shares were logged in
Taking all of this variation together, at a minimum, determining whether a Facebook
4
user’s inclusion of a URL in a message resulted in logging to the
5
require the following individualized inquiries for each message:
Hive table would
6
a.
When was the message sent?
7
b.
Was a share object successfully created for a URL attachment in that message?
8
(i.e., all the individualized inquiries in paragraph 22 above.)
9
c.
10
Was the share successfully logged to the
Hive table? (i.e. the
individualized inquiries in paragraph 29 (d)-(f)).
11
50.
To my knowledge, neither Facebook nor any other entity possesses the data that would
12
be required to ascertain the answers to the inquiries in paragraph 49, either on an individual or bulk
13
basis, for putative class members.
14
VI.
Nectar
15
A.
Overview
16
51.
Nectar is a library, or a collection of scripts, that move data from one system within
17
Facebook to another, including sending statistics to certain databases. It is one of a number of tools
18
used to log certain activity or data generated in the operation of the Facebook website for purposes
19
including to ensure site integrity and security, detect and prevent abuse, research and test new and old
20
products, features, and functionality, detect and fix bugs, balance traffic and load processing, and
21
learn about aggregate user preferences and patterns to inform site improvements and feature
22
development. Logging can be highly specialized for its desired purpose; events logged, data fields
23
logged for those events, rate of logging, duration of logging, and retention time can all be tailored for
24
specific uses.
25
52.
When the unit of code that performs a share scrape (discussed above as part of the
26
generation of a URL preview) is executed, that event may be logged using Nectar. Not all instances
27
of execution of the share scraper code are logged to Nectar. Only a sampling of such instances is
28
Gibson, Dunn &
Crutcher LLP
15
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
logged. From June 13, 2011 until June 20, 2012, only 1% of share scrapes were logged to Nectar.
2
From June 20, 2012 to present, only 0.01% of share scrapes were logged to Nectar. However,
3
sometimes the sampling rate depended upon the URL being scraped. That is, different URL domains
4
had different sampling rates, such that share scrapes of different URLs had differing likelihoods of
5
being logged in Nectar, assuming they were scraped at all (which may not have occurred, for
6
example if the link was malicious or if the user pressed “Send” too quickly). During the Class
7
Period, some domains had domain-specific sampling rates for Nectar logging of share scrapes for
8
debugging purposes.
9
B.
Nectar and Share Scrapes for Messages
10
53.
Since the same share scraper used across the Facebook site is also used in Facebook’s
11
messaging system, when a URL preview is generated for a Facebook message, prior to a user sending
12
the message, if the components for the preview are not already on a Facebook server, and instead the
13
server sends a request to scrape the third-party site, that event may have been logged using Nectar, if
14
it was among the sampled actions.
15
16
54.
Both the execution of the share scrape function and any logging of that share scrape to
Nectar occur before a person sends the draft message.
17
C.
Variability in Connection with Nectar
18
55.
Because Nectar logging only occurred for a sample of share scrape events, and its
19
sample rate varied both with time and with the URL in question, only a fraction of people may have
20
been subjected to Nectar logging of share scrapes in connection with their messages that had a URL
21
attachment.
22
56.
At a minimum, determining whether a Facebook user’s inclusion of a URL in a
23
message actually resulted in Nectar logging of a share scrape would require the following
24
individualized inquiries for each message:
25
a.
Did the user have JavaScript enabled in her browser?
26
b.
Did the user type a message including a URL?
27
c.
Did the user send the message too quickly to generate a preview? Did site
28
Gibson, Dunn &
Crutcher LLP
16
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
integrity processes indicate that the URL should not be scraped because it
2
matched a URL on the list of known malicious URLs?
3
d.
Was the share scraper function called?
4
e.
Was the information for a URL preview already stored on the Facebook site?
5
f.
Did the Facebook server send a request to scrape the third-party site?
6
g.
Did the Facebook server successfully scrape the third-party site?
7
h.
Was a URL preview successfully created?
8
i.
Was that incident of scraping among those sampled for logging to Nectar?
9
57.
To my knowledge, neither Facebook nor any other entity possesses the data that would
10
be required to ascertain the answers to the inquiries in paragraph 56, either on an individual or bulk
11
basis, for putative class members.
12
VII.
Insights and Related APIs
13
A.
Overview
14
58.
“Insights” is the name of a Facebook user interface (UI), accessible from a Facebook
15
website, and a related Facebook application program interface (API). Facebook Insights and Related
16
API provide the owners of particular websites (also known as URL “domain owners”) with data
17
about interaction with and traffic to their websites. In order to access this information, a domain
18
owner must provide authentication demonstrating that he or she does indeed own that particular
19
website (URL domain) or webpage (URL). After authentication, the domain owner can use the
20
Insights dashboard or APIs to obtain statistics and demographics about the domains/URLs they own.
21
Specifically, Insights provides information about how effectively Facebook is generating traffic to
22
their site and demographic information about the users who make up that traffic. It also included
23
aggregate, anonymous statistics and aggregate, anonymous demographic information about the
24
people who share links to that domain owners’ sites across the Facebook platform.
25
59.
In 2011, Facebook created a new specialized Insights architecture designed to reflect
26
data about activity as quickly as possible after that activity occurred (“Real Time Analytics”). The
27
data store of activity to support the new Insights feature is completely separate from the other stores
28
Gibson, Dunn &
Crutcher LLP
17
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
discussed above; the Insights system writes certain events to a separate Hbase data store with its own
2
counters for different relevant actions.
3
B.
Insights and Related APIs and Messages
4
60.
When the Insights product was announced in April 2010, the aggregate, anonymous
5
statistics and demographic information about the users who shared a particular URL in Insights
6
included URLs shared in messages through the “Share” button plugin on third party websites (if a
7
share object was successfully created and the Insights counters were successfully incremented).
8
After the sharescraper was implemented in messages in August 2010, the aggregate, anonymous
9
statistics also included URLs shared in messages through the Facebook website (again, if a share
10
object was successfully created and the Insights counters were successfully incremented). When the
11
new Insights system was introduced in 2011, URLs shared in messages were included in the new
12
counters in the new Insights architecture. However, URL shares in messages were never listed
13
separately, and were only included in a larger, aggregate count of shares across the site.
14
15
61.
However, on October 11, 2012, I changed the code to no longer include URL shares in
messages in the aggregated, anonymous counters visible to domain owners through Insights.
16
C.
Variability in Connection with Insights and Related APIs
17
62.
As stated above, URLs sent in messages have not been included within Insights and
18
Related API since October 2012. Because Plaintiffs’ proposed class includes individuals who sent or
19
received Facebook messages beginning in December 2011 to the present, only some proposed class
20
members would have been exposed to the practice of including their URL shares in messages in data
21
available to web domain owners. Moreover, whether URLs sent in messages were included in
22
Insights and Related APIs during the class period still depended on the variability discussed above in
23
generating a preview and share object (see paragraphs 20-21). Moreover, the counters stored in the
24
special Insights architecture were subject to variability. If there was a server or database error, or the
25
time to write to the Insights data store elapsed before finalizing, a share object may not be included in
26
the Insights counter.
27
28
Gibson, Dunn &
Crutcher LLP
63.
Further, it would be highly variable and impossible to know whether Insights or any
18
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
Related APIs were ever actually accessed or viewed for any given website that was ever shared as a
2
URL in a message. If the owner of a given domain never authenticated ownership nor accessed the
3
Insights interface (or called the related API), the data may never have been used for that purpose or
4
displayed to anyone, and Facebook has no records from which it can ascertain that information for
5
the class. Thus, even when URL shares in messages were reflected in aggregate demographic data in
6
Insights during the relevant period, it would be impossible to determine whether that data was ever
7
actually accessed or displayed for each share or whether any person ever actually used the API to
8
view the data about the share counts for that URL that included (among other things) URL shares in
9
messages.
10
64.
At a minimum, determining whether a person’s inclusion of a URL in a message was
11
ever actually included or viewed in anonymous, aggregated Insights data or any related interface or
12
API would require the following individualized inquiries for each message:
13
a.
When was the message sent?
14
b.
Was a share object successful created for a URL attachment in that message?
15
(i.e., all the individualized inquiries in paragraph 22 above.)
16
c.
Was the Insights counter successfully incremented?
17
d.
Did the domain owner for that URL ever provide authentication?
18
e.
Did the domain owner ever access Insights or Related APIs?
19
65.
To my knowledge, neither Facebook nor any other entity possesses the data that would
20
be required to ascertain the answers to the inquiries in paragraph 64, either on an individual or bulk
21
basis, for putative class members.
22 VIII.
“Link_Stats” and Graph API
23
A.
Overview
24
66.
The original
FQL table I introduced in my June 1 Declaration (attached
25
hereto as Exhibit OO) was renamed to be called the “link_stats” table. Facebook exposed certain
26
data in the table such that individuals outside Facebook could write queries or use APIs to obtain
27
certain aggregate, anonymous statistical information contained in the internal “link_stats” table.
28
Gibson, Dunn &
Crutcher LLP
19
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
Among the available information were the aggregate, anonymous counters reflecting shares of URLs
2
through the Facebook platform stored in the “tracking info” in the global share objects. Herein, I
3
refer to these publicly available queries or APIs as “link_stats” queries or APIs. Facebook provided
4
these APIs publicly in order to allow for the development of products and features that incorporate
5
engagement statistics—products that take into account what people are interacting with now.
6
67.
Graph API is an API that allows third-party apps to read and write to Facebook’s
7
“social graph”—a general name for a store of data about users and their activity that Facebook has
8
made available to developers in certain ways to facilitate the creation of products and features that
9
interact with the Facebook platform in both directions. Developers and their users can learn about
10
other users’ engagement with different information and contribute their own data to that effort, and
11
build products that incorporate that information in useful ways. Developers can use the Graph API
12
to, for instance, query data, post stories, upload photos, and perform other similar activities.
13
68.
During the proposed Class Period, the “link_stats” API and Graph APIs showed the
14
same aggregate counts in Facebook’s global share objects, but were named differently and more
15
aggregated when exposed externally. “Link_stats” and Graph API only exposed externally a “share
16
count” that included URL shares in both posts and messages. They did not expose any count of only
17
URLs shares in messages.
18
B.
“Link_Stats” and Graph API and Messages
19
69.
For a limited period of time between August 2010 and October 2012, if a share object
20
was created from the URL share attachment sent with a message, the internal “link_stats” table may
21
have recorded that fact in an anonymous aggregate count, and thus the externally-facing “link_stats”
22
APIs would have likewise shown an increment in the anonymous count for URL shares (which
23
included both shares in messages and in posts). However, if no share object was created (which
24
could have occurred for a variety of reasons, described above, including certain race conditions, site
25
integrity functionality blocking the message or the URL attachment, and so forth), the URL share
26
shared in that message would not have been included in counters that could be queried through
27
“link_stats” or the Graph API.
28
Gibson, Dunn &
Crutcher LLP
20
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
70.
Further, to the extent that URL shares in messages were included in the anonymous
2
count made available to developers through the “link_stats” or Graph API, the number of URL shares
3
sent through messages (as opposed to generated through profile posts, comments, “Like” clicks, etc.)
4
was never publicly available; it was only ever included as part of larger, aggregate counts, such as the
5
“share_count,”5 which also included posts, during certain periods of time.
6
7
71.
“link_stats” and Graph API after October 16, 2012.
8
9
Facebook stopped including URL shares in messages in any public counters in the
72.
I also understand that Plaintiffs claim that objects created from URLs in messages
“populate Facebook’s Social Graph,” thereby “increasing the quality of its ability to provide
10
predictive value, and, consequently, increasing Facebook’s advertising revenue and value.” (Mot. at
11
22.) This is incorrect. To my knowledge, none of the tools that Facebook provides externally call
12
objects created from URLs in messages, nor any associations or nodes from those objects. The only
13
relationship of URLs in messages to Facebook’s externally exposed “Social Graph” was, for a short
14
period of time until October 2012, their inclusion (under certain circumstances) in some aggregate,
15
anonymous counts of user engagement with certain URLs. This additional information about
16
engagement is not valuable. Users share information publicly on Facebook, and Facebook can use
17
that information to understand what users are interested in and how to most effectively tailor the
18
Facebook service, including its targeted advertising. To my knowledge, information about URLs
19
shared in messages was never used in that way, and did not “increase[] the quality of its ability to
20
provide predictive value, and, consequently, increase[] Facebook’s advertising revenue and value,” as
21
Plaintiffs allege without apparent support.
22
C.
Variability in Connection with “Link_Stats” & Graph API
23
73.
“Link_stats” queries and Graph API queries would have reflected the same
24
25
26
27
28
Gibson, Dunn &
Crutcher LLP
anonymous counters stored in the internal Facebook global share objects in a more aggregated form.
5
This externally named “share_count” in the publicly available “link_stats” table (which
attempted, for a time, to include shares in both messages and posts) is not the same as the
internally named “share_count” in the global share object discussed above (which did not include
posts).
21
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
Accordingly, as stated above and in my Declaration dated June 1, 2015, until August 2010, URLs
2
sent in messages from the Facebook website were not included in these counters and thus would have
3
not contributed to any counts returned by a “link_stats” or Graph API query.
4
5
6
74.
Similarly, after October 16, 2012, URL shares from messages would no longer have
been included in the anonymous aggregate counts returned by a “link_stats” or Graph API query.
75.
Accordingly, anyone who only sent messages with URL attachments between October
7
17, 2012 and the present would not have had their URL share from a message included in this
8
aggregate, anonymous count and would not have had their URL share from a message included in the
9
results of a “link_stats” or Graph API query. In other words, only people who sent a message with a
10
URL attachment between December 2011 and October 16, 2012 could have been subject to these
11
practices during the Class Period.
12
76.
Further, even for people using Facebook who did send a message with a URL
13
attachment between December 30, 2011 and October 16, 2012, only those for whom the URL
14
attachment actually resulted in the successful creation of a share object could have had their URL
15
share included in the results of a “link_stats” or Graph API query. The aggregate counters in these
16
results could have been incremented only based on the generation of a share object, which, in a
17
variety of instances (as detailed above in paragraphs 21 and 22), might never have been generated,
18
and, for a host of other reasons, may not have been counted in any event (as detailed above in
19
paragraph 28).
20
77.
Moreover, it is highly variable whether anyone ever actually accessed or called the
21
“link_stats” or Graph API for any given URL that a class member shared in a message during the
22
Class Period.
23
78.
At a minimum, determining whether a Facebook’s user’s inclusion of a URL in a
24
message was ever actually included or viewed in “link_stats” or Graph API queries would require the
25
following individualized inquiries for each message:
26
a.
When was the message sent?
27
b.
Was a share object successfully created for a URL attachment in that message?
28
Gibson, Dunn &
Crutcher LLP
22
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
(i.e., all the individualized inquiries in paragraph 22 above.)
2
c.
Was the counter in the global share object incremented?
3
d.
Did anyone ever query or call the API for that URL? When?
4
79.
To my knowledge, neither Facebook nor any other entity possesses the data that would
5
be required to ascertain the answers to the inquiries in paragraph 78, either on an individual or bulk
6
basis, for putative class members.
7
8
9
10
I declare under penalty of perjury under the laws of the United States of America that the
foregoing is true and correct and that this declaration was executed on January 14, 2016, in Menlo
Park, California.
11
/s/ Alex Himel
Alex Himel
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Gibson, Dunn &
Crutcher LLP
23
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
1
2
3
4
5
6
ATTORNEY ATTESTATION
I, Christopher Chorba, attest that concurrence in the filing of this Declaration of Alex Himel
has been obtained from the signatory. I declare under penalty of perjury under the laws of the United
States of America that the foregoing is true and correct. Executed this 15th day of January, 2016, in
Los Angeles, California.
Dated: January 15, 2016
/s/ Christopher Chorba
Christopher Chorba
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Gibson, Dunn &
Crutcher LLP
24
DECLARATION OF ALEX HIMEL IN SUPPORT OF OF DEFENDANT’S OPPOSITION TO PLAINTIFFS’ MOTION FOR
CLASS CERTIFICATION
Case No. C 13-05996 PJH (MEJ)
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?