- At the top and bottom of each page there must be a link to the parent page in the hierachy
- Below the header should be the page's title - which should match the Title used in the Link (after the parent page's name)
Current Page Sections
Proposed Page Sections
Currently the BluePrints are a good place to collect ideas, user stories and drafting specification. However they generally lack the formality of specifications required for the development. For this reason it is proposed that Specification pages are created to support the development process. Typically the specification is NOT a technical document, and must be prepared with a non-technical audience in mind. Perhaps it would be more accurate to refer to them as "Functional Specifications". The exception is when the specification is referring to a framework component, when the "users" will be other developers.
Joel Spolsky has good write-ups on why specifications are important and how to write them:
- Painless Functional Specifications - Part 1: Why Bother?
- Painless Functional Specifications - Part 2: What's a Spec?
Although it is a BluePrints page, [BluePrintDecisionMakingTechnicalTwo] is a good example of a specification. The following template has been based on the sections from from this specification, plus a few others.
A place to record the status and progress of the specification, especially review and approval from users/domain experts.
What the system will NOT do.
Of any new terminology in the specification
What different types of users will be using the system? What tasks will they be performing?
A list of the tables and fields that the system will include
Showing any complex navigation between screens or flow of algorithms.
For User Modules/Applications
A hierarchical overview of all of the screens
For User Modules/Applications
A detailed description (preferably with wire-frames) for all of the new screen in the system.
For Framework Modules
The functions and other interfaces which other developers will use to interface with the system. This will be the starting point for the Code Documentation.
A list of specific libraries, APIs etc which will be used by the system. NOT including the standard SahanaPy Ones.
Any external resources which may support of clarify this specification.
Any unresolved issues or unanswered questions concerning the system.
A sections where people are able to leave informal comments on the specification.
Although it may be difficult to start with, as we start having more specifications documented, it will become easier to write new ones as we will have more examples to refer to.
Features which don't involve using Python but are more advanced than the regular User's needs
- Themes (CSS?)
- Web Services
- Data Import/Export
- Translation Guidelines
How do we want to present this?
Is it worthwhile for people to document any active branches to keep track of what people are working on and what new features are being introduced into the code. Or is Launchpad sufficient?
Where SahanaPy is being used. This should link to the appropriate Branch, but ideally not be in technical language - it should be more promotional.
Is is worthwhile for contributors too be able to have profile pages? it would be good to have some sort of contact directory.