29

Bolker esa2014

Embed Size (px)

DESCRIPTION

slides on "social aspects of software", ESA 2014

Citation preview

Page 1: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Social aspects ofecological statistical software

Ben Bolker and Steve Walker, McMaster UniversityDepartments of Mathematics & Statistics and Biology

ESA

August 2014

Page 2: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 3: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Acknowledgements

People Mollie Brooks, Mike McCoy, Toshinori Okuyama

Support NSERC Discovery grant

Page 4: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 5: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Community science and community software

Science as a communityactivity

Software as a communityactivity

How to make it work betterfor individuals (you!)for the community

Mowgli and the bandar-log

Page 6: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

R

freeas in beer (gratis)as in speech (libre)

package infrastructureeasy installationdependency/version managementdocumentation (help pages & vignettes)testing

drawbacks:language design wartsperformancecommunity problems(hostility, closed development)

Page 7: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

R

freeas in beer (gratis)as in speech (libre)

package infrastructureeasy installationdependency/version managementdocumentation (help pages & vignettes)testing

drawbacks:language design wartsperformancecommunity problems(hostility, closed development)

Page 8: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

R

freeas in beer (gratis)as in speech (libre)

package infrastructureeasy installationdependency/version managementdocumentation (help pages & vignettes)testing

drawbacks:language design wartsperformancecommunity problems(hostility, closed development)

Page 9: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 10: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

The world of R packages

●●●●●●

● ●

●●●●●

●●●●

●●

●●●●●●●

●●

●●●●●

●●●

●●●

●●●

●●

●●

●●

●●●

●●

●●

●●●

●●●

●●

●●●●●

●●

●●

●●●

●●

●●●

●●

●●

●●●

●●●

●●

●●

●●

●●●●

●●●●● ●●

●●

●●

●●●●

● ●●

●●

● ●

●● ●●●

●●

●●

●●●●

●●

● ●●●

●●

● ●●

●●

●●

●●●

●●

● ●●

● ●

●●

●●

●●

●●

●●●●●●●

●●●●

●●

● ●●●●

●●

● ●●●●

●●

●●

●●

●●●●

●●

●●

●●●

●●

●●

●●

●●

●●●●

●●●

●●●

●●●●●●● ●●

● ●

●●●

●●

●●

●●●

●●

●●

●●

●●

●●●●●

●●

●●●

●●

●●

●●

●●

●●

●●●●

●●●

●●●●

●●

● ●●

●●●●

●●

●●●●

●●

●●● ●

●●

●●●

●●

●●

●●

●●●

●●●●

●●●●●

●●●●●

●●●

●●●

●●●

●●

●●●●●

●●●●

●●

●●

●●

●●

●●●●

●●●

●● ●

●●

●●

●●

●●●●

●●●

●●

●●●

●●

●●

●●●

●● ●

●●●●●

●●

●●

●●

●●

●●

●●

●●●

● ●● ●

●●●●

●●

●●

●●

●●●●

●●

●●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●●●

●● ●

●●

●●●●

●●

●●

●●●

●●●

●●●●

●●●

●●

●●●●●

●●

●●

●●

●●●

●●●

●●

●●

●●●● ●

●●●●

●●

●●●●

●●

●●

●●

●●●

●●●●●

●● ●

●●●●

●●

●●●●

●●●●

●●●

●●

●● ●●

●●●● ●

●● ●

●●

●●●

●●

●●●

●●

●●●

●●●●●●

●●●●●

●●

●●●

●●●●●

●●

●●●

●● ●●

●●

● ●

●●

●●

●●

●●●●

●●

●●

●●

●●

● ●●●

●●

●●

●●

●●●

●●

●●

●●

● ●●●●

● ●

●●

●●

●●

●●

●● ●

●●

● ●●

● ●●

●●

●●

●●

●● ●●●

●●

●●●●●● ●

●●

●●

●●●

●●

●● ●

● ●●

●●

●●

● ●

●●

●●

●●● ●

●●●

●● ●●●

●●●●

●● ●●

●● ●

●●

●●

● ●●●

●●●

●●●●●●

●●

●●●●

●●●●●●

●●

● ●●●●

●●●

● ●●●

●●

●●

●●

●●

●●

●●●●●

● ●

●●

●●

●●

●● ●●

●●

●●●

●●

●●● ●

●●●●●

●●

●●●●●

● ●●

●●

●●

●●●●

●●

●●

●●●

●●

●●

●●

● ●

●●

● ●

●●●●●● ●

●●●

●●

●●

●●

●●●

●● ●

●●●●

●●●

●●

●●

●●

●●●

●●●

●●●

● ●●●

●●●

●●

●●●

●●

●●●●●

●●●●●

●●●●

●●●

●●

●●

● ●●

●●

●●●●

●●●● ●●●

●●●●

●●

●●

●●

●●●

● ●●

●●

●●

●● ●

●●

●●●

●●

●●● ●●●

●●

●●●

●●●

●●

●●

● ●●

●●

●● ●

● ●●

●●

●●●

●●●●

● ●

●●

●●

●●

●●●●

●●

●●

●●

● ●

●●●●

●●

●●●●

●●

●●

●●

●●

●●●●

●●●●●●●

● ●●

● ●●

●●●

●●

●● ●

●●

●● ●

●●

●● ●

●●

●●

●●

●●

●●

●●● ●

●●●

● ●●●●

●●

●●

●●●●

●●●

●● ●●●

●●

●●

●●

●●

●●●●

●●

●●

●●●

● ●●

●●●

●●●

● ●●

●●

●●●

●●

●●●

●●

●●●

●●

●●

●●●●●

● ●

● ●●

●●●

●●●●●

●●

● ●●

●●

●●● ●●

●●

●●●●●●● ●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●●●●●●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●●●

●●

●●●

●●●●

●●●

●●●

●●

●●

●● ●●●●●

●●

●●●

●●

●●

●●

●●●●

●●●

● ●

● ●

●●●●●●

●●

●●

● ●●

●●●

● ●●●

●●

●●

●●●●

●●●

●●

● ●●●

●●●

●●●●

●●●

●●

●●

●●

●●

●●●

●●●●

●●

●●●

●●

●●

●●

●●

●●●●●

● ●●

●●

●●●●

●●●●

●●●

●●●

●●●

●●

●●

●●●

●●●

●●●●●●

●●

● ●●●●

●●●

●●●●

●●

●●●

● ●

●●

●●

●●

●●●●

●●●●

●●

●●

●●

●●●

●●

●●

●●

●●●●●

● ●

●●

●●●●

●●

●●

●●● ●

●●

●●●

●●

● ●

●●

● ●●

●●●●

● ●●

●●

●●

●●●

● ●●

●●●

●●

●●

●●

●●

●●●

●●

● ●

●●●

●●●●●

●●●●

●●

●●●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●● ●

●●

●●●●

●●●

●●

●●●

●●

● ●●●●

●●●

●●● ●●

● ●●

● ●●●

●●●

●●●●●

●●

●●●

●●

●●●

●●

●●

●●

●●●●●●●●●

● ●●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●●

●●

●●

●●

●●●●

●●● ●●

●●

● ●

●●

●●

●●●●●●●●

●●●●

●●●

●●

●●●

●●

●●●●

●●

●●

●●

●●●

●●●●●

●●

●●●

●●

●●●

●●

● ●

●● ●

● ●

●●

●●●●

●●●

●●

●●● ●●

●●

●● ●●

●●

●●

●●●

●●

●●

●●

●●

●●●●●

●●

●●● ●●

●●

●●●●

●●

●●

●●

●●●

●● ●

●●●●

●●●

●●

●●●

●●●●

● ●●●●

●●●●

●●

●●

●●

●●●

●●

●●

●●●

● ●

●●

●●

●●

●●

●●●

●●●

● ●● ●●●

●●●

● ●

●●

●●●●

●●

●●●

● ●●

●●●

●●●● ●●

● ●

●●●

●● ●

●●●

●●●●●

●●●●

●●●●● ●●●

●●

●●

●●

●●

●●

●●●

● ●

●●

●●

●●

●●●

●●●

● ●● ●

●●

●●

●●●●

●●

●●

●●

●●●●

●●

●● ●

●●

● ●

●● ●

● ●

●●●

●●

●●

●●

●●●●

●●

●●

●● ●●

●●●

●●●

●●

●●●●

●●

●●

●●

●●●

● ●● ●

●●●

●● ●●

●●

●●●●

●●

●●● ●●●

●●●●

●●●●●

●●●

●●

●●●●

●●

●●

●● ●●● ●●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●●● ●●● ●

●●●●

●●●

●●

●●●●●●

●● ●

●●●●●

●● ●●●●

●●●

●●●

●●

●●●

●●

●●●●●●

●●●●

●● ●

●●●

●● ●

●●

●●

●●

●●●

●●●●

●●

●●●

●●●

●●●●●●

●●●

●● ●

●●

●●●●●●

● ●

●●

●●

●●

● ●●●

●●

●●

●●●

●●

●●

●●

●●● ●

●●●●●●

●●●●

●●

●●● ●●●

●●

●●● ●●

●●

●●●

●●

●●●

● ●●

●●

●●

●●

● ●●

●●

●●

●● ●

●●

●●

●●

●● ●●

● ●●●

●●

●●●●

●●

●●

● ●

●●●

● ●

●●

●●

●●●●

●●

●●

●●

●●

●●●

●●

● ●●

●●●

●●●

●●

● ●

●●● ●●●

●●

● ●●

● ●●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●●●

●●

●●● ●

●●●●

●●●

●●

● ●● ●

●●

●●●

●●

●●●●

●●

●●●●●●

●●

●●

●●

●●

●●

●●

●● ●●●●

●●

●●

●●

●●●

●●●●●

●●

●●

●●●

● ●●

●●●●

●●●

●●

●●

●●●●

●●

●●

●●

●●

●● ●

●●

●●

●●

●●

●●●

●● ●●

●●●●

●●●●

●●●●

●●●●●●

●●

●●

●●●●●●●

●●●

●●

●●

●●●●

● ●

●●●●●●

●●

●●

●●●

●●●●●

●●● ●

●●●

●●

●●●

●●

●●●●

●●

●●

●●

●●

●●●

●●●

●●

●●●● ●

●●

●●●

●●●

●●●

● ●

●●●

●●●

●●

●●●●●●●

●● ●●●●

●●●

●●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●●

●●

●●●

●●

●●

●●

●●●

●●

● ●

●●●

●●

●●

●●●

●●●

●●

● ●

● ●●●●●

●●

●●

●●●●

● ●

●●●●

●●●●

●●●

●●

● ●

●●●

●●●

●●●

●●

●●●

●●● ●● ●

●●

●●

●●

●●

●●

● ●

●●

●●●

●●●

●●

●●

●●

●●●●

●●●●●●

●●●

●●

●●

●●

●●●

●●

●●

●●

●●●●

● ●

●●

●●●

● ●

●●●

●●●●●

●●

●●

●●

●●●●●

●●

●●

●●

●●

●●●●

●●

●●

● ●●

●●●

●●

●●

●● ●●

●●●

●●●●

●●

● ●

●●●●

●●● ●

●●

●● ●

●●

●●●

●●

●●

●●

●●

●●●●●●

●●

●● ●

●●●●●●

●●●●

● ●●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●

●●●

●●

●●●

●●

●● ●

●●

●●

●●●

●●

● ●●●●

●●

●●

●●●●●

●●

●●

●●●●●●●

●●

●●●●●

●●●●

●●

●●

●●●

●● ●

●●

●●

●●

● ●

●●● ●●

●●●●

●●●●

●●

● ●

●●

●●

●●

●●●●●

●●●●●●

●●

●●●

●●●

●●

●● ●●●●

●●●●

●●

●●

●●

●●

●●

●●

●●

●●●

● ●●●

●●●●●●

●●

●●

●●

● ●●

●●

●●

●●●

●●●

● ●●

●●●

●●

●●

●●●

●●

●●●

●●●●

●●

●●

●●

● ●●●

●●● ●

●●

●●

●● ●

● ●

●●

●●●●●

●●

●●

● ●●●

●●

●●

●●●●

●●●●

●●

●●

●●●

●●

●●

●●●●●

●●

● ●●

● ●●●

●●●

●●

●●

●●●●

● ●

●●●

●●●

●●

●●●

●●

●●●

●●

●●

●●

●●●

●● ●●●

●●

●●

●●

●●●

●●

●● ●

●●

●●

●●● ●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●●

●●●

● ●●

●●

●●●●

●●●●

●●●

●●

●●

●●●

●●

●●

●●

●●

●●●

●●

● ●●●●

●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●●

●●

●●

●● ●

●●

●●

●●

●●

●●

●●

●●

●● ●●

●●

●●●

●●

●●●

● ●

●●●

●●

● ●●●

●●

●● ●●

●●

●●

●●●●●

●●●

●●●●●

●●

●●

● ●●●●

●●●

●●

● ●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●●●●

●●●

●●

●●

●●

●●●

● ●

●●

●●

●●●●

●●● ●

● ●

●●●●

●●

●●●●● ●

●●

●●●●

●●●●●●●

●●

●●

●●

●●●●

●●●●●●●●

●●●●●●

●●

●●

●●

1e+02

1e+03

1e+05

1 2 5 10 100 1000Total reverse dependencies (+1)

Tota

l dow

nloa

ds

Page 11: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Single-project

code for a single paper or project or course

verbal/mathematical description < pseudocode< code blobs < package < GUI

o�-CRAN: maybe R-forge/Github/custom repository

�community of one�

target audience: authors, reproducers

no (or few) citations, no reverse dependencies

unmarkedAutocorr (Brooks et al., 2013), bio3ss3

Page 12: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Special-purpose

probably on CRAN, maybe R-forge/Github

maybe Journal of Statistical Software

target audience: specialists

some citations, probably no reverse dependencies

cpcbp (McCoy et al., 2006), mixstock (Bolker et al., 2003,2007), emdbook (Bolker, 2008)

Page 13: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

General

CRAN if possible

lme4, R2admb, glmmADMB, bbmle, coefplot2

target audience: generalists

many citations, lots of reverse dependencies

lme4 (Bates et al., 2014), glmmADMB (Skaug et al.,2014-05-23), bbmle (Bolker and Team), coefplot2 (Bolkerand Su, 2011)

Page 14: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Users

wide range of knowledge:from�I just want it to work�to�I just sent you a pullrequest on Github�

(wider than in other �elds?)

Page 15: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Contributors

●●

●●

●●●

●●

●●

●●● ●● ●●●1

10

1000

1 2 5 10 20 50# of authors

# of

pac

kage

s

Page 16: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 17: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Development dilemmas

�eating your own dog food�vs.developer blindness

Google-beta syndrome:when should you release?(lme4 version 0.99999...;cpcbp package)

backward compatibilityde�ng an API andsticking to itsemantic versioning

Page 18: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Development dilemmas

�eating your own dog food�vs.developer blindness

Google-beta syndrome:when should you release?(lme4 version 0.99999...;cpcbp package)

backward compatibilityde�ng an API andsticking to itsemantic versioning

Page 19: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Development dilemmas

�eating your own dog food�vs.developer blindness

Google-beta syndrome:when should you release?(lme4 version 0.99999...;cpcbp package)

backward compatibilityde�ng an API andsticking to itsemantic versioning

Page 20: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

User friendliness/interfaces

how hard should you try to make your methods usable?(Dynamic Ecology blog post)

interface design:Reaction~1+Days + (1+Days|Subject)

Reaction~1+Days, random=~us(1+Days):Subject

model Reaction = Days;

random Int Days / type=un sub=Subject;

warning messages:sensitivity/speci�city, creeping nannyism

Page 21: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

User friendliness/interfaces

how hard should you try to make your methods usable?(Dynamic Ecology blog post)

interface design:Reaction~1+Days + (1+Days|Subject)

Reaction~1+Days, random=~us(1+Days):Subject

model Reaction = Days;

random Int Days / type=un sub=Subject;

warning messages:sensitivity/speci�city, creeping nannyism

Page 22: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

User friendliness/interfaces

how hard should you try to make your methods usable?(Dynamic Ecology blog post)

interface design:Reaction~1+Days + (1+Days|Subject)

Reaction~1+Days, random=~us(1+Days):Subject

model Reaction = Days;

random Int Days / type=un sub=Subject;

warning messages:sensitivity/speci�city, creeping nannyism

Page 23: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 24: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Responsibilities

Do you have a responsibility toFix bugs?Provide features?Give advice?

Does the �no liability� clause of free software licenses(e.g. GPL §16) absolve us of moral responsibility?

Page 25: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

A cautionary example

Mismatch between simpleGibbs sampler withequivalent WinBUGSimplementation

Bug (??) in relativelywidely used software;haven't found time todiagnose/�x it!

Contribution

Den

sity

05

1015

0.0 0.2 0.4 0.6 0.8 1.0

NWFLNWFL

0.0

0.5

1.0

1.5

SOFLNWFL

02

46

810

NWFLSOFL

0.0 0.2 0.4 0.6 0.8 1.0

0.0

0.5

1.0

1.5

SOFLSOFL

tmcmcwbugswbugsLwbugsLL

Page 26: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

What's in it for you?

$¿¿¥ (NOT)software as commodity

citations?of package?of J. Stat. Software paper?of associated ecology paper?

visibility/reputation

good karma

Page 27: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Outline

1 Introduction

2 PackagesPackage scopePackage communities

3 The soft side of software development

4 Ethics and incentives

5 Conclusions

Page 28: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

Conclusions

soft/community aspects of statistical/ecological computationare important

openness is good, but hard

best practices arenot well articulated(e.g. Wilson et al. (2014), other items from the SoftwareCarpentry reading list)

Page 29: Bolker esa2014

Introduction Packages The soft side of software development Ethics and incentives Conclusions References

References

Bates, D., Maechler, M., et al., 2014. lme4:Linear mixed-e�ects models using Eigen andS4. ArXiv e-print; submitted to Journal ofStatistical Software.

Bolker, B. and Su, Y.S., 2011. coefplot2:Coe�cient plots. R package version 0.1.3.2.

Bolker, B. and Team, R.D.C. bbmle: Tools forgeneral maximum likelihood estimation. Rpackage version 1.0.17.

Bolker, B., Okuyama, T., et al., 2003. EcologicalApplications, 13(3):763�775.

�, 2007. Molecular Ecology, 16:685�695.doi:10.1111/j.1365-294X.2006.03161.x.

Bolker, B.M., 2008. Ecological Models and Datain R. Princeton University Press, Princeton,NJ.

Brooks, M.E., McCoy, M.W., and Bolker, B.M.,2013. PLoS ONE, 8(10):e76389.doi:10.1371/journal.pone.0076389.

McCoy, M.W., Bolker, B.M., et al., 2006.Oecologia, 148:547�554.doi:10.1007/s00442-006-0403-6.

Skaug, H., Fournier, D., et al., 2014-05-23.Generalized Linear Mixed Models using ADModel Builder. R package version 0.8.0.

Wilson, G., Aruliah, D.A., et al., 2014. PLoSBiology, 12(1):e1001745. ISSN 1545-7885.doi:10.1371/journal.pbio.1001745.