The “Contributor’s Story” series is intended to provide a face and voice to our major open source contributors and community members, an overview of the projects they are working on, and the successes and challenges contributors face when developing.
For this blog post, we spoke with Samuel Adjei, a Docusaurus contributor working on blog and documentation plugins through the Major League Hacking (MLH) Fellowship.
“For me, I have always wanted to become a part of something bigger than myself. [In] the Tech space, it has mostly been about contributing to open source and helping others get into coding by making it easier.”
Tell us a little bit about yourself and your current experience in the MLH Fellowship.
My name is Samuel Adjei, I’m a second year Computer Science student from the University of Ghana. I’m currently working on Facebook’s Docusaurus in the MLH Fellowship open source track. Docusaurus is basically an open source project for building, managing and deploying technical documentation very easily.
Prior to joining the MLH Fellowship, I was looking for some open source-related programs for students. I heard about the Fellowship program and I decided to look more into it. I read a lot of articles and threads to get a sense of how the program really worked, especially for the open source track. It was exactly what I was looking for. I went through the application and interview process, got accepted, and started developing on Docusaurus.
Where did you first learn about open source? How did you get started using/contributing?
I heard about open source fairly early when I started learning how to code. I didn’t really have a lot of experience with it when I first got involved with the Fellowship. That said, a lot of knowledge required when using and contributing to open source projects became intuitive when I learned how to use GitHub. It made sense to me: let’s write software in a way everyone gets to be a part of. With the resources from the Fellowship and witnessing how people use tools like GitHub, I spent a lot of my first week taking the time learning about the open source ecosystem as a whole.
After I got a hang of how it worked, I made a few contributions here and there and wrote some packages myself on GitHub.
Describe the project you are currently working on.
I am currently working on Docusaurus in the Fellowship. On the technical side, what’s most impressive to me is that they take a modular approach. Almost every feature like the blog and docs functionality is basically a package. It is well thought-out, and abstracts most of the technicalities allowing you to configure and write docs and blogs very easily without even touching code. The best part is you can write your own plugins to augment and build on top of what’s already available.
How did you initially go about tackling the issue?
Contributing to huge repositories might look intimidating. A lot of what you initially learn and contribute to has to do with the project’s structure. For Docusaurus, as I previously mentioned, a lot of the features are built as plugins. This makes it relatively easier to use and contribute to Docusaurus in my opinion.
To start working on an issue, I would first read thoroughly about the issue’s description and all the previous discussions about it. For me, this ensures that I actually understand what the issue is about. The next part is knowing where to look. In Docusaurus, the most approachable solution would be to look into the plugin the issue is from. You might have to trace from the entry point of the project to get there, but once you do and understand how everything fits together, it is relatively easy to know how to solve the issue.
What roadblocks or problems have you faced thus far in your contribution?
Generally, the most obvious problems come up due to a lack of context. Sometimes digging through the project’s code can be difficult. Things might not be conventional to you just yet. It might not be intuitive to know where exactly to look. A file might just be too large and may import a lot of unknown dependencies. Not knowing how all these fit together might drive you insane. Learning to trace through the project yourself helps you in the long run. You can understand how the framework works from the ground up. That said, whenever you get stuck, you should not be shy to ask for help from maintainers.
What is the current status of development?
I think overall my Docusaurus team and I have come a long way in both contributing and developing, with help from very skilled maintainers of the project. I would say most of the issues assigned to us have been resolved with support from the maintainers when necessary. We just have a few issues to round up and call it a cohort! The nice part about open source and this Fellowship is these projects are visible and community-driven, so we can continue to contribute even after the Fellowship.
What have you learned about the project, development, or open source thus far?
I would say contributing to Docusaurus has given me a solid foundation to contribute to other large repositories in the future. I got to witness how technical discussions work in bigger open source projects, and was able to join in the conversation. In working with Docusaurus and the maintainers, I learned some really neat testing tricks and a whole lot of strategies I couldn’t get from a lot of tutorials. Really, just being given the opportunity to work on such a huge repository made me grow as a developer.
What advice would you give future contributors to the open source project?
I would say debug and trace the repo right from the beginning. It would help you ramp up faster on the codebase and you would get the most out of contributing to open source and the Fellowship that way. Don’t get stuck trying to figure things out yourself, ask the maintainers and community for help and I’m sure you will do great.
If you’d like to learn more about Facebook Open Source, follow us on Twitter, Facebook, and YouTube for relevant updates, and check out the Docusaurus website, Twitter and GitHub for how to get started.