What project or projects do you maintain and what was your motivation for creating those projects and releasing them as open source software?

I maintain a few projects of varying kinds. My earliest project was a repository of canonical data structures and algorithms implemented in Python. I’m also the author of the Docker curriculum and work on it regularly to keep it up to date. On the front-end side, I maintain a React library that I wrote called React-Tags. Lastly, my most recent open-source project, which I worked on with my friends, is an implementation of the Hindley-Milner type inference algorithm.

My primary motivation for releasing these projects as open-source is to educate and help others who are facing the same problems. Other than that, participating in open-source movement has helped me grow as a developer by giving me an opportunity to collaborate with awesome developers from around the world.

If you created any of those projects, were they meant to solve a specific problem you faced, or were they born out of a larger opportunity you saw?

I think almost all of my projects were born out of a certain, specific need that I had at one point or the other. To give an example, the React tags project came about from a need of an easy-to-use drag-and-drop tagging library that I could use in another project of mine. Since I didn’t find a compelling library in the wild, I decided to write one of my own. Slowly and steadily I saw that other folks had the same need and started using the library that I built.

In a slight contrast, the idea for writing the Docker curriculum come from a larger opportunity that I saw while learning Docker, which was that there weren’t any tutorials that would teach beginners how to deploy Dockerized apps to the cloud. This made me realize that a beginner-focused, hands-on tutorial which focuses on this very thing would be something that others would find useful and gratifying.

How has the project evolved since you first got involved or first released it? How do you spend your time on those projects? (i.e. Developing, managing the community, triaging issues, etc.)

Different projects have evolved rather differently since I first released them. A project like Algorithms or type-inference is mostly dormant, with issues & pull-requests coming in once in a while. On the other hand, projects such as React-tags and Docker curriculum need to be maintained and worked on a regular basis. Both the Docker and React communities are changing at a rapid pace, and to keep the library and documentation on track, I have to stay involved in making sure the projects don’t fall behind.

How would you describe the community around projects you participate in? What are your favorite and least favorite aspects?

My interactions with the community have mostly been healthy, encouraging and inspiring. Talking with fellow users and maintainers is mostly a very rewarding experience where I come out learning something new. This is inarguably my favorite part of open-source. My least favorite part of the open-source community is that it is still hard to get started for newcomers. Many a times I’ve been asked by my friends on how can they start contributing and I feel that we as a community need to work harder to make sure that newcomers are not intimidated and feel welcomed.

What keeps you involved in those projects? Do you have long-term plans for maintaining your involvement?

What keeps me excited about working in these projects is seeing other people derive value from my work. Just as an entrepreneur feels awesome on seeing people use his/her product, it is very rewarding for an open-source programmer to see other projects using their library, code etc. Apart from that, as a programmer who relies on open-source all the time, I feel that I have a responsibility to give back to the community, be it in any form - be it code, library or documentation. I definitely plan to stay involved with the projects and keep working on them in any way I can.

What is the most important thing someone submitting an issue or patch should know?

One thing that a lot of people skip before opening an issue or a PR is reading the CONTRIBUTING file. This is a simple file that maintainers (usually) keep in their repo that has pointers to keep in mind before contributing. From replicating a bug to having a discussion about your idea before sending your PR, following the CONTRIBUTING file for would-be contributors greatly helps the maintainers be more effcient.

What’s your development environment right now?

Hardware: As a student, I have to make sure that whatever hardware I use is portable. I’ve been using a Macbook Pro 15” Retina for a while and have been really happy with it. However, as soon as I graduate I have plans to build my own PC for my work & entertainment needs

Editor: I use Vim (now neovim) for all my editing needs. My favorite monospace typeface, for as long as I can remember has been, PT Mono which looks super nice on all screens. The only time when I sway away from Vim is when I’m doing Java development in which case I use IntelliJ with their awesome IdeaVim plugin.

Terminal: iTerm2 with zsh as my shell of preference. All my dotfiles can be found on Github.

Other command-line tools that I use a lot: ag, homebrew, httpie, devd, jq, fasd & ngrok.

What was your first development environment? Do you miss anything from it?

My first so called “development environment” consisted of running barebones Vi installed in a fairly buggy Ubuntu 7.04 running on an HP laptop. Unlike the laptops now, my HP laptop didn’t cooperate well with most linux distros which resulted in me trying to reinstall my OS once every two weeks. I sometimes do miss the simplicity of it but I’m certain that I’m order of magnitude more productive on my current setup than I was earlier.

Where do you see the open source software community headed?

The open-source community is, in my opinion, in a far better position now than it was a few years ago. All kinds of companies either large or small are embracing open-source like never before. Tools such as Github have now become an integral part to almost every developer’s daily workflow which has led to increased participation. While this growth is healthy & encouraging there are still flaws, that we as a community need to aware of and work towards. Diversity and inclusiveness are the few areas that come at the top of my mind which need improvement.

More About Prakhar Srivastav:

Prakhar Srivastav's Projects: