< Return to Video

Maintaining an R Package, rOpenSci Community Call

  • 0:01 - 0:02
    So,
  • 0:02 - 0:05
    It's official. We're starting.
  • 0:05 - 0:10
    Hello everyone, I'm Stefanie Butland,
    rOpenSci's Community Manager
  • 0:10 - 0:13
    and I so warmly welcome you to
    our community call
  • 0:13 - 0:16
    on maintaining an R package.
  • 0:16 - 0:24
    I wanted to first acknowledge that everyone here
    is under extraordinary stresses right now
  • 0:24 - 0:29
    in light of the COVID-19 pandemic.
  • 0:29 - 0:35
    None of us knows what weights
    other people are carrying at this time.
  • 0:35 - 0:41
    It's a remarkable thing that all of us
    have decided to take this hour
  • 0:41 - 0:43
    to come together and be together
    as a community.
  • 0:43 - 0:49
    And so many of you I know as sort of warm,
    generous, accepting people.
  • 0:49 - 0:52
    And so I thank you all
    for taking the time to do this,
  • 0:52 - 0:56
    and for the next one hour of your lives,
    I've got your back!
  • 0:56 - 0:59
    And now for something completely different:
  • 0:59 - 1:02
    rOpenSci is a non-profit initiative,
    founded in 2011
  • 1:02 - 1:06
    by Karthik Ram, Scott Chamberlain,
    and Carl Boettiger.
  • 1:06 - 1:10
    We enable open and reproducible research
    by building technical infrastructure
  • 1:10 - 1:13
    in the form of staff- and community-contributed
    R software tools
  • 1:13 - 1:19
    and we build social infrastructure
    in the form of a welcoming and diverse community.
  • 1:19 - 1:25
    You can find our bi-weekly newsletter
    at news.ropensci.org.
  • 1:26 - 1:29
    We have a code of conduct
    that applies to both in-person
  • 1:29 - 1:32
    and online interactions,
    like this call today.
  • 1:33 - 1:36
    You can find it linked
    from the footer of our website
  • 1:36 - 1:42
    and it includes reporting
    and enforcement guidelines.
  • 1:42 - 1:47
    The session is being recorded
    and the video and any other resources
  • 1:47 - 1:54
    are going to be posted on our website
    at ropensci.org/commcalls
  • 1:54 - 1:56
    within about three business days.
  • 1:58 - 2:00
    I'm going to tweet from rOpenSci
    when those things are up.
  • 2:00 - 2:06
    We use a shared Google Doc,
    which if anyone's in there
  • 2:06 - 2:08
    could you please paste the link back
    into the zoom
  • 2:08 - 2:10
    so that new joiners can see this.
  • 2:10 - 2:14
    We typically use a Google Doc
    in our community calls
  • 2:14 - 2:16
    for collaborative note taking.
  • 2:17 - 2:23
    You can find that at
    bit.ly/ropensci-commcall-maintaining
  • 2:25 - 2:30
    I'd like you to add your name
    and your affiliation into the attendees list.
  • 2:30 - 2:35
    And there's a format there that you can follow
    because it helps me grab that information.
  • 2:37 - 2:42
    In this call, it's a different flavor for us,
    we've decided to do this as a panel discussion
  • 2:42 - 2:46
    as opposed to a series of talks
    with attendees asking questions.
  • 2:47 - 2:50
    And so we're going to have
    one short presentation,
  • 2:50 - 2:53
    followed by a panel discussion,
    full of pre-selected questions.
  • 2:54 - 2:58
    I've already typed each of these questions
    that are planning to be asked in the doc
  • 2:58 - 3:03
    and so invite anyone to add any comments
    you're interested in capturing from the panelists,
  • 3:03 - 3:08
    as well as any expertise,
    any thoughts you might have about this
  • 3:08 - 3:11
    because we really are
    a bunch of rich resource people here.
  • 3:11 - 3:16
    And so audience answers are just as valuable
    as the panelist answers at this point.
  • 3:17 - 3:21
    And this is something that we end up sharing
    as a long-term resource.
  • 3:21 - 3:23
    It will be accessible forever.
  • 3:23 - 3:28
    This time, unfortunately,
    we won't have time for taking impromptu questions
  • 3:28 - 3:30
    from attendees on the community call
  • 3:30 - 3:34
    but I've created a separate section in the doc
    called questions - Part B,
  • 3:34 - 3:38
    where you can ask questions
    that come up for you
  • 3:38 - 3:42
    and I invite anyone
    to answer each other's questions.
  • 3:43 - 3:47
    And together, as I say, we'll make this
    a rich resource for everyone to use.
  • 3:48 - 3:51
    So finally, it's my pleasure
    to introduce our panel.
  • 3:52 - 3:55
    Julia Silge recently joined RStudio
  • 3:55 - 3:57
    as a data scientist and software engineer.
  • 3:58 - 4:01
    When we put out a call for a new
    maintainer for the qualtRics package,
  • 4:01 - 4:04
    Julia took it on because
    she was using it in her day job
  • 4:04 - 4:06
    as a data scientist at StackOverflow
    at the time
  • 4:06 - 4:10
    And she worked on the annual developer survey
    using qualtRics.
  • 4:10 - 4:13
    She also maintains other R packages,
    including tidytext,
  • 4:13 - 4:16
    which has been downloaded almost
    900,000 times.
  • 4:17 - 4:18
    Elin Waring
  • 4:18 - 4:21
    is a professor of sociology and interim dean
  • 4:21 - 4:25
    of the School of Health Sciences, human services
    and nursing at Lehman College CUNY
  • 4:25 - 4:28
    She teaches research methods
    and statistics.
  • 4:28 - 4:31
    Elin was part of the rOpenSci Unconf17 group
  • 4:31 - 4:33
    that developed the skimr package
  • 4:33 - 4:37
    which has become very popular
    at over 250,000 downloads.
  • 4:38 - 4:41
    Elin works with Michael Quinn
    to maintain skimr
  • 4:41 - 4:44
    as they've shepherded it
    through two major releases already.
  • 4:44 - 4:46
    She formerly was a contributor
    and maintainer
  • 4:46 - 4:48
    for the Joomla CMS project
  • 4:48 - 4:49
    and her approach to maintaining
  • 4:49 - 4:51
    is influenced by that experience.
  • 4:51 - 4:53
    This includes understanding
    the importance of having a clear concept
  • 4:53 - 4:56
    of what you're trying to achieve,
  • 4:56 - 4:58
    being able to politely but firmly say no,
  • 4:59 - 5:01
    and knowing having users changes everything.
  • 5:02 - 5:04
    Erin Grand is a data scientist
  • 5:04 - 5:06
    at Uncommon Schools
  • 5:06 - 5:09
    and a Board member of
    R-Ladies New York City.
  • 5:09 - 5:10
    Erin created and maintains a package
  • 5:10 - 5:12
    for NASA's Astronomy Picture of The Day
  • 5:12 - 5:17
    It's called astropic and it was inspired
    by her early love of astronomy.
  • 5:17 - 5:19
    And one of her own images was featured
  • 5:19 - 5:21
    as Astronomy Picture of the Day.
  • 5:21 - 5:22
    Life goal achieved!
  • 5:23 - 5:26
    She also maintains a set of
    Internal packages at her work.
  • 5:27 - 5:30
    Leonardo Collado-Torres is a
    research scientist
  • 5:30 - 5:32
    at the Lieber Institute
    for brain development.
  • 5:32 - 5:34
    He maintains several
    Bioconductor packages,
  • 5:34 - 5:39
    including recently submitted spatialLIBD
    for spatial transcriptomics data.
  • 5:39 - 5:42
    He's a co-founder of the LIBD rstats club,
  • 5:42 - 5:45
    the CDSB Mexico community of R
  • 5:45 - 5:47
    and Bioconductor in Latin America
  • 5:47 - 5:50
    and those members just submitted
    their first package to Bioconductor.
  • 5:51 - 5:57
    This represents a dramatic percent increase
    in Latin American Bioconductor developers.
  • 5:57 - 5:58
    So, congratulations!
  • 5:58 - 6:01
    Also, congratulations, Leo,
    just in the last couple of days,
  • 6:01 - 6:04
    was promoted
    to the position of Research Scientist
  • 6:04 - 6:06
    and he's written a post about that.
  • 6:07 - 6:12
    Scott Chamberlain, our final panelist,
    is a co-founder and technical lead of rOpenSci.
  • 6:12 - 6:16
    He maintains, in his words,
    probably too many packages.
  • 6:16 - 6:19
    Part of Scott's work involves
    finding new maintainers
  • 6:19 - 6:21
    for rOpenSci peer reviewed packages.
  • 6:22 - 6:26
    And he tries to find those when
    current maintainer needs to move on,
  • 6:26 - 6:28
    like the qualtRics example.
  • 6:28 - 6:32
    His bio is really shortest
    because he's actually far too humble.
  • 6:34 - 6:36
    Julia is going to speak
    for about 10 minutes
  • 6:36 - 6:40
    and then for the rest of the hour,
    she's going to be moderating a panel discussion
  • 6:40 - 6:42
    with pre-selected questions.
  • 6:42 - 6:45
    For people who have just joined,
    thank you for sharing the link
  • 6:45 - 6:47
    to the shared Google Doc again in the zoom.
  • 6:48 - 6:53
    Please add your notes there,
    add your own questions in the bottom.
  • 6:53 - 6:55
    I am now going to share my screen
  • 6:55 - 7:03
    because I will note for people joined that
    Julia is not sharing her lovely face in home backdrop,
  • 7:03 - 7:05
    because there was an earthquake
    where she is,
  • 7:05 - 7:06
    she lost internet.
  • 7:06 - 7:08
    And so I'm going to be showing her slides.
  • 7:08 - 7:10
    So if you'll give me a moment.
  • 7:11 - 7:14
    Sure... Well... [inaudible]
  • 7:17 - 7:18
    [Julia Silge] Fingers crossed.
  • 7:18 - 7:23
    Yeah, there was a 5.7 earthquake
  • 7:23 - 7:27
    at your needs and it was not super big.
  • 7:27 - 7:33
    But enough that one of the aftershocks
    knocked out internet at my house
  • 7:33 - 7:37
    and I'm trying to be able to still speak
  • 7:37 - 7:43
    If we lose me,
    then I know that everything will keep going
  • 7:43 - 7:46
    and in a great way.
  • 7:46 - 7:48
    So,
  • 7:49 - 7:55
    So we're going to talk through these slides
    about just briefly about particular perspectives
  • 7:55 - 7:57
    on maintaining an R package.
  • 7:57 - 8:01
    So if we go to that slide about being...
  • 8:02 - 8:05
    Let's see that, next slide...
  • 8:05 - 8:09
    Maintaining an R package we often think...
    we cannot...
  • 8:09 - 8:12
    There's a Reese's about
  • 8:12 - 8:16
    when you're building R package,
    about what we focus on
  • 8:16 - 8:18
    in the technical aspects.
  • 8:18 - 8:20
    But once you're in the piece,
  • 8:20 - 8:22
    though the part of you actually
    built your package
  • 8:22 - 8:23
    and people are using it.
  • 8:23 - 8:26
    There's quite a balance
    in the amount of time
  • 8:26 - 8:29
    that we spend managing technical work,
  • 8:29 - 8:34
    which is, of course,
    extremely important with social aspects
  • 8:34 - 8:37
    of who is using the package, if you will,
  • 8:37 - 8:41
    involves often with asking
    a lot of the right questions
  • 8:41 - 8:43
    (go to the next slide)
  • 8:43 - 8:46
    Some of the right kinds of questions
    that we ask
  • 8:46 - 8:49
    when we're thinking about
    what it takes you to packaging,
  • 8:49 - 8:51
    the date, or some of these like --
  • 8:51 - 8:57
    Is this a package that's used really broadly
    by a lot of different kinds of people
  • 8:57 - 8:58
    and we can think beginners?
  • 8:58 - 9:02
    Is this a package that has a specialized use case
  • 9:02 - 9:06
    or that's used by people who know each other,
    internally at a company?
  • 9:07 - 9:11
    Is the person maintaining the package,
    the person who put it together originally,
  • 9:11 - 9:15
    or as has it been passed along
    a couple of times?
  • 9:15 - 9:17
    When you think about
    maintaining your package...
  • 9:17 - 9:23
    I'm interested here as we have our discussion
    what people's perspectives on like
  • 9:23 - 9:24
    how do we change?
  • 9:24 - 9:28
    And so you can either thinking
    about packages changing over time
  • 9:28 - 9:31
    or, packages being superseded.
  • 9:31 - 9:39
    And it's been interesting in our discussions
    preparing for this community call.
  • 9:40 - 9:43
    Software doesn't live forever.
  • 9:43 - 9:49
    And when we build software,
    do we put thoughtfulness into
  • 9:49 - 9:51
    what do we expect to happen next?
  • 9:51 - 9:53
    So we can go to the next slide.
  • 9:53 - 9:57
    One of the motivating ideas
    of setting up this community call
  • 9:57 - 10:04
    is that most software out there,
    whether you're talking about R packages or not,
  • 10:05 - 10:09
    have one main person who keeps it running
  • 10:09 - 10:16
    and a goal of rOpenSci,
    and a lot of us in this community,
  • 10:16 - 10:24
    is to build up the sustainability
    of our software ecosystem.
  • 10:24 - 10:29
    And it's somewhat brittle
    and also contributes to burnout
  • 10:29 - 10:34
    and uncertainty about
    what is going to happen
  • 10:34 - 10:37
    when we just have one maintainer.
  • 10:37 - 10:39
    Some other things
    you can struggle with are
  • 10:39 - 10:45
    You know, literally no one else knows
    what to do with this internal of this package too.
  • 10:45 - 10:53
    What do you do with one person having to manage
    sometimes what can feel like
  • 10:53 - 10:57
    an overwhelming amount of feedback from users.
  • 10:58 - 11:00
    If you go to the next slide
  • 11:00 - 11:03
    There's interesting research out there
    about
  • 11:03 - 11:06
    both like what is the situation
    with software contributors
  • 11:06 - 11:12
    and how can we either navigate that situation,
  • 11:12 - 11:17
    encourage more or figure out
    what the right path could be for a community.
  • 11:19 - 11:27
    The references at the bottom here
    of analysis of open source contributors
  • 11:27 - 11:30
    In this analysis, they did --
  • 11:30 - 11:32
    It's not uncommon to find
  • 11:32 - 11:35
    casual contributors,
    like people who are not the main maintainer
  • 11:35 - 11:40
    and you have a situation where there's
    a lot of, a long tail of small contributions,
  • 11:40 - 11:45
    so like half the contributors
    are responsible for 2% of the commits.
  • 11:45 - 11:48
    But they are lots of different kinds of commits.
  • 11:48 - 11:52
    These 2% of commits
    from lots of different kinds of people
  • 11:52 - 11:53
    are lots of kinds of things.
  • 11:54 - 12:00
    You know there are things like typos,
    but they're also things like fixing bugs
  • 12:00 - 12:03
    and building new features and refactoring.
  • 12:04 - 12:08
    This ... contributes --
  • 12:08 - 12:12
    What this is, is evidence that
    these are people who could be scaled up
  • 12:12 - 12:15
    to being more contributor,
    more contributing,
  • 12:16 - 12:21
    more significant maintainer or contributors,
    if that is appropriate for your program.
  • 12:21 - 12:23
    If you go to the next slide.
  • 12:23 - 12:26
    We often have this model
    of software contributions,
  • 12:26 - 12:29
    where we have to think of it as
    like an onion model
  • 12:29 - 12:33
    where you've got the users,
    and the contributors are inside of there,
  • 12:33 - 12:36
    and the committers are inside of there.
  • 12:36 - 12:38
    And that's often how we have
    this mental model
  • 12:38 - 12:41
    of like how, why, the software work,
    you know.
  • 12:41 - 12:46
    But, we might want to consider whether
    that is the best model
  • 12:46 - 12:52
    and instead move to what's on the next slide,
    which is a hub and spoke model
  • 12:52 - 12:55
    where the code is central, right?
  • 12:55 - 12:58
    Like, that's the thing that we're all using.
    So that is in the middle.
  • 12:58 - 13:01
    And there are maintainer
    who work mostly on code,
  • 13:01 - 13:06
    but there are also other kinds
    of maintenance activities happening
  • 13:06 - 13:12
    So there are maintainer of the software
    who focus mainly on education and docs.
  • 13:12 - 13:16
    There are maintainers
    who focus mainly on issue triage.
  • 13:16 - 13:19
    There are maintainers
    who focus mainly on evangelism.
  • 13:19 - 13:23
    And users kind of swim around in this --
  • 13:24 - 13:29
    swim around in this like in a soup
    around this hub and spoke model,
  • 13:29 - 13:33
    and depending
    on their particular need at any one time,
  • 13:33 - 13:37
    they engage with these different maintainers.
    Like, maybe the user-support one,
  • 13:37 - 13:41
    or maybe the people writing the code,
    or maybe the people writing the docs
  • 13:41 - 13:45
    and so like this might be
    a helpful mental model
  • 13:45 - 13:50
    for thinking about package maintenance,
    especially for larger packages
  • 13:50 - 13:52
    that have more users.
  • 13:52 - 13:56
    So if you can go to the next slide.
  • 13:57 - 14:01
    So it turns out we do actually have research
    and know what can contribute to,
  • 14:01 - 14:06
    what can encourage more contributions.
    So the next slide outlines something
  • 14:07 - 14:12
    For one study that was done, something
    that somethings that we, you know -
  • 14:12 - 14:17
    if you're involved with rOpenSci,
    you've heard this kind of thing
  • 14:17 - 14:18
    and seen this thing in action.
  • 14:18 - 14:22
    So, include and enforce a Code of Conduct.
  • 14:22 - 14:27
    Have cultural norms and
    include kindness and respect
  • 14:27 - 14:32
    Something that was here. That is interesting.
    I don't see a lot in R packages,
  • 14:32 - 14:35
    but could be interesting to consider.
  • 14:35 - 14:41
    That's: make more public or explicit
    any future plans you have.
  • 14:41 - 14:45
    That can help contributors know what to do.
  • 14:46 - 14:52
    And then the - if you go to the next slide.
    This paper also has some very interesting ideas
  • 14:52 - 14:59
    of how to help newcomers become
    contributors and maybe eventually maintainers.
  • 14:59 - 15:02
    These are all here.
    I'll highlight a couple
  • 15:02 - 15:06
    Let's talk about that.
    I'll just highlight that second one:
  • 15:06 - 15:11
    Have forms of participation
    that are legitimate in your projects,
  • 15:11 - 15:17
    that are valued,
    that are not writing code,
  • 15:17 - 15:23
    that are on ramps and
    then those last two I think are very interesting to
  • 15:23 - 15:31
    To explicitly acknowledge all contributions.
    To have a culture around your project
  • 15:31 - 15:36
    that doesn't let contributions just,
    kind of get, you know, swept away
  • 15:36 - 15:39
    and also to follow up both on success and failure.
  • 15:39 - 15:45
    If someone opens an issue or submits
    a PR that is not a good fit,
  • 15:45 - 15:49
    To follow up on both the things
    that succeed and fail.
  • 15:49 - 15:52
    So, what we just went through in those slides
  • 15:52 - 15:59
    are just some summary and thoughts
    on the current situation.
  • 15:59 - 16:01
    So a little bit of research of what we know.
  • 16:01 - 16:01
    You can go to the next slide.
  • 16:01 - 16:06
    The rest of the time that we're going to have
    here is going to be a panel discussion
  • 16:06 - 16:13
    If my phone tethering holds up,
    I am going to moderate this panel of folks
  • 16:13 - 16:17
    who are going to talk about some of
    our experiences.
  • 16:17 - 16:23
    Some of our opinions on maintaining
    R packages.
  • 16:23 - 16:27
    And if you will, the next slide that will
    just have some of the references.
  • 16:27 - 16:30
    Just to thank you.
    Where some of those images.
  • 16:30 - 16:34
    And a thank you to Scott for some
    of the research that he shared.
  • 16:34 - 16:36
    So thank you to all that.
  • 16:36 - 16:42
    And I think with that,
    we can get started with our discussion.
  • 16:44 - 16:47
    Alright. So if you're --
    So, panelists: Leo and...
  • 16:47 - 16:55
    So our panelists are:
    Leo, and Elin, and Scott, and Erin.
  • 16:56 - 17:01
    So, you all have been introduced,
    but can you unmute?
  • 17:01 - 17:04
    And then, to get started,
    I think the first question
  • 17:04 - 17:10
    I would love to have us discuss is:
    What does it mean to maintain an R package?
  • 17:10 - 17:11
    This is what we're talking about.
  • 17:11 - 17:14
    So, I would love to get
    your perspective on that.
  • 17:14 - 17:19
    So let's go around and so, briefly,
    let's first have all four of you all say like
  • 17:19 - 17:24
    What do you, like -- what does it mean to
    maintain R packages? So Elin, can you start?
  • 17:24 - 17:29
    So I think it means a couple of different things,
  • 17:29 - 17:33
    There is this very specific thing,
    that term you use 'committer' before,
  • 17:33 - 17:37
    which is people who can commit
    to the master branch
  • 17:37 - 17:44
    And in CRAN like the person whose name
    is going to be there as the email address for
  • 17:44 - 17:48
    and make the submission
    and they're going to be the prime contact
  • 17:48 - 17:51
    So that's one definition
    which is kind of the traditional
  • 17:52 - 17:54
    open-source way of thinking about it.
  • 17:54 - 17:57
    But then there is kind of,
    I think what you're getting to,
  • 17:57 - 18:02
    bigger possible group of people
    who are invested in making sure
  • 18:02 - 18:04
    that the package is maintained.
  • 18:04 - 18:07
    Meaning keeping --
    just like maintenance on anything,
  • 18:07 - 18:09
    keeping it up to date, dealing with bugs,
  • 18:11 - 18:18
    what happens when you stop working,
    because some other package updated
  • 18:18 - 18:20
    or because R, base R, change something
  • 18:21 - 18:23
    So someone who participates in that.
  • 18:23 - 18:27
    And then also, potentially,
    in all the other areas you were mentioning.
  • 18:27 - 18:30
    Yeah yeah nice! Scott?
  • 18:30 - 18:33
    What do you think it means
    to maintain an R package?
  • 18:35 - 18:40
    [Scott] Um, there's a lot of details, I guess.
    But I think that a very...
  • 18:40 - 18:42
    Can you hear me good?
    [Julia and Stefanie] Yeah.
  • 18:42 - 18:48
    At a very high level, I guess,
    the thing that came to mind first for me
  • 18:48 - 18:51
    was just that it's like
    a constant learning process.
  • 18:51 - 18:55
    A constant, sort of like,
    trying to figure out
  • 18:56 - 19:02
    how to do any particular thing better,
    whether it's testing or function compos--
  • 19:02 - 19:05
    like how your function is composed,
    the parameters or whatever.
  • 19:06 - 19:10
    And I think another point,
    about the second point that I came up with
  • 19:10 - 19:16
    was sort of constantly learning
    how to design better function interfaces.
  • 19:16 - 19:18
    You know how the functions are named,
    and the parameters are named,
  • 19:18 - 19:24
    and how their default values,
    their -- stuff like that.
  • 19:24 - 19:30
    So I think this is constant learning process
    of how to design easy to use interfaces.
  • 19:30 - 19:34
    [Julia:] Yeah yeah yeah yeah,
    all of what you both you just said
  • 19:34 - 19:40
    really resonate with my own experience
    with like the different packages I maintained.
  • 19:40 - 19:43
    Erin, when you think of like,
    maintaining an R package,
  • 19:43 - 19:45
    what do you think that actually means?
  • 19:46 - 19:51
    [Erin] Yeah, first of all,
    I agree with everything the other panelists said
  • 19:52 - 19:54
    Something that hadn't been mentioned, I think, is
  • 19:54 - 20:02
    the sort of ownership around community
    and communication of the package.
  • 20:02 - 20:10
    So, being the person who responds to issues
    or is looking at push requests,
  • 20:10 - 20:18
    and really, like, dealing with the communication
    out to contributors or to users
  • 20:18 - 20:23
    on either changes or what's happening
    with the package.
  • 20:23 - 20:27
    [Julia] Yeah. Nice!
    Yeah, that's absolutely, that's really great
  • 20:27 - 20:31
    And then Leo, what do you -- what about --
    what's your response to this?
  • 20:31 - 20:34
    What do you think it means means
    to maintain an R package?
  • 20:35 - 20:39
    [Leo] So I'm going to echo
    what some of the other panelists said
  • 20:39 - 20:43
    but for me it's like you deal
    with the questions you get from users.
  • 20:43 - 20:46
    You approve or disapprove changes
    that you receive from others
  • 20:46 - 20:49
    and you end up learning
    about community guidelines,
  • 20:49 - 20:52
    like my case like the Bioconductor guidelines.
  • 20:53 - 20:58
    And then you also have to --
    you end up learning about like are R-devel
  • 20:58 - 21:02
    and what changes are coming,
    how to anticipate those changes,
  • 21:02 - 21:05
    such that you can fix them
    before the user sees them.
  • 21:06 - 21:07
    [Julia] Yeah, that's great.
  • 21:07 - 21:14
    So one thing I heard a lot of you mention
    was like deal -- understanding users,
  • 21:14 - 21:19
    hearing from users...
    and, the issue of like user feedback
  • 21:19 - 21:23
    I think is a really interesting one
    when it comes to maintaining R packages.
  • 21:23 - 21:24
    So some R packa --
  • 21:24 - 21:29
    So some, you know, pieces of software
    are in the situation where you're like --
  • 21:29 - 21:36
    [inaudible]
  • 21:36 - 21:38
    [Erin] I think we lost you.
  • 21:38 - 21:41
    [Stefanie] Julia? We just lost your sound.
  • 21:44 - 21:47
    Folks, we have a backup plan.
    And for those of you in here:
  • 21:48 - 21:51
    Julia lost internet
    due to an earthquake today.
  • 21:52 - 21:53
    [Julia] But, you know, on the other --
  • 21:53 - 21:58
    [Stefanie] Oh! Julia! Hold on.
    We lost you for like 40 seconds.
  • 21:58 - 21:59
    [Julia] Oh, okay.
  • 21:59 - 22:03
    [Stefanie] Could you please restart by asking
    the question that you were just about to ask?
  • 22:03 - 22:05
    [Julia] Sure. Sure...
  • 22:05 - 22:13
    So user feedback is an issue
    that R packages need to deal with
  • 22:13 - 22:19
    and many packages need more contributors,
    not fewer
  • 22:19 - 22:22
    and so we often want to encourage
    user feedback.
  • 22:22 - 22:26
    At the same time,
    some packages are in the situation
  • 22:26 - 22:29
    where they have a fire hose
    of user feedback
  • 22:30 - 22:36
    And that fire hose
    can sometimes feel like --
  • 22:38 - 22:40
    You need to manage that.
  • 22:41 - 22:45
    How do you manage that?
    What kind of situations have you been in?
  • 22:45 - 22:49
    What strategies do you use
    to deal with user feedback?
  • 22:50 - 22:54
    Elin, can you start with this first
    because I think I've heard
  • 22:54 - 23:00
    you have some interesting perspectives on this,
    especially as someone who --
  • 23:00 - 23:04
    with skimr as a very popular package.
  • 23:04 - 23:09
    (Erin) Sure. So skimr is pretty popular
  • 23:09 - 23:12
    and we do get
    a lot of different kinds of user feedback
  • 23:12 - 23:16
    we get people who want to know
    how to do things in skimr,
  • 23:16 - 23:17
    they have questions about it.
  • 23:17 - 23:24
    We have people who want to make,
    you know, suggestions for future development.
  • 23:24 - 23:28
    And then we get people with issue reports
    and --
  • 23:28 - 23:30
    I will say... it --
  • 23:30 - 23:34
    when I said having users changes everything,
    it really does
  • 23:34 - 23:37
    because you do have kind of a relationship
    with them
  • 23:37 - 23:40
    and they're using --
    you've kind of --
  • 23:40 - 23:44
    It's complex, right?
    Because you've kind of given them something
  • 23:44 - 23:49
    And you want them to be grateful
    that you gave them this thing
  • 23:49 - 23:52
    and but you also, you know, in terms of --
  • 23:52 - 23:56
    if you're enjoying your package
    and you're developing it,
  • 23:56 - 23:58
    and you want to find out what's wrong.
  • 23:58 - 24:01
    So it's kind of like you feel good
    when people are asking you
  • 24:01 - 24:04
    and tweeting to you and stuff like that.
  • 24:04 - 24:08
    But it can also get a little bit overwhelming.
    I will say --
  • 24:08 - 24:14
    And skimr is kind of a strange case
    because it was first developed at the unconf.
  • 24:14 - 24:20
    And so people were tweeting about it like
    before it was finished,
  • 24:20 - 24:23
    before even like the first prototype
    was finished.
  • 24:23 - 24:29
    And so we had a lot of feedback right away
    about ideas of things to do
  • 24:29 - 24:35
    and people started using it.
  • 24:35 - 24:40
    Um, and so I'll just tell you
    how I kind of think about dividing it up
  • 24:40 - 24:41
    like one thing I did was:
  • 24:41 - 24:48
    within two weeks we had questions
    on StackOverflow about skimr.
  • 24:48 - 24:52
    And so in the end,
    once it got to like five questions,
  • 24:52 - 24:55
    I just created a tag.
    And so I have a tag that I follow.
  • 24:55 - 24:58
    And I find that's helpful.
  • 24:58 - 25:01
    We don't get that many questions anymore
    over there, but --
  • 25:01 - 25:05
    And then we have our issue tracker.
  • 25:05 - 25:10
    It's the main place where people show up
    and it's really helpful in a way
  • 25:10 - 25:16
    because we have some kind of heavy users
    who come in and say:
  • 25:16 - 25:22
    "hey, if you're on the development version of tibble,
    it doesn't work anymore because this happened."
  • 25:22 - 25:26
    And so that's helping us
    keep a little bit ahead of the game
  • 25:26 - 25:33
    because you don't want to find out
    that it breaks with the development version of tibble,
  • 25:33 - 25:40
    the day that there's a release
    and they can be really helpful with that,
  • 25:41 - 25:44
    On the other hand, the whole issue of --
  • 25:45 - 25:50
    You know, if you have a package
    that you're keeping for multiple years now.
  • 25:50 - 25:54
    You have things like your code style
    that you want to enforce
  • 25:54 - 25:57
    like we use spaces some places and
  • 25:57 - 26:03
    and we want to use the assignment operator
    and not the equal sign and things like that...
  • 26:03 - 26:08
    And so sometimes it's hard when users
    want to send a pull request.
  • 26:08 - 26:11
    And then you want them --
    you want to encourage them to contribute,
  • 26:11 - 26:12
    but you don't want them --
  • 26:12 - 26:18
    no, it feels kind of like
    you're being so OCD on like saying:
  • 26:18 - 26:21
    "Hey, would you mind adding a space here?"
  • 26:21 - 26:25
    And so I find it challenging to find the balance
    with that in terms of saying
  • 26:25 - 26:29
    I'll just fix it for you, versus asking them to fix.
  • 26:30 - 26:33
    [Julia] Yeah, yeah, there was -- some of the
    things you said in there in terms of like,
  • 26:33 - 26:37
    you know, following a tag
    on StackOverflow, or
  • 26:38 - 26:44
    You know, getting that note of should I edit a PR
    afterwards versus interacting with somebody?
  • 26:44 - 26:47
    Are things that I also have,
    kind of had to figure out,
  • 26:47 - 26:51
    like, what am I, what am I going to do.
    And so that's interesting.
  • 26:51 - 26:58
    Um, you addressed some of the issues
    around also managing feature requests as well,
  • 26:58 - 27:00
    which was another interesting question.
  • 27:00 - 27:03
    So Leo. I think you um --
  • 27:04 - 27:09
    I wanted to ask you about that issue
    of hearing from users
  • 27:09 - 27:11
    as someone who works
    on more specialized packages.
  • 27:12 - 27:15
    [Leo] Yes, so the packages
    I work with on Bioconductor,
  • 27:15 - 27:17
    they don't have as many users
  • 27:17 - 27:18
    [inaudible]
  • 27:18 - 27:21
    you needed some very expensive data
    sometimes
  • 27:22 - 27:24
    in order to use them.
  • 27:24 - 27:29
    And so the issue I deal with is that
  • 27:29 - 27:33
    from one side we have open source tools
    and we want to provide them
  • 27:33 - 27:36
    and you know for free and build
    a community around them.
  • 27:36 - 27:40
    But the other side, sometimes we have people
    that have this expensive private data.
  • 27:40 - 27:45
    Some published under scared about sharing it,
    even when they have questions.
  • 27:45 - 27:48
    So you end up getting a lot of emails.
  • 27:48 - 27:53
    And I try to convince them saying
    that this doesn't really benefit anyone
  • 27:53 - 27:58
    Because I mean, I learn from the experience.
    They learn from the experience,
  • 27:58 - 28:00
    but no one else really does.
  • 28:00 - 28:06
    So I tried to convince them to put
    their questions on the Bioconductor support website
  • 28:06 - 28:10
    and through it share small reproducible examples.
  • 28:11 - 28:14
    Sometimes I can write a blog post
    about the question,
  • 28:14 - 28:15
    but that's a lot more work for me.
  • 28:16 - 28:18
    [Julia] Yeah yeah
    Yeah, yeah, no, the same.
  • 28:18 - 28:21
    I bet this happens to a lot of folks
    who maintain packages.
  • 28:21 - 28:23
    You get the email and and
    then that's what I do too actually is like,
  • 28:25 - 28:29
    And sometimes, I will like help the person
    write the reprex
  • 28:29 - 28:31
    and then be like now post it because then it's like,
  • 28:31 - 28:35
    well now at least this person knows
    how to post a reprex
  • 28:35 - 28:40
    and can do it next time,
    because helping someone over email is not --
  • 28:40 - 28:44
    doesn't multiply in the way
    that like public stuff does. Exactly.
  • 28:44 - 28:45
    We've touched a little bit --
  • 28:45 - 28:48
    [Leo ] Sorry, just for that, like --
    what I tried to reward them with
  • 28:48 - 28:51
    is answering as fast as I can, but
  • 28:51 - 28:52
    (Julia) Yeah.
  • 28:52 - 28:53
    [Leo] questions they make.
  • 28:53 - 28:56
    [Julia] Yes.
    Yes, being really responsive on those channels.
  • 28:56 - 29:00
    We have already touched a little bit on,
    like managing issues and feature request,
  • 29:00 - 29:04
    but I wanted to get maybe
    one other person's perspective on that,
  • 29:04 - 29:06
    like about workflows, or whatever.
  • 29:06 - 29:10
    Scott, you have a ton of packages,
  • 29:10 - 29:17
    and I wonder if you have any perspective
    on user, on issues, feature requests
  • 29:17 - 29:20
    and any thoughts on like workflows
    around that.
  • 29:22 - 29:26
    [Scott] Um, yeah, I guess I have
    a lot of packages
  • 29:26 - 29:28
    but none of them are very popular.
  • 29:28 - 29:33
    So I think it's -- I don't really have
    that sort of tidyverse problem.
  • 29:34 - 29:41
    So, but, you know, things I try and do.
    Or I think Leo said this, you know, responding.
  • 29:41 - 29:44
    I try and respond to all issues quickly,
    even if I just say:
  • 29:44 - 29:46
    'Hey, I got it.
    And I'm going to have a look at it.'
  • 29:47 - 29:52
    I think it's important to sort of give people
    that feedback so they don't walk away
  • 29:52 - 29:53
    from your package.
  • 29:53 - 29:57
    And I think that's likely going to happen
    if they don't have a response.
  • 29:57 - 29:59
    [Julia] Yeah. Absolutely.
  • 29:59 - 30:02
    [Scott] Um, and then feature requests...
  • 30:03 - 30:08
    I think it's always good advice
    to think about scope creep
  • 30:08 - 30:11
    And if you're, you know --
    if something's out of scope,
  • 30:11 - 30:15
    then make sure to say that
    and just, yeah. And instead of --
  • 30:15 - 30:22
    try not to get your package
    to be too disjointed for users.
  • 30:24 - 30:26
    [Julia] Yeah. Nice. Nice.
  • 30:26 - 30:29
    Alright, so one of the goals that -
    like one of the motivating goals
  • 30:29 - 30:34
    for this discussion is that,
    hey, most packages only have one maintainer.
  • 30:34 - 30:37
    And it'd be better
    if there was a broader
  • 30:37 - 30:39
    broader groups of people
    who can maintain.
  • 30:39 - 30:46
    So what is a path for someone,
    for new contributors to R packages.
  • 30:47 - 30:49
    So, for example, what it would be a first step.
  • 30:49 - 30:54
    What should someone do
    if they want to help maintain one of your packages?
  • 30:54 - 30:58
    So let's um... so Erin:
    can you say that,
  • 30:58 - 31:01
    so you've got like some up
    like a public package on GitHub.
  • 31:01 - 31:03
    You maintain packages internally.
  • 31:03 - 31:06
    What should someone do
    if they want to help with one of your packages?
  • 31:07 - 31:10
    [Erin] Yeah, I'll take this
    from the internal side.
  • 31:10 - 31:15
    Because I think that's a perspective that
    I come from a lot more often.
  • 31:15 - 31:21
    Because I have like four packages
    in that case in one package external
  • 31:21 - 31:28
    but in terms of how do I look for
    new contributors and maintainers,
  • 31:28 - 31:34
    a lot of my communication and issues
    and features or feature requests
  • 31:34 - 31:37
    for an internal package
    or like a work specific package.
  • 31:37 - 31:43
    Come via slack, even though
    the package is hosted on on GitHub, or Gitlab.
  • 31:43 - 31:48
    The questions and comments and issues
    come in via like a different tool.
  • 31:48 - 31:55
    So if someone is constantly asking questions
    or constantly asking for features,
  • 31:55 - 31:58
    it's pretty easy to be like, all right,
    will onboard you to this package
  • 31:58 - 32:01
    and then voila,
    you may update it yourself!
  • 32:04 - 32:11
    Exactly. So I think like, for me,
    if you're interested in the package,
  • 32:11 - 32:14
    if you have questions on the package
  • 32:14 - 32:21
    and if you've like shown an ability
    to contribute to any package at all before
  • 32:21 - 32:26
    I think one like first initial step is
    to have your own package
  • 32:26 - 32:28
    or have something
    that you've contributed somewhere
  • 32:28 - 32:31
    just to show that you know
    what an R package is in the first place.
  • 32:32 - 32:37
    But really motivation is the,
    the important thing.
  • 32:37 - 32:40
    [Julia] Yeah. Nice. Nice.
    What about you, Scott?
  • 32:40 - 32:43
    What, like what do you see
    as like a path for someone to get on?
  • 32:43 - 32:48
    And what would be like the first
    like a first step for someone who is interested ?
  • 32:50 - 32:52
    [Scott] Yeah, I guess my first,
    my main point was
  • 32:52 - 32:56
    what Erin already said was essentially is,
    you know,
  • 32:56 - 33:01
    From my experience, like
    the most successful sort of new contributors
  • 33:01 - 33:05
    are people that end up
    taking over packages or contribute a lot
  • 33:05 - 33:09
    or people that use the package
    and their package is a dependency
  • 33:09 - 33:11
    or in a project or whatever.
  • 33:11 - 33:16
    And so they sort of have this at least short term,
    you know vested interest in the package
  • 33:16 - 33:20
    because you know you have
    drive by contributors that will fix a bug
  • 33:20 - 33:22
    or do this or that.
  • 33:22 - 33:27
    But it's often
    when your package is a dependency
  • 33:27 - 33:30
    or sort of major part of somebody's project
    or something.
  • 33:30 - 33:35
    And so that's always a good,
    a good place to find contributors. Um, yeah.
  • 33:37 - 33:41
    [Julia] Yes. Well, speaking of dependencies,
    speaking of dependencies...
  • 33:41 - 33:43
    That's a big part.
  • 33:43 - 33:49
    I mean, that's a big bit of like the decisions
    around maintaining an R package
  • 33:49 - 33:53
    like deciding what do I want to take on
    as a dependency.
  • 33:54 - 33:58
    Like do I want to, do I want to...
    like what do I want to depend on
  • 33:59 - 34:04
    Do I want to like rewrite something internally
    or take on dependency,
  • 34:04 - 34:10
    like everything from like something like,
    you know, off to some little algorithm or whatever.
  • 34:11 - 34:15
    So, so I would love to hear something
    about that.
  • 34:15 - 34:20
    So Leo, what are some of the thoughts
    you have had
  • 34:20 - 34:22
    as you have made those decisions
    in your packages?
  • 34:23 - 34:27
    [Leo] Yes.
    So, in the Bioconductor realm,
  • 34:28 - 34:33
    there's the Bioconductor core team
    that they did their own grants and funding
  • 34:33 - 34:38
    and they maintain the core packages,
    the core infrastructure packages.
  • 34:38 - 34:39
    So I tried to depend on those
  • 34:39 - 34:42
    because I know
    they're going to be professionally maintained.
  • 34:43 - 34:46
    Also they have access to your package.
  • 34:46 - 34:51
    So if you depend on them
    and they make change that breaks your package,
  • 34:51 - 34:55
    they can actually go and fix yours
    without you actually doing anything.
  • 34:57 - 35:00
    And similarly, we try to rely on
    like the tidyverse packages,
  • 35:00 - 35:07
    because I know that they're well funded
    to keep working on the packages and and fix them.
  • 35:07 - 35:13
    But I also like to depend on packages
    from authors that I have interacted with in the past.
  • 35:13 - 35:16
    That's also sometimes
    how I find out about this packages from like--
  • 35:17 - 35:18
    [Julia] Yeah yeah
  • 35:18 - 35:23
    Yeah yeah yeah yeah that --
    yeah, those that -- So yeah,
  • 35:23 - 35:25
    so things that you know
    are stable projects,
  • 35:25 - 35:28
    things that you know
    you have relationships with people,
  • 35:28 - 35:30
    that you'll be able to communicate with.
  • 35:30 - 35:32
    Yeah, that all, that all makes sense.
  • 35:32 - 35:37
    Another, um, some --
    so there's dependencies,
  • 35:37 - 35:41
    and then there's --
    then, there are also
  • 35:41 - 35:46
    like other things that so they can change,
    right and you have to manage that.
  • 35:46 - 35:49
    Then there's also APIs that can change.
  • 35:49 - 35:55
    So like Erin, your package that's on GitHub
    is an API package, right?
  • 35:56 - 35:58
    [Erin] Yeah, exactly!
  • 35:58 - 36:03
    [Julia] And like, so you have to,
    you have to like pay attention to
  • 36:03 - 36:05
    when the API itself changes.
  • 36:07 - 36:11
    [Erin] Yeah, precisely so as an example:
  • 36:13 - 36:18
    Astronomy Picture of the Day, or APOD
    as it's more commonly called
  • 36:18 - 36:23
    can either post a, like a picture
    or an image or a gif.
  • 36:23 - 36:27
    And then all of that information is supposed
    to get transferred back into the API.
  • 36:27 - 36:31
    But for a really long time,
    there was an error.
  • 36:31 - 36:36
    Anytime there was the --
    with the API, anytime there was a video
  • 36:36 - 36:38
    that was accessed.
  • 36:38 - 36:42
    So it was able to basically download
    any information about any pictures
  • 36:42 - 36:45
    but any time there was a video,
    there was a problem.
  • 36:45 - 36:48
    So I wrote in this like whole test.
  • 36:48 - 36:54
    Like: if video,
    do not pull this day of information.
  • 36:55 - 37:00
    So that the user doesn't see the error,
    they just don't get an image back
  • 37:00 - 37:02
    and then they fixed the --
  • 37:02 - 37:04
    [Julia] They fixed it!
  • 37:04 - 37:10
    [Erin] Making my whole
    little workaround unnecessary.
  • 37:10 - 37:12
    So like keeping on track of like
  • 37:12 - 37:16
    (a) what's like issues
    are happening in the API
  • 37:16 - 37:19
    to either like find workarounds
    or solve them
  • 37:19 - 37:27
    or even like do a pull request to this
    like API source to fix it for them.
  • 37:27 - 37:31
    I think it's like an important part
    of maintaining
  • 37:31 - 37:36
    a package solely based on
    an API structure.
  • 37:36 - 37:38
    [Julia] Yeah and you know that's, um --
  • 37:38 - 37:42
    There are a lot of parallels just with
    Just with like if you're dependent
  • 37:42 - 37:46
    on another R package in general, you know,
    like everything you just said about the API,
  • 37:46 - 37:50
    that happens with just other software
    that you're dependent on.
  • 37:50 - 37:55
    Either other R packages or non-R software,
    you know, and that is for sure
  • 37:55 - 38:02
    part of this whole deal and like,
    choosing carefully what software
  • 38:02 - 38:05
    Are you going to decide to use or not.
  • 38:05 - 38:10
    And, you know, people do --
    you know Leonardo shared his perspective.
  • 38:10 - 38:13
    But people have different sets of priorities
    they bring to that
  • 38:13 - 38:18
    and make different decisions,
    depending on their own perspective
  • 38:18 - 38:21
    which I think is, you know, makes sense
    and it's fine.
  • 38:21 - 38:23
    Um, one thing that happens in packages, is that
  • 38:26 - 38:26
    They that
  • 38:28 - 38:30
    Packages don't keep the maintainer forever.
  • 38:30 - 38:33
    I mean we you know we are talking
    about the fact that,
  • 38:33 - 38:35
    like the qualtRics package
    had a different maintainer.
  • 38:35 - 38:38
    He wasn't using it anymore.
    And then I started maintaining it.
  • 38:38 - 38:42
    And actually, like, since I moved --
    I switched jobs from StackOverflow to RStudio
  • 38:43 - 38:47
    RStudio doesn't use qualtRics for surveys
    and so I'm actually --
  • 38:47 - 38:51
    Like I kind of have a stopgap
    saying in place for now,
  • 38:51 - 38:55
    but I'm gonna, I'm actually looking for someone else
    to take over qualtRics in the long term.
  • 38:55 - 38:57
    Because it like --
  • 38:57 - 39:01
    it is better, if it's someone who uses it,
    who is actually actively using it so that
  • 39:01 - 39:06
    So this is something that has to happen
    in real in the real world is that
  • 39:06 - 39:10
    maintainers, packages, pieces of software
    have to change and maintainers.
  • 39:10 - 39:14
    And so I'm wondering what sets --
  • 39:14 - 39:19
    if you have experienced this,
    what sets that up for success?
  • 39:19 - 39:25
    And this is something that probably
    looks different in open source software
  • 39:25 - 39:30
    versus internal packages
    versus, you know, and really big packages
  • 39:30 - 39:31
    versus small packages.
  • 39:31 - 39:39
    So maybe, Scott, can you talk about
    what this has looked like for you?
  • 39:39 - 39:44
    You know, how you would manage that,
    say in rOpenSci?
  • 39:46 - 39:47
    [Scott] Yeah.
  • 39:48 - 39:52
    So for most of the ones
    I've been involved with
  • 39:52 - 39:59
    They'd mostly been sort of
    wholesale letting somebody else
  • 39:59 - 40:02
    manage the package without
    sort of me being involved.
  • 40:02 - 40:08
    And so that's mostly what's happened
    and I think that's worked okay
  • 40:08 - 40:14
    and I think like one of the things
    that you have to be okay with those sort of giving up
  • 40:14 - 40:18
    being okay with giving up control
    of your baby.
  • 40:18 - 40:20
    [Julia] Yeah, it's not yours anymore so...
  • 40:20 - 40:24
    [Scott] Yeah, that can be hard, but you know,
    you just have to sort of say,
  • 40:24 - 40:29
    you know, the new person Is the maintainer
    and if they want to change the functions
  • 40:29 - 40:33
    and whatever, like it's you know
    it's their package, they're the maintainer.
  • 40:33 - 40:38
    I think it's it's worked pretty well,
    but I think an important thing is being there.
  • 40:38 - 40:41
    Being, you have to sort of be available
    at least for a little while
  • 40:41 - 40:46
    for people to get oriented
    and that can take some time.
  • 40:46 - 40:50
    And I think an important thing
    when looking for a new maintainer
  • 40:50 - 40:53
    is trying to find somebody
    that knows the topic area.
  • 40:53 - 40:54
    [Julia] Yes, absolutely.
  • 40:54 - 40:57
    [Scott] That's like
    if it's a genomics package,
  • 40:57 - 41:00
    then it should be somebody in genomics probably
    because they're going to maybe use it
  • 41:00 - 41:05
    and maybe know the area
    know this sort of ins and outs of that type of data.
  • 41:05 - 41:07
    So. Yeah.
  • 41:08 - 41:09
    [Julia] Yeah, all right.
  • 41:09 - 41:14
    Erin, can you reflect on that maybe
    in the internal package domain.
  • 41:14 - 41:17
    Like what, like, what does it
    take to pass things off well
  • 41:17 - 41:22
    because that, actually in my experience,
    it happens a lot in internal
  • 41:22 - 41:24
    because people change jobs.
  • 41:24 - 41:26
    [Erin] Yeah, exactly.
  • 41:26 - 41:30
    I think one of the major differences
    that I've seen with passing an internal package
  • 41:30 - 41:34
    is the like time of notice
  • 41:34 - 41:35
    [Julia] Yeah.
  • 41:35 - 41:39
    [Erin] Someone switching jobs,
    they may not tell the other people
  • 41:39 - 41:42
    that there's two things out until
    the like two weeks beforehand,
  • 41:42 - 41:46
    in which case they have a lot
    of other things to offboard.
  • 41:46 - 41:50
    That might not be top priority.
  • 41:50 - 41:57
    So I think it comes to having
    clear like guidelines
  • 41:57 - 42:00
    around what the package does,
    the style of the code, where it's located,
  • 42:00 - 42:06
    where questions and answers happen
    like a side effect in Slack
  • 42:06 - 42:12
    or effect in GitHub in a way
    to sort of pass off everything
  • 42:12 - 42:15
    through written documentation
  • 42:15 - 42:19
    if like in person or
    over zoom communication
  • 42:19 - 42:25
    like can't happen due to
    other time commitment or at work.
  • 42:25 - 42:32
    But if like possible, then having
    like a real like onboarding experience
  • 42:32 - 42:36
    of walking someone through
    the ins and outs of a package,
  • 42:36 - 42:38
    I've found to be very useful.
  • 42:38 - 42:41
    But there's not always
    a lot of time for it.
  • 42:41 - 42:43
    [Julia] Absolutely. Absolutely.
  • 42:43 - 42:48
    All right, one question I'd like to ask
    Is about the decision
  • 42:48 - 42:56
    to submit a package to some kind of like
    centralized repository like CRAN or Bioconductor
  • 42:56 - 43:01
    or to do something like peer review,
    like rOpenSci,
  • 43:01 - 43:07
    Or just the Journal of Open Source Software
    versus maybe to say only on GitHub.
  • 43:07 - 43:11
    And Elin, I was wondering,
    so you know you maybe in the context of
  • 43:11 - 43:12
    you've worked in a lot of
    different kinds of software,
  • 43:12 - 43:16
    but then you had skimr
    you all started it at the unconf
  • 43:16 - 43:21
    and then you know,
    so it was rOpenSci package
  • 43:21 - 43:22
    and then you did decide
    to submit it to CRAN
  • 43:22 - 43:28
    like what do you think, how do you,
    what do you think are the right decisions
  • 43:28 - 43:32
    to consider when deciding
    when making those decisions?
  • 43:32 - 43:37
    [Elin] So it's good
    because it's a really good question.
  • 43:37 - 43:43
    We took a while to decide
    to submit it to CRAN
  • 43:43 - 43:47
    like at first we were just working on
    getting the functionality and thinking about it.
  • 43:47 - 43:51
    And we reverted we --
    you know version numbers are really important.
  • 43:51 - 43:56
    And at the conference at the unconf,
    we kind of started, we said it's version one
  • 43:56 - 44:01
    but then afterwards, a few weeks later,
    we went back and said it was like version 0.5 instead
  • 44:01 - 44:05
    Because once you say it's version one,
  • 44:05 - 44:09
    you really kind of making a promise to people
    that it's going to work.
  • 44:09 - 44:14
    And if you, you can always if it's less than one
    Kind of, say, it doesn't .
  • 44:14 - 44:16
    'Yeah we're not promising anything.'
  • 44:16 - 44:19
    And you can put that in your README.
    And definitely when you're going to CRAN,
  • 44:19 - 44:23
    All of a sudden, it really, you know,
    they're going to do what they do.
  • 44:23 - 44:26
    Everybody complains,
    but they're maintainers too, right?
  • 44:26 - 44:31
    And so they're going to do what they do
    to make sure that everything works
  • 44:31 - 44:37
    and they're going to find a million little things
    that you didn't really follow the rules on.
  • 44:39 - 44:42
    And then all of a sudden,
    you have this world of users
  • 44:42 - 44:45
    and you've kind of made
    this published manual on the web
  • 44:45 - 44:49
    that anybody can find and
    it's just a different feeling
  • 44:49 - 44:53
    when you once you're in one of those repos,
    I think in one of those repository.
  • 44:53 - 44:57
    With just in GitHub,
    I actually sometimes don't even put a license.
  • 44:57 - 45:00
    I mean, I know they get mad
    but I just don't put a license sometimes
  • 45:00 - 45:05
    because I'm like, I'm not even sure
    I want people to have that much confidence
  • 45:05 - 45:10
    in this package.
    That they should be using it.
  • 45:10 - 45:13
    And you know, I do have another one
    from the following year's unconf,
  • 45:13 - 45:15
    which is called qcoder.
  • 45:15 - 45:18
    And we actually have
    quite a few users of qcoder,
  • 45:18 - 45:21
    but not at the same volume,
    because it's not, you know,
  • 45:21 - 45:25
    It could go on CRAN, you know, probably,
    I could get it ready in a couple weeks.
  • 45:25 - 45:31
    But I just, I don't feel like ready
    to have a lot of users there.
  • 45:31 - 45:34
    So I just think you're making
    that big decision.
  • 45:34 - 45:38
    The other thing is, once you're on CRAN,
    that's actually when --
  • 45:38 - 45:42
    and I'm sure with Bioconductor as well,
    then all of a sudden you're going to have
  • 45:42 - 45:47
    other packages using you as a dependency,
    and especially because they changed, you know,
  • 45:47 - 45:55
    Nobody can use a GitHub package anymore.
    If you're, you know, in CRAN and so it --
  • 45:55 - 45:56
    but it has, you know --
  • 45:56 - 45:59
    once you have those other people out there,
    then depending on you,
  • 45:59 - 46:05
    that also creates a level of
    kind of social obligation, social contract
  • 46:05 - 46:07
    where, you know, you could say:
  • 46:07 - 46:10
    'Okay, I'm just gonna
    let my package get archived.'
  • 46:10 - 46:14
    But then all this other stuff breaks
    and you know you feel bad about that.
  • 46:14 - 46:16
    Well, if you're me anyway.
  • 46:17 - 46:22
    So, you're kind of once you're in,
    it's there.
  • 46:22 - 46:24
    There's just a snowballing of it.
  • 46:24 - 46:28
    And I feel like in, you know, your GitHub,
    you can just say:
  • 46:28 - 46:31
    'Hey, I put it out there.
    Feel free to fork it.'
  • 46:31 - 46:34
    Right, that's another thing,
    no one mentioned, right?
  • 46:34 - 46:39
    I mean, again in open source,
    there is kind of the social contract
  • 46:39 - 46:41
    that a fork is the last resort.
  • 46:41 - 46:50
    But if a maintainer totally ghosts the project,
    then they someone else can always work the project
  • 46:50 - 46:53
    and make the fixes and you know,
    I certainly have done that.
  • 46:53 - 46:57
    Not for public consumption
    but just for free.
  • 46:57 - 47:03
    Yeah, where there's like I use,
    For teaching I use RStudio Server a lot.
  • 47:03 - 47:06
    And there's some packages that don't
    work well on RStudio Server.
  • 47:06 - 47:09
    And so, you know, I have my little fixes.
  • 47:09 - 47:13
    They know it's like when you're ready for my bug
    and interested in supporting it,
  • 47:13 - 47:17
    I'll send you my pull request again.
  • 47:17 - 47:20
    But I'm not going to like get into an argument
    with a maintainer about that.
  • 47:21 - 47:29
    So it's -- there's just a -- but I do,
    I feel it is this big you are, it's kind of like going public.
  • 47:29 - 47:35
    And now you're out there
    and you have people depending on you
  • 47:35 - 47:39
    and you said you're ready so...
  • 47:39 - 47:40
    [Julia] Yeah, yeah.
  • 47:40 - 47:45
    No, those are really good thoughts on
    those decisions to submit to those central repos.
  • 47:45 - 47:50
    Okay, so now it's time for our last question.
    So for our last question.
  • 47:50 - 47:53
    I'm gonna -- I want everybody say
    what their response is,
  • 47:53 - 48:00
    maybe just kind of in like one sentence,
    if at all possible, and just like one sentence.
  • 48:00 - 48:09
    So, for this last question, let's say, let's all say,
    what does someone need to know
  • 48:10 - 48:18
    Like in in terms of like need to know or skills
    to start maintaining a package?
  • 48:18 - 48:21
    So, Leonardo, can you go first?
  • 48:21 - 48:24
    What does someone need to know
    to start maintaining a package?
  • 48:25 - 48:29
    [Leo] Okay, so for me it's:
    you have to be willing to communicate regularly.
  • 48:29 - 48:33
    So that means responding emails
    or slack messages in a timely fashion.
  • 48:33 - 48:37
    You have to also learn how to ask questions
    in such a way that others can help you fast
  • 48:37 - 48:42
    and ultimately need to practice patience
    and be patient with yourself,
  • 48:42 - 48:44
    be patient with others
    and practice empathy with others
  • 48:44 - 48:48
    because they're helping you
    with their time.
  • 48:48 - 48:50
    [Julia] I love it, I love it. Fantastic.
  • 48:50 - 48:56
    Erin, what do you think people need
    to know to start maintaining a package?
  • 48:56 - 49:00
    [Erin] Leo stole my answer.
    But I will reiterate it.
  • 49:00 - 49:04
    What is like really
    good communication skills.
  • 49:05 - 49:10
    Both to answer questions
    and to write up really great documentation
  • 49:10 - 49:15
    that helps to mitigate
    the types of questions and issues.
  • 49:15 - 49:16
    [Julia] That's awesome!
  • 49:16 - 49:22
    Elin, what do you think somebody needs
    to know to start maintaining an R package?
  • 49:22 - 49:26
    [Elin] I think you need to know
    that you are really willing to do it.
  • 49:26 - 49:28
    I think you need to know
    you really like your package actually.
  • 49:28 - 49:32
    Like you don't put a package out
    in the in the world
  • 49:32 - 49:37
    because you want other people
    to maintain it, right? Or give you bug fixes.
  • 49:37 - 49:38
    It's because you want it to work.
  • 49:38 - 49:41
    [Julia] Nice. I love that. I love that.
  • 49:41 - 49:46
    Scott, what do you think someone needs to
    know to start maintaining an R package?
  • 49:48 - 49:54
    [Scott] So if you're somebody
    that only writes scripts
  • 49:54 - 50:00
    and what -- which I did, you know,
    the first probably four years of using R.
  • 50:00 - 50:01
    Learn functions.
  • 50:01 - 50:05
    So you can't really make an R package
    if you just have scripts.
  • 50:05 - 50:12
    So I would say if that's one thing to learn
    is to learn how to write functions and use them.
  • 50:12 - 50:17
    [Julia] Nice. I love that too. Awesome. Awesome!
    I love this whole discussion that we have had.
  • 50:17 - 50:22
    And it really aligns so strongly
    with the experiences I've had
  • 50:22 - 50:26
    maintaining a couple different packages.
    And when I think about --
  • 50:26 - 50:32

    So, I took on the qualtRics package,
    which is an rOpenSci package
  • 50:32 - 50:40
    for accessing survey data from qualtrics
    through their API.
  • 50:40 - 50:43
    So I took it on from one maintainer
    from before,
  • 50:43 - 50:49
    and now I'm thinking about now, like, what will,
    like what happens if I, you know like now
  • 50:49 - 50:51
    I need to find the new maintainer.,
    as I pass it on too.
  • 50:51 - 50:53
    And as I think about
    all those things you all said.
  • 50:53 - 50:56
    Like what someone needs to know,
    I agree entirely.
  • 50:56 - 50:59
    And I think about like
    in that particular --
  • 50:59 - 51:04
    One thing I'm going to add,
    as I think through this.
  • 51:04 - 51:10
    Is that, like, really, in an ideal world,
    like the person is someone
  • 51:11 - 51:24
    Someone who is like a user of that,
    like someone who is kind of the audience.
  • 51:24 - 51:25
    Like you can't --
  • 51:25 - 51:30
    And it really aligned with what
    Elin was saying about you care about that domain.
  • 51:30 - 51:37
    And if you're someone who is the audience for that,
    then you're like:
  • 51:37 - 51:45
    'Yep, I'm ready to maintain this because
    I'm actively using it and know how to fix it!'
  • 51:45 - 51:50
    And so that is another --
    Like for example when I'm --
  • 51:50 - 51:53
    When we're going to be talking about, like,
    who's going to take over qualtRics?
  • 51:53 - 51:57
    Like that's going to be --
    that's a big part of it, right?
  • 51:57 - 52:03
    Like someone who is a person who uses qualtrics
    and understands how packages are put together,
  • 52:03 - 52:08
    and has these responsive communication skills.
  • 52:08 - 52:13
    So thank you so much panelists
    for that wonderful discussion.
  • 52:13 - 52:16
    I think that Stefanie is going to wrap us up
    with a few announcements.
  • 52:19 - 52:24
    [Stefanie] I am, thank you so much.
    My heart is full today.
  • 52:24 - 52:30
    This was really such a wonderful discussion.
    I love it, particularly because this is we thought:
  • 52:30 - 52:34
    'Oh, sure. Let's do a community call
    as a panel discussion.'
  • 52:34 - 52:39
    But of course, that could just be
    so disorganized and people chattering.
  • 52:39 - 52:41
    This was very well planned.
    And I thank the panel so much
  • 52:41 - 52:45
    because we all met a week ago
    to talk about this.
  • 52:45 - 52:48
    So this is not
    what an impromptu panel discussion looks like.
  • 52:48 - 52:52
    A lot of work went into this
    on the part of the panelists.
  • 52:52 - 52:57
    And so I thank all of you sincerely.
    This could not have been more successful I think
  • 52:57 - 53:00
    We can even function
    without Julia's house having internet.
  • 53:00 - 53:02
    So this is wild.
  • 53:02 - 53:07
    At the peak, we actually had
    90 participants attending this call.
  • 53:07 - 53:12
    So congratulations to everybody for joining.
    We shared kind of cool thing today.
  • 53:13 - 53:15
    I wanted, especially to thank,
  • 53:15 - 53:19
    I noticed Janani Ravi was taking
    a bunch of notes in responses
  • 53:19 - 53:23
    as the panelists were talking.
    So thank you very much for capturing that.
  • 53:23 - 53:28
    I also noticed quite a number of people
    have been adding their questions
  • 53:28 - 53:31
    and answering a bit in questions Part B.
  • 53:31 - 53:35
    So that's really cool because I didn't notice
    as the discussion was happening.
  • 53:36 - 53:40
    In this shared Google Doc,
    I'm going to leave this open for editing,
  • 53:40 - 53:42
    at least for another 24 hours,
  • 53:42 - 53:47
    So, if you have to go off to other meetings,
    I'll leave this open for editing for a while
  • 53:47 - 53:51
    so that you can come in,
    add additional questions you have,
  • 53:51 - 53:55
    answer each other's questions.
    Participants here can add their comments.
  • 53:55 - 53:57
    Ideally, if you're willing to put
    your name beside that,
  • 53:57 - 54:01
    add your comments to some of the questions
    that the panelists were asked,
  • 54:01 - 54:06
    because we really do have such a rich amount
    of expertise here in the audience.
  • 54:06 - 54:10
    After about 24 hours,
    I'll lock the document to view only.
  • 54:10 - 54:14
    It, along with the video of this call,
    is going to be posted on the archive page.
  • 54:14 - 54:19
    So it'll ropensci.org/commcalls.
    This will live there forever.
  • 54:20 - 54:21
    What else do I want to tell you?
  • 54:21 - 54:27
    Please, before you go, please,
    add your name to the attendees list in the doc,
  • 54:28 - 54:29
    I don't share that much.
  • 54:29 - 54:31
    Just for us to know what countries
    you came from
  • 54:31 - 54:34
    and what organizations...
    That kind of thing.
  • 54:34 - 54:39
    We have a new discussion category
    in our public forum.
  • 54:39 - 54:46
    So our public forum is discuss.ropensci.org,
    and just in the last couple of days,
  • 54:46 - 54:49
    we created a package maintenance category.
  • 54:49 - 54:53
    I encourage anyone, especially people
    who have said they're feeling a bit overwhelmed,
  • 54:53 - 54:56
    they're just getting involved
    in maintaining a package.
  • 54:56 - 54:58
    Please ask your questions there.
  • 54:59 - 55:05
    Some of our, sort of like internal maintainers
    will also get a flag when something's posted there.
  • 55:05 - 55:08
    So they may be able to come
    and answer your questions.
  • 55:08 - 55:10
    You can answer each other's questions.
    So right now it's empty.
  • 55:10 - 55:13
    It's just a category that exists,
    and I encourage you to use it.
  • 55:14 - 55:17
    Do I have anything else
    I need to tell you?
  • 55:17 - 55:19
    I think that's it.
  • 55:20 - 55:24
    You really, it's only 10 o'clock in the morning
    for me here in Kamloops British Columbia,
  • 55:24 - 55:28
    you set me off to start a wonderful day.
  • 55:28 - 55:32
    I thank you all for joining us
    wherever you are in the world,
  • 55:32 - 55:39
    and I wish you both a physically
    and mentally healthy and happy rest of the day.
  • 55:39 - 55:41
    Thanks so much, everyone.
  • 55:41 - 55:42
    Bye bye.
Title:
Maintaining an R Package, rOpenSci Community Call
Description:

rOpenSci Community Call #25. Maintaining an R Package

Details and additional resources: https://ropensci.org/commcalls/2020-03-18/

We’ll start with a short talk by Julia Silge, then spend most of the time on Q & A with four panelists - Elin Waring, Erin Grand, Leonardo Collado-Torres, and Scott Chamberlain - moderated by Julia. Our panelists bring a wide range of perspectives so there’s something for everyone. Collectively, they have experience developing and maintaining passion-project packages, very popular packages, too many packages on CRAN, packages on Bioconductor, and taking over maintenance (and changing things!) of a package developed by someone else.

Moments [click on the link to jump to it]:
- 0:00 Stefanie Butland (welcome)
- 7:45 Julia Silge's presentation
- 16:45 Panel Q & A

Questions addressed:
1. What does it mean to “maintain an R package”?

2. How do you encourage user feedback and/or manage a firehose of user feedback or requests for help?

3. How do you manage issues / feature requests? What workflows do you use to do this?

4. What is a path for new contributors to R packages? How can healthy norms be passed on? (Related: What should someone do if they want to start helping maintain one of your packages?)

5. What considerations go into decisions around dependency management? APIs that change?

6. What does the process of changing maintainers look like? What sets up this transition for success?

7. How do you decide to submit to a centralized repository like CRAN or Bioconductor? Peer review like JOSS or rOpenSci? Stay only on GitHub?

8. What does someone need to know or skills they need to have to start maintaining a package?

more » « less
Video Language:
English
Duration:
55:45

English subtitles

Revisions