Neovim (also known as Nvim), a hyperextensible vim-based text editor, is a popular open-source project that is focused on extensibility and usability, with over 51,000 stargazers and over 700 contributors,
We interviewed one of the members of the Neovim Core Team, TJ DeVries, about Neovim's success.
During the day, TJ is a Software Developer at Sourcegraph, a code search and intelligence tool for developers that lets you search and explore all of your organization's code on the web, with integrations into your existing tools. He is also the primary author of telescope.nvim, a fuzzy file finder. You can sponsor him on GitHub or find him on Twitch!
How would you describe the project? What is the goal of Neovim?
I will defer to Neovim’s `:help` for this (my favorite strategy ;))
- Nvim is improved
- Nvim is well documented
- Nvim is fast and small
- Nvim is maintainable
- Nvim is not an operating system*
*Neovim is not an operating system; instead, it should be composed with other tools or hosted as a component. Marvim once said: "Unlike Emacs, Nvim does not include the kitchen sink... but it's good for plumbing."
What were the first steps on this project like? How did it become a thing on Github? What was that time like?
I wasn’t around at the time the project started. Roughly speaking though, the first steps were forking the Vim project and then starting to add patches for asynchronous job support and to rip out a bunch of code that hurt Neovim’s maintainability (in the eyes of the Neovim team).
How many contributors are actively engaged on the project?
Well, Neovim has 752 contributors total (to Neovim core. This doesn’t count auxiliary repos where the contributors don’t always overlap). It’s hard to exactly define what active means for an open-source project like Neovim. We have a lot of people who come around for a project or two and do a lot of work and then come back again later when something piques their interest. We have had at least 30 people commit within the last month.
How do you manage the roadmap and make decisions on direction?
I think it’s different for each person involved in the project. We have a lot of well-documented design ideas, issues and goals that can give interesting guidance on what comes next. I’d say that sometimes though, “PR’s talk." If someone submits a PR, that is an obvious win. It comes with great docs and tests; it might get merged even if it wasn’t in our original plans. I often decide what to do based on what I hear people saying is difficult or that they would like to see improved.
What are some of the good, maybe surprising things, of being a contributor/maintainer of an OSS project?
Meeting people from all over the world who love this random project that you also love. I find it so cool to become friends with people from so many places I’ve never been (and probably never will be able to visit!). I love the Neovim community.
What would be your best advice to aspiring OSS hackers?
Two pieces of advice that I give to anyone interested in software. Part 1: You gotta get “time in the saddle." By that, I mean you need to start doing something, not just reading or listening. Actually, build something (a feature, a test, a documentation fix, SOMETHING, to get started). And Part 2: Out-work and out-nice everyone in the repo if you want to get noticed and help. It’s so rewarding to help a new contributor who is pleasant to work with and goes above & beyond what is requested. I like to think that’s what I did in my first PR for Neovim about six years ago. The community certainly out-worked and out-niced my expectations. They were so patient and kind in answering my questions, and I learned so much just from that one PR.
If you could magically have something happen to the project, what would it be?
Probably a clone of bfredl. That’s better than any feature I could imagein.
Neovim being a terminal app, and with all the things happening on the interface level (web, phones, AR/VR, AI), what do you think the future of code writing/editing is?
Well, I think for Neovim, it’s a particularly interesting question. One of Neovim’s goals is to be very embeddable. So perhaps even if AR/VR or other paradigm shifts happen in software and code editing, Neovim could still be relevant even after those things happen. Also, the terminal at least has a bit more life left in it.