OpenPBS Design Document Guidelines
Rules:
- All design documents are to be announced on the community forum: http://community.pbspro.org/
- The announcement should contain a link to the design document and a brief description
- All designs are to be posted on https://pbspro.atlassian.net/wiki/spaces/PD
- Initial drafts need only contain a title and overview with technical details to follow
- Comments are to be posted to the community forum in response to the announcement
- Code changes must be consistent with the design document prior to merge
General Guidelines:
- Prior to becoming open source, OpenPBS design documents were classified as internal (IDD) or external (EDD). This distinction no longer exists now that OpenPBS is a community project. Henceforth, design documents will no longer carry the terms "internal" or "external".
- Consider your audience when you write design documents. OpenPBS developers, test developers, testers, publications staff, system administrators, and users have different needs. Try to anticipate the questions they want answered.
- Be concise in your descriptions.
- Use illustrations when appropriate.
- Provide examples when appropriate.
- Do your best to anticipate questions your audience will have, and answer them concisely
- Keep your document updated as you develop your code
- Examples of design documents that are consistent with these guidelines may be found here:
Design Document Guidelines:
Design documents are to contain the following mandatory components:
- Title
- Do:
- Place your title at the top of the document
- Make it unique, concise, and self-descriptive
- Use the issue ID and title when applicable (72 characters max, try to stay below 50)
- E.g. PP-1234: Improving fairshare performance
- Don't:
- Span more than one line
- Do:
- Overview
- Do:
- Assume your audience consists of both technical and non-technical readers
- Briefly describe the change being proposed
- Describe the motivation for the change
- Expand lesser known acronyms on first use, like IPMI (Intelligent Platform Management Interface)
- Don't:
- Go into too much detail
- Use OpenPBS keywords excessively. Use generic terms where possible.
- Expand commonly used acronyms like PBS, TCP, etc. (Use your judgement)
- Include code or complex terminology
- Do:
- Glossary
- Do:
- Define new or unfamiliar terms
- Spell out lesser known acronyms (e.g. IPMI, SNMP, etc.)
- Don't:
- Include common terms (e.g. TCP, UDP, etc.)
- Do:
- Technical Details
- Do:
- Assume your audience is mostly technical at this point
- Go into sufficient detail to fully describe what will change with as little ambiguity as possible
- E.g. is a new attribute being added?
- What does it contain?
- What type is it?
- Who can read it?
- Who can write it?
- E.g. is a new attribute being added?
- Use illustrations, tables, examples, and other visual aids
- Provide instructions on how to use new parameters, commands, interfaces, etc.
- Use multiple subsections for complex changes
- Take the following into consideration as you design:
- Performance
- Scalability
- Resilience
- Security
- Maintainability
- Testability
- Administration
- Usability
- Installation, upgrades, and removal
- Discuss interfaces
- What interfaces are being provided, and who are the consumers
- What interfaces are being consumed, and who provides them
- What interfaces are being deprecated or removed
- Identify any excluded platforms (e.g. Windows only, Linux only)
- Don't
- Document log messages unless required for end user documentation
- Include large amounts of code
- Cover details best left as comments in the code
- Do: