My first AsyncAPI contribution Journey

My first AsyncAPI contribution Journey

My Journey of First PR to Suggesting a improvements for AsyncAPI Community

I have been contributing to Mozilla actively around 2013-2019 period. During that time I have tried to do some coding related ones but I have failed. I barely remember my actual first PR I send to Mozilla; but I very well remember my first PR to AsyncAPI community.

Most of the time I have the habit of checking source code of interesting projects if they are available publicly (in github or gitlab or hosted VCS). Similarly I got the chance to know about AsyncAPI Github Organization and started looking at them. I was mainly interested in contributing to the technical documentation of the project; During that time Alejandra Quetzalli also joined AsyncAPI project, I reached out to her and she suggested to get familiar with good first issues from Website project so it will be easier for contribution.

My Journey of First PR

Searching for easier task

Generally good first issues means it will be easier for getting started with the project. As per her suggestion I checked all the issues under that label and finalized with this issue Move the tools-related pages to the tools/* pages. The thought process for selecting this is, I simply thought I just have to move files from one folder to other. 😁

Setting up for Contribution (General workflow)

Installing Git
  • For most of the Linux based systems, Git will be installed; in case if it is not installed then you can download from Git website and install it.
  • Close and Reopen your terminal (sometimes it needs not always) so from next new instance it can open up properly.
Create Github or Gitlab Accounts
  • Most of the time you might have created the account, just in case if you have not created you may need to create newly.
  • You can create based on where your project is hosted. For Github and Gitlab
Forking the repo

I would always suggest to fork the repo first before starting to contribute to the project. When you are logged in you can see the fork button at the right end corner.

fork-the-project.png

Screenshot from Async Website project

Once you fork, the same website will be copied to your profile.

forked-page.png

Clone in VSCode

Most of the times it's suggested to download the source code in your machine and then start working on them on your machine before you can send Merge request (or pull request). To Clone

  • Click Ctrl+shift+P a pop-up window will appear
  • Select Git: Clone (recursive) option
  • Give Clone URL as your repository URL (in my case github.com/iamVP7/website.git)
Add Remote VSCode

It is important to add another Remote (the original source code repo link). To do this, similar to Cloning we should do. My idea is to send the pull request once I finish the work.

  • Click Ctrl+shift+P a pop-up window will appear
  • Select Git: Add Remote
  • Give Clone URL as your Original Repo URL (in my case github.com/asyncapi/website)
  • Give the Name as Original or any name which you can remember well.
Add branch

Before starting to work, you have to create the branch for any new task in your local machine and push it to your personal repo.

  • At the bottom left corner of VSCode you will see branch name
  • Click it, you ll see options to Create new branch from
  • Select from the Remotes (either your remote or original source code)
  • Then after selecting remote, select branch

image.png

Getting Ready for my First PR

Before I started working on this bug, I discussed with maintainers how I should proceed with the bug. It will be more helpful before starting. Most of the time maintainers will be friendly and help you to get started. Their mentor-ship is invaluable, they ll make sure we achieve it and we feel we won it(sending first PR is always like winning gold medal in Olympics to many).

image.png

Making new changes

  • I created the new folder and moved all the necessary pages inside the new folder
  • Added the required redirection in netlify.toml
  • Then tested in my machine, made sure its work

Pushing to your remote

After I made and tested the changes; the first thing I did is to push it to my branch which is in github. So I can prepare to send my first Merge request.

Sync with original changes

Since I took so long from create the branch and making my changes and sending Pull request, in between new features are added to the website in the original AsyncAPI repo.

So I started Pulling from Original AsyncAPI master repo and brought changes to my machine. Then again I pushed to my feature branch in github.

Then I sent PR to the Original AsyncAPI master repo.

image.png

For sending PR, we have to select which is the source branch (in our case my feature branch I create for each new feature) and the target branch (most of the time its Master branch in Original branch)

After reviews from other maintainers, and few discussion it got merged.

Open-source-contribution.gif

I had lot of learning in this process and have also wrote about this in one of my previous blog post Journey to Become Engineer by Contributing

Suggesting improvements

After learning about AsyncAPI I joined in their Slack Channel to understand what is AsyncAPI and learn more from them.

In my previous article I have suggest how we can Suggest improvements / Help finding bugs and do other contributions even when we are non-coder / not developers. I got chance to implement same here with AsyncAPI community.

Suggesting new Page

AsyncAPI community is slowly rising up, slowly large number of contributors sharing about this in various conference and workshops. I got a chance to suggest a new page in AsyncAPI Website dedicated for sharing about this. If you are interested in contributing to creating this page, then checkout this issue filed in Github. I got this idea from Mozilla Techspeakers community, where there was dedicated website with list of upcoming talks by Techspeakers.

Remember dedicated conference for AsyncAPI is going to happen in November, if you have not registered its time.

Suggested minor content fix

Recently AsyncAPI README.md document is released. And I have mentioned this is one of the coolest README for organisations I have seen.

Previously for the Specs Details the hyperlink was hardcoded to the version number. Since I have contributed one good first bug to Website repo I understood there is different way of hyperlinking to latest.

image.png

I suggested this way of doing this to Alejandra Quetzalli, she encourage me to file a bug and if possible a PR to fix it.

This is just the beginning of contribution. There are way more things to contribute and learn from community. Will welcome you all to contribute to AsyncAPI Spec Initiative.