Having had to work with Angular 1 for years at work, I fell in love as soon as I saw React - it was such a breath of fresh air. So I began building all my little side projects in React to learn it, and potentially to have one of them take off and become profitable. A side project back in 2015 required a complex form, with 20 fields. The React documentation was decidedly sparse on the topic of how to manage form data (and still is). That was around the same time that Redux was taking off as an application state management solution, so it occurred to me that maybe Redux could be used to hold my form data!
I open sourced Redux Form and immediately it became clear that there was a hunger in the community for a way to manage form state in React applications. Issues and PRs flooded in, with each user adapting it to cover their own use case. When I wrote the first version, it never would have occurred to me that someone might not know the names or quantity of fields their form had at development time, but oh, was I ever wrong about that!
Over the years, it became the defacto form state management library in React.
Maintaining Redux Form has been very educational to me in learning all the different use cases there are out there in the world for forms. I never considered myself a public speaker, but when I received an offer to fly to India to talk about Redux Form, it was an offer too good to turn down. Since then, I have been using speaking gigs as a way to travel the globe. As I type this, I am in an airport on my way to Taiwan, way further east than I've ever been. It's awesome!
I haven't really done much in the way of promotion, apart from accepting offers to talk about it at conferences. The growth really has been very organic.
Like all things successful, a great deal is due to being in the right place at the right time. That said, I have poured hundreds and hundreds of hours into the project, implementing features, responding to questions, deciding whether or not to merge PRs, and doing a ground-up rewrite for version 6. To create something successful, you need both things: to have the blind luck of being in the right place at the right time and then doing the legwork to sustain the momentum that the initial breeze of luck has bestowed upon you.
The community has been very kind to me. Of the thousands of interactions, only a handful have been disagreeable. Most people who submit an issue are very gracious and grateful for the previous work and are forgiving if their issue does not get fixed immediately.
Because they're important and rewarding to me, I find the time every week to give my open source projects a little love. I guess when other people are playing video games or watching TV, I'm working on those projects. My interest definitely ebbs and flows, though.
For many years, I was the sole maintainer. It was as you might imagine: taxing, but also providing an ego trip. As I write this in 2019, I have passed off most of the maintenance responsibility for Redux Form off to a handful of devoted fans, who really understand the library better than I do now since I haven't really used it in the last couple of years.
Based on all the feedback I got from Redux Form, I decided to start from the drawing board and imagine a superior form library. One that could be:
Taking all these as requirements, I built a new form library called Final Form and a companion library for React called React Final Form. This is what I use now for all my React projects (Migration Guide). It's also where all my open source maintenance energy has been focused over the past two years.
Redux Form continues to be used by both small and gigantic corporations around the globe. It has well over a million downloads every month. I hope that its new shepherds take care of it and can satisfy the requests and requirements of its many loyal users.
Its usage continues to grow. And even more exciting, the use of Final Form (the underlying form state management system) is growing even faster. This is because, as designed, it is being used by many people with other frameworks like Vue and Web Components. Many of the frameworks consuming it are not open source.
Great question. Do not go into open source looking for riches. Donate buttons are not worth the pixels they are rendered with. Almost no one decides to just throw you money for your work, and when they do, it's like $20 here or $20 there - no recurring revenue.
Advertising is the best solution I've discovered; having a documentation site and putting ads on it. My best success has been with CodeFund, an ethical ad agency that specializes in advertising on open source projects (and doesn't track you). But even so, we're talking much less than minimum wage. I find open source intrinsically rewarding, the drip-drip of ad dollars is just a nice benefit.
There is no magic bullet for creating a successful open source project. There are some really clever solutions to common problems published to open source that no one has discovered. If you've written a library that you think should be useful to many, I'd suggest that you make the docs awesome, which includes demos of how it solves a problem, and then maybe do Twitter searches for people discussing the problem your library solves, and, while being as helpful and non-obnoxious as possible, mention that you too had that problem and solved it with a library that you open sourced.
Then, and this is key, if you do start to gain some traction, you have to be there to put in the legwork to fix bugs and add features that your first users suggest. You can't just plant the seed and ignore it, you have to water your project.
As far as I can tell, all of this is true for startups as well.
As well as being an open source maintainer, Erik also runs two podcasts: Happy Hour with Dennis and Erik, a non-tech podcast where he and a friend talk about their week, and Seek Justice, a podcast about criminal justice in the US with an expert in the field.