Procedure for Remote Replication
1 Purpose
In cases where the full confidential data cannot be shared physically with the Data Editor, we try to get access to an author’s screen and observe the reproduction of results on their machine. This may lie within the limits of authors’ confidentiality agreements with data providers, because the data do not leave the author’s machine, and the replicator is specifically instructed not to examine individual records of data, which may contain personally identifying information, or other sensitive information. Instead, the replicator attempts to execute the full reproduction pipeline, and to collect generated results in the end.
It is the author’s responsibility to verify that the legal conditions for this approach are met. Ask your data provider, if applicable.
2 Setup
A: AuthorRep: Replicator
We generically refer to zoom as the required tool, however, any online meeting platform with screen sharing and remote control capability (cisco webex, microsoft teams, etc) work equally well. NOTE: if using Microsoft Teams, remote control does not work when either party joins via the browser (web) client instead of the desktop app - make sure both A and Rep use the Teams desktop app.
- Folder
confidential-data-dont-publish: present onA’s machine only. JPE-dropbox: replication package preprocessed by Data Editor and shared with the replicator. Contains code, documentation, and public data.JPE-upload-link: URL shared by the data editor in email toAandRep.Repwill upload results and session recording this location.
3 Before the replication attempt
- Figure out who has a paid zoom subscription - that person should initiate the call.
- Organize a suitable time slot for all participants, and communicate which OS will be running on the author’s machine.
- Always copy the data editor in all communications.
- By default,
Reprecords the screen session and places it inJPE-upload-linkwhen done. Exception: if data provider imposes legal impediments to recording (e.g. confidential/restricted data terms),Repdoes not record.
4 Performing the remote replication
Aprovides a workstation/laptop which can run uninterrupted for the full duration of the computational job.Amakes sure that the workstation/laptop has a recent version of the Zoom desktop app, and that the screen timeout exceeds the running time of the code.Astarts zoom and a single instance of the needed software (stata, R, matlab, whatever is needed), no other programs should run.Repreceives a zoom invite and connects.Repstarts recording of session.Agrants remote control of their screen toRepand takes their hands off the keyboard, see zoom instructions here. NOTE: This appears to require thatAfirst shares screen and then grants access, orReprequests access.Repimports the replication package fromJPE-Dropbox- DO NOT USE THE CODE ON THE AUTHOR’S MACHINE. Notice that copy-paste does not work reliably on zoom remote control, so we ask forA’s help in downloading the package from our dropbox whileRepis watching.Acopies confidential data into just downloaded JPE Replication package, at the correct location. For instance, a folderconfidential-data-dont-publish, which is referenced in the package code.Reptakes control ofA’s keyboard.Repfollows instructions in the packageREADMEand hopefully is able to launch the job.Ais kindly requested not to interfere at this step, as the point of the exercise is to make sure that an independent researcher can understand the instructions.Reptakes note of the process IDs of whatever software is running - looking for e.g. “Stata” following this on Windows. On mac, use Activity Monitor, or in Terminal:ps aux | grep -i stataSample output:
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND flo 4231 0.3 1.2 412345 98765 ?? S 3:15PM 0:02.14 /Applications/Stata/StataSE.app/Contents/MacOS/StataSEThe number to note is the
PIDcolumn (here:4231) - the second column here.If we hit an error within 60 minutes, we stop,
Repwrites the report, and we go into another round.If not,
Repstops recording, disconnects zoom and lets it run for the required amount of time.Once done,
Asends a zoom link toRep, who connects back.Repchecks that the PID of the executing program(s) is/are still the same.Repchecks that the files in the output folder have been created during the time in which the code was running (i.e. check file creation time), and uploads the output toJPE-upload-link.