Codebase Maintenance Overview
Almost all coding we do ends up in our big main github repository, or as we call it, the monorepo. There are a few exceptions, but these are not going to be considered in this section of the handbook.
Because the monorepo is so huge and because multiple people actively work on it in parallel, it is critically important to keep it in order. To achieve this we have a set of rules and processes we follow. This page is here to serve as an overview for everything related to maintaining the repository.
Normally we have one person responsible for monorepo well-being, the monorepo maintainer. So if it’s not you, most of the content of the following chapters will not be relevant to your day-to-day job.
Hygiene of Directories Structure - first and foremost thing. Obviously we can’t just create files and folders wherever we want. There’s a strict structure. This chapter describes how we maintain this structure and keep the repo clean.
Pull Requests Review Memo - if you are a member of the product team, from time to time you may be asked to review a pull request. This page outlines the things you need to pay attention to during this process.
Regular Branch Review - once in a while (usually once every two weeks) the maintainer reviews all the existing github branches to make sure that nothing gets forgotten.
Github Builds - we use github actions to check our packages
before merging pull requests into the master branch. This chapter covers the
essential information one needs to know to write a good github action script for
a new package or to update an existing one.
Fixing Github Builds - once in while github builds fail. And the process of finding the root of the problem is not particularly pleasant. In this chapter you’ll find tips on how to make it at least a little bit less painful.
Internal CRAN - we host our packages on a private CRAN-like repository and we have an automated process to add new package versions to it. Normally it works just fine, but sometimes it requires maintenance. If that’s the case, this chapter should help.