- TDD smoke tests should run automatically in dev on save with 10 seconds. Bonus points for running personal TDD sandbox on faster remote servers via rsync and trigger on file-save.
- Standardize on 1-3 languages.
- Services composed of simpler 12factor microservices, not monorepo megaservices. Deploy fuse switching, proxying, HA/redundancy, rate limiting, monitoring and performance stats collection just like macroservices.
changelogs, reproducible builds, code review, signing, grouped components, distributed builds, TDD smoke test, standardized languages, and microservices are all possible (and just as easy) in monorepos.
You no longer need to worry about versioning, which means no manual updates of either your package or updating dependency versions. Although access control is more difficult, that doesn't seem like a good enough reason to make this kind of decision.
- Semantic versions.
- Group components into reusable packages.
- Don't use git modules or other source cloning in builds, use native/platform package management.
- Access control is made much easier.
- Sign commits and tags.
- Code review either before- or after-the-fact, just do it(tm).
- Reproducible builds - strip out timestamps/random tokens/unsorted metadata.
- Create CHANGELOGs semi/automatically.
- Eliminate manual steps altogether.
- Distributed builds/build caching (distcc, ccache).
- TDD smoke tests should run automatically in dev on save with 10 seconds. Bonus points for running personal TDD sandbox on faster remote servers via rsync and trigger on file-save.
- Standardize on 1-3 languages.
- Services composed of simpler 12factor microservices, not monorepo megaservices. Deploy fuse switching, proxying, HA/redundancy, rate limiting, monitoring and performance stats collection just like macroservices.