add draft of JOSS paper

This commit is contained in:
Josh de Leeuw 2023-03-30 14:50:08 -04:00
parent 5af76ab4d7
commit fdab4a38d3
3 changed files with 310 additions and 0 deletions

26
.github/workflows/paper.yml vendored Normal file
View File

@ -0,0 +1,26 @@
on:
push:
branches:
- joss-paper
jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: paper.md
- name: Upload
uses: actions/upload-artifact@v1
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: paper.pdf

229
paper.bib Normal file
View File

@ -0,0 +1,229 @@
@article{de2015jspsych,
title={jsPsych: A JavaScript library for creating behavioral experiments in a Web browser},
author={De Leeuw, Joshua R},
journal={Behavior research methods},
volume={47},
pages={1--12},
year={2015},
publisher={Springer}
}
@article{mathot2012opensesame,
title={OpenSesame: An open-source, graphical experiment builder for the social sciences},
author={Math{\^o}t, Sebastiaan and Schreij, Daniel and Theeuwes, Jan},
journal={Behavior research methods},
volume={44},
pages={314--324},
year={2012},
publisher={Springer}
}
@article{kinley2022jspsych,
title={A jsPsych plugin for visual analogue scales},
author={Kinley, Isaac},
year={2022},
publisher={PsyArXiv}
}
@article{zehr2018penncontroller,
title={PennController for internet based experiments (IBEX)},
author={Zehr, Jeremy and Schwarz, Florian},
journal={DOI: https://doi. org/10.17605/OSF. IO/MD832},
year={2018}
}
@article{gibeau2021corsi,
title={The Corsi Blocks Task: Variations and coding with jsPsych},
author={Gibeau, R},
journal={The Quantitative Methods for Psychology},
volume={17},
number={3},
pages={299--311},
year={2021}
}
@article{strittmatter2022random,
title={A random-object-kinematogram plugin for web-based research: implementing oriented objects enables varying coherence levels and stimulus congruency levels},
author={Strittmatter, Younes and Spitzer, Markus Wolfgang Hermann and Kiesel, Andrea},
journal={Behavior Research Methods},
pages={1--16},
year={2022},
publisher={Springer}
}
@article{donhauser2022audio,
title={Audio-Tokens: A toolbox for rating, sorting and comparing audio samples in the browser},
author={Donhauser, Peter W and Klein, Denise},
journal={Behavior Research Methods},
pages={1--8},
year={2022},
publisher={Springer}
}
@article{kuroki2021new,
title={A new jsPsych plugin for psychophysics, providing accurate display duration and stimulus onset asynchrony},
author={Kuroki, Daiichiro},
journal={Behavior Research Methods},
volume={53},
pages={301--310},
year={2021},
publisher={Springer}
}
@article{rajananda2018random,
title={A random-dot kinematogram for web-based vision research},
author={Rajananda, Sivananda and Lau, HW and Odegaard, Brian},
journal={Journal of Open Research Software},
year={2018},
publisher={Ubiquity Press Ltd. The Journal's web site is located at http~…}
}
@article{yang2021webcam,
title={Webcam-based online eye-tracking for behavioral research},
author={Yang, Xiaozhi and Krajbich, Ian},
journal={Judgment and Decision Making},
volume={16},
number={6},
pages={1485--1505},
year={2021},
publisher={Cambridge University Press}
}
@article{hartshorne2019thousand,
title={A thousand studies for the price of one: Accelerating psychological science with Pushkin},
author={Hartshorne, Joshua K and de Leeuw, Joshua R and Goodman, Noah D and Jennings, Mariela and ODonnell, Timothy J},
journal={Behavior research methods},
volume={51},
pages={1782--1803},
year={2019},
publisher={Springer}
}
@article{henninger2021lab,
title={lab. js: A free, open, online study builder},
author={Henninger, Felix and Shevchenko, Yury and Mertens, Ulf K and Kieslich, Pascal J and Hilbig, Benjamin E},
journal={Behavior Research Methods},
pages={1--18},
year={2021},
publisher={Springer}
}
@article{anwyl2020gorilla,
title={Gorilla in our midst: An online behavioral experiment builder},
author={Anwyl-Irvine, Alexander L and Massonni{\'e}, Jessica and Flitton, Adam and Kirkham, Natasha and Evershed, Jo K},
journal={Behavior research methods},
volume={52},
pages={388--407},
year={2020},
publisher={Springer}
}
@article{de2022simulating,
title={Simulating behavior to help researchers build experiments},
author={de Leeuw, Joshua R and Gilbert, Rebecca A and Petrov, Nikolay and Luchterhandt, Bj{\"o}rn},
journal={Behavior Research Methods},
pages={1--11},
year={2022},
publisher={Springer}
}
@article{kuroki2022jsquestplus,
title={jsQuestPlus: a JavaScript implementation of the QUEST+ method for estimating psychometric function parameters in online experiments},
author={Kuroki, Daiichiro and Pronk, Thomas},
journal={Behavior Research Methods},
pages={1--8},
year={2022},
publisher={Springer}
}
@book{peirce2022building,
title={Building Experiments in PsychoPy},
author={Peirce, Jonathan and Hirst, Rebecca and MacAskill, Michael},
year={2022},
publisher={Sage}
}
@article{stoet2017psytoolkit,
title={PsyToolkit: A novel web-based method for running online questionnaires and reaction-time experiments},
author={Stoet, Gijsbert},
journal={Teaching of Psychology},
volume={44},
number={1},
pages={24--31},
year={2017},
publisher={Sage Publications Sage CA: Los Angeles, CA}
}
@article{scott2017lookit,
title={Lookit (part 1): A new online platform for developmental research},
author={Scott, Kimberly and Schulz, Laura},
journal={Open Mind},
volume={1},
number={1},
pages={4--14},
year={2017},
publisher={MIT Press One Rogers Street, Cambridge, MA 02142-1209, USA journals-info~…}
}
@article{sochat2016experiment,
title={The experiment factory: Standardizing behavioral experiments},
author={Sochat, Vanessa V and Eisenberg, Ian W and Enkavi, A Zeynep and Li, Jamie and Bissett, Patrick G and Poldrack, Russell A},
journal={Frontiers in psychology},
volume={7},
pages={610},
year={2016},
publisher={Frontiers Media SA}
}
@misc{luchterhandt2023jspsychbuilder,
author={Luchterhandt, Bj{\"o}rn},
title={jspsych-builder},
year={2023},
url={https://github.com/bjoluc/jspsych-builder},
}
@article{provenza2021honeycomb,
title={Honeycomb: a template for reproducible psychophysiological tasks for clinic, laboratory, and home use},
author={Provenza, Nicole R and Gelin, Luiz Fernando Fracassi and Mahaphanit, Wasita and McGrath, Mary C and Dastin-van Rijn, Evan M and Fan, Yunshu and Dhar, Rashi and Frank, Michael J and Restrepo, Maria I and Goodman, Wayne K and others},
journal={Brazilian Journal of Psychiatry},
volume={44},
pages={147--155},
year={2021},
publisher={SciELO Brasil}
}
@article{harrison2020psychtestr,
title={psychTestR: An R package for designing and conducting behavioural psychological experiments},
author={Harrison, Peter},
journal={The Journal of Open Source Software},
volume={5},
number={49},
year={2020}
}
@article{almaatouq2021empirica,
title={Empirica: a virtual lab for high-throughput macro-level experiments},
author={Almaatouq, Abdullah and Becker, Joshua and Houghton, James P and Paton, Nicolas and Watts, Duncan J and Whiting, Mark E},
journal={Behavior Research Methods},
volume={53},
number={5},
pages={2158--2171},
year={2021},
publisher={Springer}
}
@article{balietti2017nodegame,
title={nodeGame: Real-time, synchronous, online experiments in the browser},
author={Balietti, Stefano},
journal={Behavior research methods},
volume={49},
pages={1696--1715},
year={2017},
publisher={Springer}
}

55
paper.md Normal file
View File

@ -0,0 +1,55 @@
---
title: 'jsPsych: Enabling an open-source ecosystem of behavioral experiments'
tags:
- JavaScript
- psychology
- behavioral research
- experiment design
authors:
- name: Joshua R. de Leeuw
orcid: 0000-0003-4815-2364
corresponding: true
affiliation: 1
- name: Rebecca A. Gilbert
orcid: 0000-0003-4574-7792
affiliation: "2, 3"
- name: Björn Luchterhandt
orcid: 0000-0002-9225-2787
affiliation: 4
affiliations:
- name: Vassar College, USA
index: 1
- name: MRC Cognition and Brain Sciences Unit, University of Cambridge, UK
index: 2
- name: Massachusetts Institute of Technology, USA
index: 3
- name: Paderborn University, Germany
index: 4
date: 30 March 2023
bibliography: paper.bib
---
# Summary
It is common practice to conduct research on human behavior over the internet. Researchers use a variety of methodological approaches to conduct these studies. Some of this research can be done with survey instruments, for which there are many software options. However, much of the research in psychology and human behavior requires more fine-grained measures, and thus requires tasks that rely on precise measurement of stimulus presentation and response timing, randomization, dynamic procedures, and interactive content. jsPsych is a JavaScript library that allows researchers to build a wide range of the types of experiments that historically could only be run in a lab setting, and run them on any device that has a web browser, including desktop/laptop computers and mobile devices.
jsPsych was initially released in 2012 `[@de2015jspsych]`. This paper is focused on jsPsych version 7, which contains the most substantial set of changes that have been made to the library since its initial release . The software has been widely rewritten with the goal of supporting integration with modern web development tools and improving the developer experience for researchers who want to make contributions to the library. Our hope is that this will make it easier for researchers to collaboratively develop jsPsych and tools that use jsPsych (e.g., `[@hartshorne2019thousand; @sochat2016experiment; @luchterhandt2023jspsychbuilder; @provenza2021honeycomb]`)
Highlights of the changes include:
1. **JavaScript modules.** Refactoring the library to use ES6 modules allows jsPsych developers to take advantage of modern JavaScript development tools like package managers and bundlers. Researchers can now use tools like npm or yarn to integrate jsPsych with their choice of experiment building and hosting environments, and to selectively import jsPsych plugins in their experiment. Researchers can publish their own jsPsych plugins on package repositories and share them with the research community.
2. **TypeScript support.** We converted the codebase to TypeScript to provide better error checking and better integration with autocomplete and documentation tools that can use type information to assist developers.
3. **Simulation mode.** Version 7 introduced support for simulating participant behavior, which can be used to robustly test code, experimental design, and analysis pipelines prior to running an experiment (we describe the application of these features more in `@de2022simulating`).
4. **Community contributions repository.** We created [a repository](https://github.com/jspsych/jspsych-contrib) to help community members share their plugins and extensions. We provide templates that are compatible with jsPsych versions 6 and 7 and CI/CD tooling to publish submitted packages to npm.
5. **New plugins and extensions.** We added several new plugins and extensions, including support for recording audio and video responses from participants and mouse tracking.
# Statement of need
jsPsych is one of many software options for building online experiments (e.g., `[@henninger2021lab; @anwyl2020gorilla; @pierce2022building; @stoet2017psytoolkit; @scott2017lookit; @harrison2020psychtestr; @almaatouq2021empirica; @balietti2017nodegame; @mathot2012opensesame; @zehr2018penncontroller]`). jsPsych and these other options vary in ways such as available features, closed vs. open source, primary programming language, and syntax/style choices, but the main distinction is the particular way that jsPsych abstracts the design of an experiment. jsPsych experiments are constructed using plugins — self-contained modules that define an event and its parameters. This mode of abstraction allows developers to create both generic plugins that can be used in many different experiments (e.g., show some HTML on the screen and record a keyboard response) and plugins that implement specific experimental paradigms (e.g., display a circular visual search array with a specific number of distractors). Once a plugin is created, it is relatively easy for researchers with no previous web development experience to incorporate the plugin into their own experiments.
jsPsychs plugin architecture lends itself to community-driven development. Researchers can develop plugins that abstract an experiment at a level that makes sense for a particular paradigm and then these plugins can be shared with other researchers who want to construct similar experiments. Over the past several years, there have been a handful of researchers who have published articles describing new jsPsych plugins `[@kuroki2022jsquestplus; @kuroki2021new; @rajananda2018random; @donhauser2022audio; @gibeau2021corsi; @kinley2022jspsych; @strittmatter2022random ]`. As more users of jsPsych feel comfortable with developing their own plugins and publishing them in easily-accessible repositories, the development work that any individual researcher will need to do to create an experiment will decrease. We hope this will enable a robust ecosystem of open-source behavioral experiments.
# Acknowledgements
jsPsych development from 2020-2022 was partially funded by a grant from the Mozilla Foundation. We would like to thank everyone in the jsPsych community who has helped improve this project through code contributions, feature suggestions, bug reports, documentation, and supporting other users on the discussion forum.
# References