Source Code
- Never change the formatting on someone else's source code file.
- Include a header that has the appropriate license/copyright info
- MIT license is fine, but think about this at the beginning of a project
- Treat all projects as potentially open source
Source Control
- Source control system of record is svn.mit.edu
- a future goal is to have a read-only, web-browsable repository
Build Process
- we do continuous build integration, in order to flush out problems quickly
- our tool is Apache Continuum, but we should investigate Bamboo for its Jira integration
- every build should have a build number to identify it
Testing and QA
- Every project must have some kind of test plan
- Before going into production, someone must sign off on the test plan to certify that the project is compliant with the quality criteria
- For Java, we use JMeter to do automated testing
- We use YourKit for performance testing
- We have been using Questcon as our outsourced QA partner
Release Engineering
- SVN:
- Every separately deployable piece of a project should have its own svn trunk, perhaps under a parent directory for the whole project
-
- Every time a build is deployed to Test or Production, the trunk should be branched and given a release name/number
-
- Test or Production patches should be made in the branch, then folded into the trunk
Deployment
Bug-tracking and Issue Management
- Jira is the bug and issue tracking system.
- We use RT for tracking customer issues & communications.
Customer Support
Documentation
Every project should have a website, with a discussion forum for support, help docs, etc.
Project Management
Project Infrastructure