Hi Abhishek, This is a good start but it will be easier to manage comments if you go ahead and start a draft proposal in the GSOC 2016 submission site. I prefer the google doc option to pointing to the Airavata wiki for proposal development since I can easily comment inline. Please make sure you give commenting and suggesting privileges.
Marlon From: Abhishek Jain <[email protected]<mailto:[email protected]>> Reply-To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Date: Monday, March 21, 2016 at 10:37 AM To: "[email protected]<mailto:[email protected]>" <[email protected]<mailto:[email protected]>> Subject: [GSoC Proposal] - Re-Factoring Apache Airavata Codebase to incorporate well-known object-oriented Design patterns and principles Hi Dev Team, Please review the following GSoC proposal that I plan to submit: Title: Re-Factoring Apache Airavata Codebase to incorporate well-known object-oriented Design patterns and principles Abstract: Analyze the Airavata code base to incorporate well known creational, structural, and behavioral design patterns. As the Airavata code base has steadily grown over the years, this project will evaluate the architecture and make updates wherever necessary so that the code uses classic, well tested, maintainable, readable, and extensible solutions to common design problems. Introduction: Analyze the Airavata code base to incorporate well known creational, structural, and behavioral design patterns. As the Airavata code base has steadily grown over the years, it consists of both old and new modules. While the Airavata codebase has been extensively tested for functionality, it has not been evaluated for design elegance. Given the maturity of the current code base, it is the appropriate time to study and evaluate which well-known patterns seem to emerge from all the additions of modules and features. This project will evaluate the architecture, refactor the code wherever appropriate, and make updates wherever necessary so that the code uses classic, well tested, maintainable, readable, loosely coupled, and extensible solutions to common design problems. The application of patterns will also ensure that the established design principles and guidelines are followed in all the modules. The current use cases of Airavata, including the planned integration with Cloud and Big Data technologies, will be studied to identify the common traits of the problems being addressed by Airavata, and incorporate or adjust the code patterns accordingly. For example, as Airavata is extended for use in Cloud environments, and different components, some with multiple implementation choices, have to be wired together, the Dependency Injection pattern is appropriate for modularity, and loosely coupled designed. The Logger code in Airavata can be extended to include levels to capture the severity of messages, errors, and exceptions. Additionally, the code will be updated to use newer Java features such as lambda expressions. Goals: * Develop a dependency graph of all the modules in the Airavata code base * Evaluate how the components are wired for a successful job launch to understand the coupling of objects (loosely coupled vs tightly coupled) * Evaluate the current use of patterns and well-known design principles in Airavata and make updates whenever necessary along with updates to the test suites * Evaluate the design patterns and principles of newly added services such as adding email functionality to send job status messages, integration of support for Cloud environments such as Mesos, Marathon, and Aurora, and accordingly update the code with proven design solutions. Any comment and suggestions would be very helpful. - Abhishek Jain
