In recent days I am diving deep into learning JAMStack and Developer experience. I started with improving the development experience in my team by suggesting good tools which can improve the productivity , defining better flow for feature release. During the search of endless internet links I came across new community AsyncAPI , who are building specification for asynchronous APIs. I loved the project at verify first sight, I thought I can learn more about the event-driven architecture and contribute back to the community. I have previously written lot of REST API docs using OpenAPI Spec, have mentioned about this in my one of my previous article.
If you are a Backend API developer you should have the practice to write about REST API documentation using OpenAPI Specs (in the future will add a detailed post about this; watch this space). OpenAPI specs make it easy for both machines and users to read the JSON file and understand them. When the API documentation is written using OpenAPI Spec we can use it for generating client library, websites, or for testing.
The link for article
AsycnAPI Contribution first Step
I was searching for the detailed description for each and every part of specification, as it was for OpenAPI but found out in Github issue this is one of the area where we have to improve. So I commented in the issue, so that I can start learning and contributing. Joined slack and pinged Alejandra Quetzalli to know how can I start contributing to the docs part (there are also other areas where you can contribute; check here post). She messaged me to check with website repo where docs is present currently.
I cloned the repo, and easily was able to run it in my local machine (tech stack used is Next.js and deployed in Netlify). Usually most of the open source projects will be having some easier bugs called Good First Bugs , I check all the listed issues and found a easier factoring task.
Basically the task is simple, we have to organize pages under different folder, add netlify redirects (read it as moving file from one directory to another). I wrote the code and sent Pull Request(PR).
Github actions & Netlify deployment
Once I sent the PR, automated actions started.
- Lint checking on bugs title
- Netlify preview build generation
- few other checks
I am amazed by the Netlify build. The moment I sent PR, a hook is triggered and build generation is started. Once the build is generated preview deployment is done.
For JAMstack sites, the most common action is to trigger a new build of the website when anything is added or modified via a push to the Git origin. Some more advanced deployment services will even build previews of pull requests at dedicated URLs.
The above quoted message is taken from JAMStack book by netlify itself. I saw it in action in live today. It's is one of the amazing thing when you start contributing to Open source communities; lot of exciting things are done and we can learn freely from them when we are contributing.
Teach from all over the world
In the PR I have sent, I got one of the webhook struct for very long time. It should pass so only then it will be considered for merging. During that time Jonas Lagoni jumped in and helped me.
In past 1 week, with the help from AsyncAPI team I learned following this
- Be Welcoming, all contributors were friendly and helped me with each step.
- Lets have open ears; some of the contributors are experts and software engineering for long time. When we ask for some clarification they make us comfortable and make sure to listen to our thoughts and share their opinions
- Planning for building docs step by step
- KataCoda for interactive learning; this is first time I am seeing it, its for interactive learning.
- Preview deployment for Netlify
- Netlify Redirects
AsyncAPI team has announced hackathon and conference, do checkout without fail.
Final thoughts
If you want to learn something outside of your work, the best way to start is contributing to the open source communities. When we are learning lot of things knowingly or unknowingly. Assume I am going to become full time DX engineer, the few things which I should have knowledge is technical API documentation with basic building website capabilities, good knowledge on two programming language, collaborating with communities and Git.