So finally with this post I have decided to pen down my experience of contributing to one of the biggest open source communities which is Fossasia. Well, I always wanted to contribute to open source projects but always held back thinking it would be difficult to get used to the huge code base they generally have and to sync up with others contributing. Finally I started out with one of the Fossasia projects and I must say it has been a great learning curve. I would be lying if I said codeheat wasn't a motivation to start looking at Fossasia repositories. For those of you who don't know what codeheat is I would highly recommend checking it out.
I feel with events like codeheat one capture the true essence of open source contribution while still being in a healthy competitive environment. Not only you focus on your personal contributions but you learn from others you might be doing it better in certain ways. This year codeheat began in Sept'19 and would go on till Jan'20.
While Fossasia has many of Github repositories but what caught my attention the most was susi.ai. So I decided to contribute to it for the following reasons -:
- I like working with React and it uses React for front end 😅.
- Love the idea of a bot wherever anyone can add skills.
- Just a few lines of code and you can add susi.ai bot to your website. I contribute mainly to susi_webclient.
About susi.ai: SUSI.AI is an artificial intelligence system, combining pattern matching, internet data, data flow, and inference engine principles. Through some abilities to reflect, it can remember the user input to produce results. What's cool is that you can create your own skills and bot within certain lines of code it can be added to your webpage.
Susi.ai web client tech stack 🚀
Whenever you jump into a new codebase it is always tough to relate to it. So for starters I picked a basic UI issue to get familiar with the coding style and I must say that I had a lot to learn. Better if I list down my learnings -:
- Reusability of components.
- Making component wrappers wherever necessary.
- Came to know about styled components (a great way to style your components).
- Best practices to use React along with Redux.
- Creating architecture in a such a way that adding any new feature is less of a pain and more of fun.
The first major issue that I picked was of converting promises to async/await. This really helped me to familiarise myself with architecture.
Though it took my pull request a while to be finally merged, but it feels very good when your contributions are accepted. I have been a regular contributor since then.
My thoughts on getting started with Fossasia
To start off explore all the projects and find out the one which you think resonates with your interests. It is important to communicate with others contributing or wanting to contribute. So make sure you join the Gitter channels. If you are a beginner to open source then there are a lot of beginner-friendly issues, try them out. I feel sometimes looking at some other person's PR might also help. Before picking up an issue knowing exactly what it expects is essential as it would save a lot of time. Last but not the least go through the Readme and Coding guidelines to avoid making unnecessary errors.
Well, Codeheat'19 is almost halfway through and it has been a great experience so far. Looking forward to some more contributions ahead.
Keep contributing 😀!!