- Healthy culture. A software project is its invested maintainers, and they’re also responsible for maintaining the culture.
- Virtue abounds. Everyone on the team really really cares about doing a great job.
- Awesome documentation, and clear/sensible standards around same.
- Easy to test. Easier to test than not test.
- Easy to code. New developers can get code, run apps/services, change/commit code their first day on the job.
- Extant coding standards.
- Extant tool to lint code (ensure conformance to coding standards). Integrated with source control so you can spot lint errors before you commit.
- All tools work with any dev setup–they are not tied to any operating system nor IDE.
- Distributed, modern source control.
- Continuous integration. Every commit on every branch is automatically tested.
- Issue tracking.
- Integrated source control, continuous integration, and issue tracking.
- Well-crafted, useful automated tests.