Campbell et al v. Facebook Inc.
Filing
207
MOTION to Compel Production of Configuration Tables filed by Matthew Campbell, Michael Hurley. Responses due by 8/9/2016. (Attachments: # 1 Proposed Order, # 2 Declaration of Dr. Jennifer Golbeck)(Sobol, Michael) (Filed on 8/2/2016)
1
2
3
4
5
6
7
Michael W. Sobol (State Bar No. 194857)
msobol@lchb.com
David T. Rudolph (State Bar No. 233457)
drudolph@lchb.com
Melissa Gardner (State Bar No. 289096)
mgardner@lchb.com
LIEFF CABRASER HEIMANN & BERNSTEIN, LLP
275 Battery Street, 29th Floor
San Francisco, CA 94111-3339
Telephone: 415.956.1000
Facsimile: 415.956.1008
12
Hank Bates (State Bar No. 167688)
hbates@cbplaw.com
Allen Carney
acarney@cbplaw.com
David Slade
dslade@cbplaw.com
CARNEY BATES & PULLIAM, PLLC
11311 Arcade Drive
Little Rock, AR 72212
Telephone: 501.312.8500
Facsimile: 501.312.8505
13
Attorneys for Plaintiffs and the Class
8
9
10
11
14
UNITED STATES DISTRICT COURT
15
NORTHERN DISTRICT OF CALIFORNIA
16
17
18
MATTHEW CAMPBELL and MICHAEL
HURLEY, on behalf of themselves and all
others similarly situated,
19
Plaintiffs,
20
DECLARATION OF DR. JENNIFER
GOLBECK IN SUPPORT OF
PLAINTIFFS’ MOTION TO COMPEL
CONFIGURATION TABLES
v.
21
Case No. C 13-05996 PJH (SK)
FACEBOOK, INC.,
22
Defendant.
23
24
25
26
27
28
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
I.
QUALIFICATIONS AND BACKGROUND
1.
2
As indicated in my curriculum vitae, I have been a professor in the College of
3
Information Studies (“The iSchool”) at the University of Maryland since 2007 (assistant professor
4
from 2007-2013, associate professor with tenure to present), where I have focused my research
5
and teaching efforts on aspects of social media and the web.
2.
6
I have previously submitted two expert reports in this case, both in support of
7
Plaintiffs’ motion for class certification. My qualifications are described in detail at paragraphs
8
1-10 of my opening report and in my curriculum vitae, attached thereto as Exhibit A.
3.
9
In forming my opinions below, I have reviewed source code which I understand
10
was provided by Facebook’s counsel and which was represented as containing the relevant source
11
code between some time in 2009 and December 2012. Additionally I have reviewed numerous
12
internal Facebook documents produced in this litigation, as well as certain public materials.
13
These materials are listed in Exhibit B to my opening report.
14
II.
SUMMARY OF ASSIGNMENT
4.
15
I have been asked by the Plaintiffs through their counsel to provide the following,
16
which I understand to be in support of Plaintiffs’ request to the court to compel certain types of
17
discovery:
18
a.
An explanation of the term “configuration table” as it relates to this case;
19
b.
A description of why, in my opinion, I need to review certain of
20
Facebook’s configuration tables in order to fully opine on the issues that I understand are relevant
21
to this case; and
22
c.
A description of the particular relevant configuration tables I have
23
identified thus far, along with the information that I understand to be contained in them.
24
III.
25
CONFIGURATION TABLES
5.
Databases, in the most general sense, are systems that store data. That data is
26
often divided into tables. A database table is analogous to one sheet in a spreadsheet. A table is a
27
collection of related data in a database, and it contains rows and columns. Rows typically store
28
the data about a particular entity, and the columns each represent a different attribute.
-1-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
6.
For example, an e-commerce website might have a table for products that had a
2
row for each item and columns for attributes like name, price, SKU, description, etc. The website
3
might also have a separate table for customers, with each row representing a customer and
4
columns for user ID, password, name, street address, etc.
5
7.
“Configuration tables” are a specific type of database table. They store data that
6
configures functionality of the system. Storing data in a configuration table rather than putting it
7
directly in the system’s code has the benefit of allowing easy changes to the system’s
8
functionality without requiring any code changes. Configuration tables essentially allow the
9
system to be more flexible and adaptable, since changes can be made once in the configuration
10
table, and then every place in the system that uses that information can easily access the change.
11
8.
Continuing the simple example above, the e-commerce company may want to
12
offer a discount to customers when they visit the site. They could offer a particular discount, say
13
10% off, and a coupon code that the customer has to enter when they checkout, say
14
“SUMMER2016.” A message with the discount and code can appear in many places. For this
15
example, say it will be on the homepage and the Shopping Cart page. The data representing the
16
coupon code can be stored in a configuration table. Then, the website code simply requests the
17
discount value and the coupon code from the database, and uses them. On the home page, it may
18
be in a banner message that says “New Customers: Receive off your order with the
19
coupon code ”, replacing the values in brackets with the data retrieved from the
20
configuration table. The values can also appear on the Shopping Cart page in the message
21
“Remember to use code for off!” If the company decides to change
22
tactics, and offer 15% off with the coupon code “SUNSHINE1”, they simply update the
23
configuration table. Both messages would be updated and no one needs to change the actual code
24
that runs the website.
25
9.
Configuration tables can also be used to dictate what code is executed in a system.
26
For example, say the e-commerce company wants to test a new site design. They may send some
27
of their customers to the original version of the site (call this option A) and others to the new
28
version (option B). The code for these site designs may change over time as the e-commerce
-2-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
company makes updates. While all of the code for every option could be embedded in the home
2
page, it is much more efficient to keep the homepage code simple and consistent. It can simply
3
choose if the viewer will see option A or B. Then, it can refer to a configuration table to find
4
exactly which code to execute for each option. If either option changes, the homepage code can
5
remain the same, and the configuration tables can simply be updated to point to the newest code.
6
In cases like this, a code reviewer cannot know what code will be executed by the system unless
7
they have access to the configuration tables. Without those tables, she would only know that
8
there are two versions of the system, but it would be impossible to know what code corresponds
9
to each version.
10
10.
The use of configuration tables reduces errors because a programmer does not
11
have to find every place in the code where a value appears (e.g. they don’t have to search for
12
every place a coupon code is used and update it).
13
11.
Configuration tables hold information that is critical for the system to function. It
14
is essentially part of the source code, since it stores values and instructions that make the source
15
code run. The instructions they contain can be much more complicated than the simple example
16
given here. Configuration tables may list where data should be stored, which attributes to store,
17
what is displayed, etc.
18
19
12.
While “configuration table” is not a formal database term, the concept is well
known, widely used, and quite common.1
20
21
22
23
24
25
26
27
28
1
See, e.g., Knight’s Microsoft SQL Server 2012 Integration Services 24-Hour Trainer, By Brian
Knight, Devin Knight, Mike Davis, Wayne Snyder. Chapter 44 “Easing Deployment with
Configuration Tables”; The Programmers’ Guide to OsCommerce: the Nuts and Bolts of
OsCommerce, By Myles O’Reilly. Chapter 2; Modern Industrial Automation Software Design,
By Lingfeng Wang, Kay CHen Tan, Chapter 13; Wingerd, Laura, and Christopher Seiwald.
“Constructing a large product with Jam.” International Workshop on Software Configuration
Management. Springer Berlin Heidelberg, 1997; “Dynamic adaptive display design based on
wireless sensor networks”, Zheng Wei Wang , Xiao Shi Zheng , Lin Wang , Ping Tang , Ru Liang
Zhang , Guang He Cheng , Qing Long Meng , Rang Yong Zhang , and Yang Wan. Proceedings
of the 2015 International Conference on Computer, Intelligent Computing and Education
Technology (CICET 2015), April 11-12, 2015, Guilin, P.R. China; Hallin, Peter F., and David W.
Ussery. “CBS Genome Atlas Database: a dynamic storage for bioinformatic results and sequence
data.” Bioinformatics 20.18 (2004) 3682-3686; Souyris, Jean, et al. “Computing the worst case
execution time of an avionics program by abstract interpretation.” OASIcs-OpenAccess Series in
Informatics. Vol. 1. Schloss Dagstuhl-Leibniz-Zentrum für Informatik, 2007; Watkins,
Christopher B., and Randy Walter. “Transitioning from federated avionics architectures to
-3-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
2
IV.
FACEBOOK’S USE OF CONFIGURATION TABLES
13.
I have reviewed source code which I understand was provided by Facebook’s
3
counsel and which was represented as containing the relevant source code between some time in
4
2009 and December 2012. I have provided my opinions, based on my review of the code thus far,
5
on the functioning of Facebook’s source code with respect to Facebook’s redirection and
6
interception of Private Message content in my opening and rebuttal reports in support of
7
Plaintiffs’ motion for class certification.
8
9
14.
Facebook’s source code makes extensive use of configuration tables. These were
not produced as part of the source code, but I have found evidence of their existence throughout
10
the source code, as I describe in more detail in the following section of this declaration. They
11
describe and control what data is stored, how certain systems function, and connections between
12
different parts of the code.
13
15.
At a general level, within Facebook’s source code, when a person shares a URL in
14
a private message, data is created about that action (e.g. the URL preview information, the
15
EntShare, the data that is in the EntShare, etc.). This data is stored. In order to understand where
16
it is stored and any subsequent use, I require a list of all the places it is stored (e.g. database
17
tables, objects, etc.) and the metadata and schemas for every place. This information would
18
include field names and descriptive information for the database tables, attributes for any objects,
19
etc. This information is contained in the configuration tables.
20
16.
The web-facing source code that Facebook produced has a number of places
21
where, in the execution of the process of a user sharing a URL in a private message, the code
22
relies on databases or other external information for configuration. This includes values for
23
variables and other configuration data. These variables and configuration tables are contained in
24
Facebook’s configuration tables.
25
26
27
28
integrated modular avionics.” 2007 IEEE/AIAA 26th Digital Avionics Systems Conference. IEEE,
2007.
-4-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
2
.
3
20.
One of the issues in this case is how Facebook connects users to the URLs they
4
share in Private Messages. That data could be stored as an association, and these tables may
5
contain information showing how the association is created. These configuration tables may also
6
show other code that is executed as part of the association process.
7
C.
,
8
9
, and
tables (in the
database)
21.
All of the data within Facebook is stored in databases, in other tables besides the
10
configuration tables this declaration discusses. These tables include all the data generated during
11
the process of sending a private message with a URL attachment and the generation of the URL
12
preview.
13
14
22.
I am not requesting access to this data, but rather to the configuration tables that
describe the structure of those databases. Based on review of the
15
16
17
.
23.
.
18
This information is necessary for me to know what data is being stored – for example, if user IDs
19
and URLs sent in private messages are being stored together and where.
20
D.
21
24.
table (in the
database)
22
23
24
.
25.
One particularly significant and directly relevant use is in the use of the
25
26
27
. Access to this configuration table is critical to
know what code is executed as part of the
. I know that
28
. What the system does with that data is
-6-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
1
hidden in the configuration tables. I cannot know how it is being used or stored without the
2
configuration tables that
3
4
5
.
I declare under penalty of perjury under the laws of the United States that the foregoing is
true and correct.
Executed this 1st day of August, 2016, in Silver Springs, Maryland.
6
7
__________________
Jennifer Golbeck
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-7-
DECLARATION OF DR. JENNIFER GOLBECK IN
SUPPORT OF PLAINTIFFS’ MOTION TO COMPEL
C 13-05996 PJH (SK)
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?