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.
- Finalized the API.
- Created the README.md document with all of the required documentation.
📌 For more details, please view the Pull Request.
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.
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.
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.
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.
Added blackbox tests and unit tests for nearly all functions. :pushpin: For more details, please view the Pull Request.
🔶 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.