Contributor
Prashant Jha

[PolyPhy] Polyphorm / PolyPhy - PolyPhy infrastructure engineering and practices


Mentors
Oskar Elek, Anisha Goel
Organization
UC OSPO
Technologies
python, github, docker, jupyter, security, ci/cd, Logging, Profiling, Monitoring, Load Testing
Topics
security, software development, infrastructure, performance optimization, CI/CD, Codebase Refactoring
This proposal aims to enhance the infrastructure of PolyPhy by developing new architecture and maintaining existing codebases. The project will involve refactoring the current codebase, creating interfaces for PolyPhy that enable access to its features through Python/Jupyter code and command line, configuring the codebase according to the team's needs, and improving the performance, security, and documentation of PolyPhy. To achieve these goals, I will refactor existing codebase and enhance the PolyPhy package, create a common API to allow multiple and dynamic changes to the pipeline, implement efficient CI/CD workflows for the PolyPhy repository, including unit and integration tests, and create a public pip package release for PolyPhy. Additionally, I will implement a monitoring and logging system to detect and diagnose issues with the software in production, perform profiling and load testing to improve code quality and performance, and establish security best practices such as code reviews, vulnerability scanning, and penetration testing. The expected result of this project is a robust and user-friendly PolyPhy package that can handle different parts of the pipeline, has an efficient CI/CD workflow, and adheres to security best practices. The package should be Dockerized, and the build process should be automated using Docker tools, which will help in maintaining consistency across multiple platforms. Moreover, there should be a Github page workflow for the PolyPhy website deployment, and an issues template should be created to promote people from opening issues on the repos. Finally, the documentation should be improved, and a release management process should be established that includes versioning, release notes, and changelogs.