Campbell et al v. Facebook Inc.

Filing 219

NOTICE of Refiling re Motion to Compel Discovery and Supporting Documents by Matthew Campbell, Michael Hurley re 218 Order on Administrative Motion to File Under Seal. (Attachments: # 1 Exhibit 1 - Replacement for Dkt. 205-4, # 2 Exhibit 2 - Replacement for Dkt. 205-6, # 3 Exhibit 3 - Replacement for Dkt. 205-8, # 4 Exhibit 4 - Replacement for Dkt. 205-10, # 5 Exhibit 5 - Replacement for Dkt. 205-12, # 6 Exhibit 6 - Replacement for Dkt. 205-16, # 7 Exhibit 7 - Replacement for Dkt. 205-17, # 8 Exhibit 8 - Replacement for Dkt. 205-18, # 9 Exhibit 9 - Replacement for Dkt. 205-19, # 10 Exhibit 10 - Replacement for Dkt. 205-15, # 11 Exhibit 11 - Replacement for Dkt. 205-21)(Gardner, Melissa) (Filed on 10/18/2016) Modified on 10/19/2016 (kcS, COURT STAFF).

Download PDF
EXHIBIT 4 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 <discount> off your order with the 19 coupon code <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 <coupon code> for <discount> 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 V. SPECIFIC RELEVANT CONFIGURATION TABLES 17. 2 Because I have not been given access to these tables, it is impossible for me to say 3 exactly how they function. Similarly, I cannot know all the relevant configuration tables that 4 exist just like I could not know all the Facebook php files (i.e., source code) that existed before I 5 could see them. However, there are some specific tables that I have seen evidence of that I know 6 are relevant to this case. I describe some of these below, but this is in no way a complete list of 7 the relevant tables. There are likely many more configuration tables that are important but I 8 simply cannot know what they are until I am given access and allowed to inspect them. 9 A. and database) tables (in the 10 18. 11 The and tables (in the 12 database) appear to contain 13 . Logging is a major sub-system involved in, among other things, 14 storing information for later processing. Based on review of the code, one example of such 15 logging occurs for log calls that result in the production of the “ 16 log call has the user ID of the user sending a private message, and also the URL of the URL 17 preview. This log call gets transformed at some point into the “ 18 information in it. The configuration tables may have the link between that log call and the 19 “ 20 described in by rebuttal report, I have also identified a log call, “scribeh_share_stats,” that 21 appears to perform the same logging as the “ 22 ongoing as of the final version of the code I reviewed from December 2012. ” table. That particular ” table with the same ” table, and may also lead to additional use being made of the user ID and URL. As 23 B. 24 19. ” log call, and which appears to have been ” and “ ” tables (in the “f ” database) “Associations” are one of the two fundamental database-based features of the 25 Facebook system. Associations are used to associate one object to another object. They link 26 people to other people, people to URLs, etc. Based on review of the code, it appears the 27 ” and “ ” tables (in the “ ” database) determine 28 -5- 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 appear to be configuration tables that contain this configuration data. 23. That includes the names of each data point and the type of data associated with it. 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. 22 23 24 25 table (in the database) , and I have seen many references to this information in the source code. 25. One particularly significant and directly relevant use is in the use of to configure the operation of checks. is run during the 26 generation of a URL preview in a private message. Access to this configuration table is critical to 27 know what code is executed as part of the 28 being sent in a private message go in to the system. I know that the user’s ID and the URL system. 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 define the next steps within 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?