Minerva Long-term Support - Design Doc
Project Owner: @Chamath Wijesekera
Project Proposal: https://docs.google.com/document/d/1mjwUHoCYAuAeoO6hGU8IME7SbY8ukSyKla_HaFrBO40/edit#
Project Description
The goal of this project is to enhance the user and developer documentation for Minerva, along with improving the developer experience to create, test, and deploy new builds of Minerva. Optimally, by the end of this project, Minerva and the tools and resources surrounding it should be at a state such that if the original developers of the project were to disappear (e.g. die), remaining team members will be able to continue maintaining and developing the project.
Requirements
This project comes with two major tasks:
Improve Documentation for Minerva
Enhance existing user-facing documentation on Minerva and provide more information on not only its usage, but also its behavior and functionality
Write up comprehensive developer documentation for Minerva that provides in-depth information on the existing codebase and system design along with information on developer workflows for contributing to Minerva. This can include processes such as steps to making modifications to the AWS infrastructure, getting access and deploying builds to the testing environment, and so on.
Improve Developer Experience for Minerva
If still existing, move anything pertaining to the development and usage of Minerva that are under the personal accounts of the developers over to those under Waterloo Rocketry. Some candidates are listed below:
Minerva testing Slack workspace
Reconfigure the GitHub Actions deployment pipeline for Minerva to allow for automated deployments to AWS for both testing and production environments
Along with this, formalize the Git workflow so it works with our intended “develop → test → release” flow (e.g. merge to a dev branch to deploy to testing, and only allow the dev branch to merge to main)
Fix Minerva in the testing environment so it can once again be used in the test Slack to test new builds
As of a few months ago, the issue was with the Google Calendar API, similar to what was faced with production Minerva a while ago
Formalize the process for obtaining credentials for accounts or access to services pertaining to the development of Minerva
E.g.
AWS
Slack API
Scope
The scope of this project is strictly Minerva, and the services and infrastructure that support it.
Required Documentation
(Potentially) a design doc for the revived Minerva deployment pipeline
This is likely going to be replicated from the previous pipeline that was used to deploy Minerva, so this may not be necessary.
Minerva user-facing documentation
Minerva developer-facing documentation
Deliverables Timeline
More concrete timeline TBD:
End of Fall 2022 - Initial Documentation Initial documentation, mostly user-facing for what currently exists for Minerva. Basic developer documentation, mostly of the code-base, prior to carrying out developer experience improvement tasks.
End of Winter 2023 - Developer Experience Improvement Tasks Developer experience improvements as outlined in the requirements carried out and implemented.
End of Winter 2023 - Updated Documentation Documentation revised following improvements to developer experience.