Maintaining a Library and a Community

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2026
November 16 - 19, 2026
New York, US & Online
Upcoming event
JSNation US 2026
JSNation US 2026
November 16 - 19, 2026. New York, US & Online
Bookmark
Rate this content
Sentry
Promoted
Code breaks, fix it faster

Crashes, slowdowns, regressions in prod. Seer by Sentry unifies traces, replays, errors, profiles to find root causes fast.

Get started

Anyone can publish a library to NPM. But what happens when that library is used by millions of developers? How do you juggle the complexities of publishing one of the most widely used packages in the ecosystem, and also deal with supporting and maintaining a community?

We'll look at the mindset and and approach to dealing with these challenges and what it means to be a "maintainer" today, including practices for providing user support across platforms, keeping a "devrel" mindset, designing documentation, designing features and APIs, how to consider package versioning and compatibility, when to ship breaking changes, technical challenges with publishing packages, and keeping up with the ever-evolving ecosystem.

This talk has been presented at React Summit US 2024, check out the latest edition of this React Conference.

FAQ

Marc Erikson is a front-end engineer at Replay, where they are building a time-traveling debugger for JavaScript.

Open-source maintainers handle various responsibilities including community management, tech support, documentation, and ensuring the library meets users' needs, beyond just writing code.

Marc Erikson handles support for Redux users through GitHub issues and discussions, a Discord channel, and by answering questions on Reddit, Hacker News, and other platforms.

Documentation is crucial for open-source libraries as it helps users understand features, use cases, and the library's capabilities, effectively acting as a guide for new and existing users.

When designing an open-source library API, it's important to consider user goals, the necessity of features, and potential usage patterns that might not have been initially anticipated.

Versioning in open-source libraries helps manage user expectations, with patch releases expected to be safe updates and major versions potentially requiring migration efforts.

Marc Erikson approaches breaking changes in Redux cautiously, aiming to minimize user disruption and providing comprehensive migration guides to ease transitions.

JS code shift and other tools specifically designed for code mods are recommended for creating automated scripts to assist users in migrating to new major versions.

Marc Erikson is a front-end engineer at Replay, a Redux maintainer, and a developer on the React team for over 10 years.

The focus of Marc Erikson's talk is to give app developers insights into open-source library maintenance, provide examples, and share lessons learned from years of experience.

Mark Erikson
Mark Erikson
29 min
19 Nov, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Today's talk is about what it's like to be an open-source library maintainer, with examples and suggestions from the speaker's experience. Maintainers have various roles and responsibilities, including providing support for users and managing documentation. Setting boundaries, prioritizing documentation, and designing APIs are important aspects of being a maintainer. Release management and compatibility are challenging, requiring careful consideration of patch releases and breaking changes. The speaker shares an example of marking a method as deprecated in Redux and providing a migration path for users. Compensation for maintainers is a debated topic, and code mods can help with code migration. Maintainers often face challenges but can have a significant impact on the ecosystem and people's careers. Supporting open source developers is greatly appreciated.

1. Introduction to Open-Source Library Maintenance

Short description:

I'm Marc Erikson and I will be your host for today's talk. Today's talk is about what it's like to be an open-source library maintainer, and I'll give you some examples and suggestions from my experience. Let's get into some practice.

I'm Marc Erikson and I will be your host for today's talk. Thank you for joining us. I'm excited to be here today and I hope to be able to share a few things with you. Before I get started, I would like to give you a little bit of background on what I do at React. I'm a developer and I'm a web developer. I'm an engineer and I've been working on the React team for over 10 years, and I am a developer and a community.

A couple quick things about myself, half of which Daphne already stole from me. My day job is a front-end engineer at Replay, where we're building a time traveling debugger for JavaScript. I am an answer of questions, I will answer questions pretty much anywhere there is a text box on the internet. I collect all kinds of interesting links to tools and articles and resources. I have a family of blog posts about React and Redux, and I am a Redux maintainer. I've written a lot of our documentation, created Redux Toolkit, worked a lot on React Redux. But yes, most people do know me as that guy with the Simpsons avatar.

So, today's talk is a little bit different for me. Most of my talks tend to be very technical, and today's is really more about people. I was trying to think through, like, what am I actually even trying to accomplish with this talk? And I'd say that the goals for today are, if you're an app developer, I kind of want to give you an idea of what it's like to be an open-source library maintainer. If you're maybe thinking about working on a library, or figuring out how to get started, I want to give you some examples of what it's like, and maybe offer some suggestions or lessons learned from years of actually doing this in real life. And, as always, I'm going to be very brief, and I'll give you a little bit of background. I'll give you a little bit of background, and I'll give you a little bit of background. Let's get into some practice.

2. Roles and Expectations of Open-Source Maintainers

Short description:

When it comes to programmers and maintainers, there's a lot more to it than just writing code. Maintainers have to deal with people and fulfill implicit community expectations. A maintainer wears many hats and is responsible for various roles. Some maintainers may even take on developer relations positions. Open-source maintainers do tasks similar to what developer relations professionals do. Here are some recent download numbers for major libraries in the React ecosystem.

So, when we think about programmers, you know, the stereotype is, you know, a programmer is a machine that turns coffee into code, you're hunched over your keyboard late at night, furiously pounding away and trying to build something. And in the same way, I think that when people think about maintainers, it's kind of like a vending machine. And, you know, in the same way that programmers do a lot more than just write code. We're having discussions in Slack channels and GitHub issues. We're planning out architecture, or figuring out how to write loops and YAML or something like that.

And so, in the same way, maintainers do a lot more than just write features and fix bugs. And it turns out that a lot of what we do actually has to do with people. Now, with open-source, there's really this big dichotomy that exists. On the one hand, there's the open-source license. And license is basically boiled down to here's some code, you get to use it for free, and if it breaks, it's not my fault. That's on you. But on the other hand, when you publish a package or a library, there's sort of this community expectation that's very implicit, and it's this idea that if I've made this project, I have to maintain it. And that people expect me to respond to issues and fix bugs and keep it maintained. And that's not in the license, but that is very much in the culture that we've built around open-source.

So, what is actually a maintainer? There was a very good quote from Artem Zakharchenko, who's the creator of MSW. So, maintainer is a person who maintains a library, and maintains a library. And maintainer is a person who is a designer, dev advocate, tech support, salesperson, community manager, tech creator, and a human being all at the same time. That is a lot of different hats to wear. And for a lot of libraries, there might only be one person maintaining it, which is why we have the classic XKCD illustrating the Jenga tower, that is modern technology, and that is what we want.

Now, at one point, I was out looking for some possible job situations a while back. And someone sent me a job opportunity for a developer relations position. And I looked at it, and I was very confused. I'm an engineer. I want to spend my time writing code. Why would anyone think that I'm looking for a dev rel position? And someone pointed out that I've basically been a dev rel for three years. And I was like, well, that's kind of where I got started. It's kind of like, oh, okay. And if you think about, like, I looked up some definitions of what a dev rel does, and it's things like technical content creation, public speaking, community engagement. That actually does sound a lot like what a lot of open source maintainers do. So, for a bit of context, here are some recent download numbers for some of the major libraries in the React ecosystem, which are React, Redux core, Redux toolkit, React router, React query.

QnA