Hello everyone, this talk is called Navigating the Rust Open Source Software Community.
My name is Jane Lusby.
Right next to it is my GitHub username.
In the bottom corner on every slide is my Twitter handle.
And I will be your guide today.
Okay, so, what's all this then?
So this talk has a couple of goals.
First of all, I want to help new contributors who are trying to get involved in Open Source,
make it easier for them, and make the process seem more approachable.
Second of all, I want to help established maintainers,
anyone who has a crate that they maintain who wants to get new people involved,
who's, like, opening "good first issues", but maybe isn't getting the engagement they want,
help them maybe find ways to reduce the friction and get more people involved.
I'm not going to do in this talk is teach anyone how to learn Rust,
there are plenty of learning resources.
I am here to help you find those resources, not to be one of those resources.
This talk is about the people, not the program.
So, quick "about me".
My name is Jane Lusby, third time.
I am a C++ developer at a company called Scale Computing,
which is a startup that works on high-uptime, clustered virtualization.
I have 6 years of professional experience working with C++,
and i was introduced to Rust in early 2018 at my work's Maker Night.
I fell in love with the language,
and pretty quickly decided i wanted to get more involved
and get into Open Source,
to kind of give back to the community, and also to improve in the process.
And I've been wanting to do that, in general, for a long time,
way before I got involved in Rust, but never really managed.
So why is it that Rust got me engaged, when other communities, like C++ or Python, had failed?
The first reason is the Code of Conduct.
So when I was looking into Rust, and looking at the resources, the Code of Conduct was everywhere.
And seeing--
One quick. I forgot to mention a little more about me.
In case you haven't noticed, I am a woman,
I am also gay, and I am also transgender.
So when I go to join a community, I have--
Homophobia, misogyny, transphobia, are all things I worry about.
And so seeing that this community was committed to providing a save environment,
to anyone, regardless of gender, race, ethnicity, body type, disability,
was really, it was like a weight off of my shoulders.
And what it really gave me was a sense of safety.
I knew that if i ever ran into a bigot, the community would have my back.
And luckily, in the last two years, I haven't had any problems,
and i think that's largely also linked to the Code of Conduct.
The Code of Conduct ends up acting like preventative medicine.
It prevents the people who it's designed to protect against from ever getting involved in your community in the first place.
So, if there's any takeaway here,
it's, if you maintain a project, explicitly mention the Code of Conduct,
and that you will enforce it,
and it can make all the difference people between feeling comfortable to engage or not.
So that got me excited about Rust, but that didn't get me involved in Rust.
What was the thing that actually got me to do my first contribution?
That is This Week in Rust.
Now, for anyone who doesn't already know,
the Rust community maintains a weekly newsletter called This Week in Rust,
that has things like recent blog posts, the Crate of the Week, calls for participation,
changes merged to core, upcoming meetups, job postings, and usually a funny quote at the end.
So I came initially to This Week In Rust for the blog posts.
I was obsessed with Rust, and I wanted to take any information I could get, as quickly as I could.
But the thing that ended up having the biggest impact was the CFP section, the Calls For Participation,
which was a list of "good first issues" that people could take and run with.
And, like I said before, I'd wanted to do Open Source for a long time,
but it's just like this Big Scary Thing; you don't know where to start.
And here's This Week In Rust, every week, just waving a flag of friendship,
being like, "Here's something you can do!"
And it made it much more approachable to get started.
And I don't know if I would have ever done that first Open Source contribution
if it weren't for This Week In Rust regularly making it easy and accessible.
So, one more thing I want to note before I move on,
is that This Week In Rust depends on community participation in order for it to function.
It used to be the case that the CFP section,
the maintainers would go and find issues and pull them in and post them there.
But they stopped doing that a while ago,
because they didn't want to unfairly favor any single repositories.
So now, in order to have any issues in there, you have to post them.
And if you look at the old issues versus the new ones,
there are many fewer issues in the new ones, like 0-3 usually,
versus like 10, every time, when I was first getting involved in Rust.
And I really want to see that number come back up.
And so, if you maintain a project, and you are making "good first issues", and you're not posting them to This Week In Rust, you should.
It makes a big difference, and it helps people get involved.
So, I finished my first PR,
and all of a sudden, I'm not scared of being involved in Rust any more.
And I dive right in, and I start looking at issue boards myself.
And this is where I ran into my first bits of friction.
So, the first problem I ran into, is the issue boards themselves can be pretty hard to navigate.
They have "Good first issue" on pretty much every issue that's like something a new person could conceivably do,
But, I would go into these issues, like issue after issue,
and there would already be a comment by someone who'd wanted to do it.
And it was very hard to find something that was both easy to do, and available.
I ended up filtering just by issues that had no comments in them,
which worked, but it wasn't best solution,
because it was pretty common for people to open issues, and the maintainers to leave a mentorship comment on how to implement it.
So I missed out on all of those.
The next problem I ran into was a lack of feedback, or slow response time when trying to get involved.
I remember distinctly one time leaving a comment on an issue I wanted to do,
and then waiting, and not getting any response for two days.
And I'm, like, new, and I'm very shy,
and I overreacted and freaked out, and I just deleted my comment,
and went to find something else to work on.
Now, I don't want to complain about Open Source maintainers not being prompt in their replies,
because these people are doing a public service.
They're just giving you this work for free,
And they have no obligation to do it this quickly.
But it doesn't change how it feels as a new contributor who wants to get involved,
and all you're hearing is crickets.
So, I have some ideas for how we can improve issue boards,
and I would like to talk about them, but not in this talk,
so if you're interested, come meet me after, and we'll talk about it offline.
So, I ended up finding some good repos to work on,
I ended up doing Clippy, Rustfix, and Cargo,
and I just want to give a special thanks to the maintainers of those repos
for helping make it so easy to be involved, and being so friendly and responsive.
So, my next big breakthrough,
which is probably not news to anyone here, but for people who are watching online,
is going to meetups.
I had no idea that Rust meetups were a thing,
and so when my friend told me about them, I was really excited and immediately started going to all of them.
And, for a while, nothing really happened,
But, I remember at this one Google meetup,
there was, like, kind of a life-changing event happened.
And you might wonder what that is.
And it was Manish [Goregaokar] walking up to me and saying "Hey, you're Jane, right?"
And I was shocked.
I'm like, how does Manish know who I am?
How does Manish know my name?
This is a core contributor, the person who runs these Rust meetups,
and he's asking for me by name.
And, so, at the time I didn't think I'd done anything worthy of attention,
but, I replied "Yes, I'm Jane, you're Manish right?"
and he said "Yes" and he just wanted to thank me for my contributions,
and say, that if I wanted to get more involved, he would be happy to mentor me.
And this is the part where I always cry, because it's very emotional, but bear with me.
That single bit of outreach has probably had a--
a larger positive effect on my life over the last year
than any other event in the last two years.
I don't know if I would be here today
if Manish had not come up, and said "hi", and just been a friend.
That's not the only thing that happened at that meetup.
Eliza [Weisman] also gave her wonderful talk on "tracing",
and nerd-sniped me, and I went and nerd-sniped my coworkers,
and now we're implementing all those features in our codebase.
And afterwards, I was sitting very shyly in the lobby, hoping for someone to talk to me,
and Adam [Perry] saw me,
and was like, "Hey, you look like you want someone to talk to you! Why don't you come sit with us?"
And I met Adam, and Rain, and Izzy [Muerte],
and together, those five people were like my first Rust friends.
And that was, for me, the moment where I felt like I was finally a member of the Rust community.
And,
If there's any lesson,
it's meetups can be a great way to feel like you're involved in the community, and to get engaged.
and if you're not already going to meetups and conferences, you should.
Because it'll have a huge impact on your life and your career.
So,
I messaged Manish before the meetup was even over,
like, "Yes, yes, yes, I want you to be my mentor!"
And I went home, with a mentor at my back, more inspired than ever to get involved.
So, I went home with a mentor,
and I had a bit of a misunderstanding of what a mentor actually was.
So when I went home I kind of expected--
What I was hoping for was a manager.
Someone who would find issues for me to work on, and who would,
help me keep on track, and, like, kind of ping me to be like "Hey, here we go, this is something to work on."
or, "How are you doing on this?"
And Manish did that.
And, in retrospect, that was probably a lot to ask.
That's like a job. Being a manager is a job.
But, that's not the only thing he did, not by a long shot.
He also was a constant source of encouragement.
I remember, after the "tracing" meetup,
I really wanted to get involved, and I was telling Manish about it,
but I was way too intimidated by Eliza and how awesome she is.
And, Manish was like "No, that's ridiculous. She's really nice! Go talk to her! It'll be great!"
And I did, and he was right, and I got involved,
and I've learned way more from working in the tracing codebase than probably any of the other projects.
And I'm like really appreciative! I probably wouldn't have gotten involved if it weren't for Manish's mentorship.
Another thing he did was giving me advice.
I would always go and complain to him about whatever random Rust thing was on my mind.
In this case it was, I wanted to be able to format variables into my "expect" statements,
and for this I wanted postfix macros.
And this was at the same time as the "await" syntax bikeshed was going on.
So I was like, "I really wish they would pick 'postfix macro' for 'await',
so that we could also get postfix macros elsewhere."
And he was like, "You should write a blog about this!"
And, I felt ridiculous, writing a blog about async, because I don't write async code,
and it was already a complete mess.
And also, I feel like I'm a bad writer, so I didn't feel like anyone would want to read anything I wrote.
But I did it anyways, and I've gotten a lot better at blogging since then.
And I really appreciate how much better my writing has gotten,
And, blogging, like, as a thing is a great way to--
Like, I learn from blogs, everyone does.
And so, it feels great to be kind of giving back to the community in that way.
The last thing I'll talk about is, Manish fundamentally changed my understanding,
and this is what leads into the slide I actually skipped to.
He fundamentally changed my understanding of what Open Source contributions look like.
Before I was talking to Manish, and before I was getting his advice,
my plan for doing an Open Source contribution was
"Find a repo, find an issue, do it, be done with it."
And that's great, and it was rewarding,
But it's not as good as working on things you're actually interested in.
You, like, you just do something, and you never use it afterwards and you kind of forget about it.
But Manish, I would go to him, and complain about all these things I wanted,
and he would be like, "That's a great idea, you should open an issue!" or "You should work on it!"
And I ended up realizing, like, "Hey, if I work on the things that I like, it's not just fun and learning,
but it's also, like, makes me feel good afterwards when I get to use it."
And it's a much more sustainable model, I feel, than just working on random issues.
So, this is where I got overzealous,
so I had all these issues that I wanted to work on,
and I opened the three things in Cargo, and got parallelized.
And learned not to bite off more than I could chew.
The next problem I ran into
was actually, I would constantly tell people about all these ideas I had,
and I wouldn't write them down.
And it was actually Eliza who helped me get past this issue.
Every time I complained to her about something I wanted in tracing,
she was like, "Open an issue!"
[laughter] And,
and eventually, that advice stuck,
and I started opening issues for everything.
And that has an extra benefit of sometimes, people just do it for you,
which is great, because, who doesn't love free features?
The last problem that I had was I have all these issues,
and I wasn't, like, keeping track of them.
And the solution to this was actually inspired by David Tolnay.
He wrote a blog post, that he published via docs.rs as a docs page,
and that kind of gave me the inspiration to just use an empty git repo to track issues I'm working on.
Initially I started with a tracking issue,
But it turns out, that will notify every single person of the fact that you are tracking their issue,
which I did not want, because I am too shy for that.
[laughter] So,
I ended up settling on a project board,
which just lets me have, like, a nice little kanban-style tracker of all my issues.
And it works with any repo, and it's great.
So,
stay organized, blah blah blah.
So the next big thing, this is kind of going to be controversial,
is, learning to love Twitter.
So, I've been an avid Redditor for like 10 years,
and I like Reddit still, even though I know some to a lot of people don't.
But, for a long time I had no understanding of Twitter,
but then, Manish and Eliza introduced me to it, and helped me actually understand it,
by telling me to post that blog post, and then retweeting it,
and I was like, "Oh, there's other Rust people, I can just follow them."
Now suddenly it made sense.
And in the process of learning Twitter,
I realized there was a fundamental difference in the way that people communicate on Reddit versus on Twitter.
In Reddit, the discussion is a lot more impersonal.
It's great for technical discussions, or bikeshedding, because the thread view is much nicer,
but it doesn't really feel like you're talking to a person.
Because there's just a little name, and you usually don't pay attention to it.
Twitter, on the other hand, you feel like you're interacting with a person,
you remember the person the next time you interact with them.
And it ends up being much better for making friends, and getting involved in the community.
I've made lots of friends on Twitter, many friends who are here,
that I met initially on Twitter.
I think I have made zero friends on Reddit.
[laughter]
And so, the takeaway here is, if you want to get involved in the community and have more Rust friends,
you should try using Twitter. Just follow all the Rustaceans, it's a great way to get involved.
So,
the last bit is,
[laughter]
the last bit is about J.
This is where I get to embarrass them.
I got to embarrass Manish in San Francisco, it was great.
[laughter]
So, the last bit is actually something that hasn't really fully manifested.
I don't know how this will affect my long-term involvement in Open Source.
But it's giving talks.
Manish had been trying to get me to give a talk at the San Francisco meetup for a while,
But, I didn't really feel ready to give a talk,
and I didn't feel like I had anything to say, or that I'd done anything of consequence in the Rust community.
And then, along comes J.
And they're like, "Hey, I see all these things you're doing, they seem great,
would you be interested in submitting a talk to Colorado Gold Rust?"
And, I was like, "Yes, I'm interested! I'm terrified, but I'm interested!"
And I talked to J about all of my fears, and how, like, I was afraid of the process,
and I didn't want to have to write a full talk in order to submit one.
And they're like, "No, you just have to submit an outline!"
And talking about what ideas Manish had,
and how i really wasn't sure if that would be interesting,
and they're like, "No, that's a great idea! You should definitely submit a talk!"
And they made the process seem much more approachable.
And I said, "Yes, I will submit a talk!"
and I promptly proceeded to procrastinate for two weeks.
And I probably would have procrastinated all the way past the deadline,
but that did not discourage J,
they messaged me again, like, "How are you doing?"
and, like, helped me kind of keep on top of things, and motivate, and get it submitted.
And, like, I wouldn't be here if it weren't for that outreach.
And so, there's a lesson here.
It's like, reach out to people.
There are a lot of people who want to speak, but who don't think they have anything to say.
And you can convince them that they do.
So, just a summary.
The key takeaways, if you have a project,
Mention the CoC, it can help more people get involved.
Leverage This Week In Rust, if you're not already.
Go to meetups and conferences. Not for you all, of course.
Be or get a mentor. It can have a great effect on the community and help grow people.
Open your issues, know your limits, use Twitter, and do outreach.
So, just before I go, I want to give a shameless plug.
Writing this talk inspired me to make a repo for mentors,
so, if you are someone who wishes you had someone to help guide you around the community,
or you want to help guide other people,
then, go to this link and sign up, or contact someone!
They're all here to help.
Thank you.
[applause]
