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