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.