Skip to content

Instantly share code, notes, and snippets.

@KhudaDad414
Last active August 18, 2021 11:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KhudaDad414/171fc4f6d56d7f1acc05e0c14d02b36d to your computer and use it in GitHub Desktop.
Save KhudaDad414/171fc4f6d56d7f1acc05e0c14d02b36d to your computer and use it in GitHub Desktop.

AsyncAPI logo Summer of Code logo


My Journey in GSoC 2021

In this Gist file, I will share what I learned and completed in Google Summer of Code 2021 with AsyncAPI Organization. One of the best things about AsyncAPI is that it’s a diverse community with members from all around the world and all of them have been very supportive and helping. I loved working with Lukasz Gornicki, Jibin Mathews, and I would like to thank all of them for their guidance, help, and motivation throughout the program. Maciej Urbańczyk was not officially on the mentors list but he help and guided me throughout the program, so thank you. I learned a lot of things from this program and working with this incredible community has been an amazing experience for me.

GSoC Project:

AsyncAPI Optimizer was my project in GSoC'21, it is a library that can be used by UI and CLI tools to optimize the AsyncAPI document. optimizations that it can provide includes, removing unused components, reusing duplicated components and moving duplicated components to the components section. It can genrate report for components that can be optimized and each optimization can be disabled.

What has been completed? 🎯

1. Finalized the API and how it should be used

  1. Finalized the API.
  2. Created the README.md document with all of the required documentation.

📌 For more details, please view the Pull Request.

2. Implemented The Report Generation Codebase for the first version

This took me the most amout of time. after importing the Optimizer class, user can call getReport() function and see what optimization can be done.

📌 For more details, please view the Pull Request till this commit.

3. Implemented the getOptimizedDocument() function

This function is a mother fuction, which is reponsible for applying the generated report to the AsyncAPI specification file it has options to disable the unwanted optimization:

📌 For more details, please view the Pull Request.

4. Releasing the first version

After completing all of the report generation and optimizing the actual file, we released the first version of the application which connected all of the parts together.

5. Added automatic documentation generation for the whole codebase

As the next logical step it was time to add documentation so it would be easy for other deveopers to continue the work and add new features to it.

📌 For more details, please view the Pull Request.

6. Added tests for the whole codebase

Added blackbox tests and unit tests for nearly all functions. :pushpin: For more details, please view the Pull Request.

What is remained to do? ⏳

🔶 Currently the library only support YAML as its input and output. JSON support can be added in the future. Here is the link for a GitHub issue regarding JSON support.

🔶 Although the library can pickup message headers and message payload but the whole traits is not optimized. Here is the link to the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment