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.
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
- Finalized the API.
- Created the README.md document with all of the required documentation.
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.
3. Implemented the
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:
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.
6. Added tests for the whole codebase
Added blackbox tests and unit tests for nearly all functions.