Wiki Guidelines
Page Standards
- 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
BluePrints
Developer Guidelines
Installation Guidelines
Trac
User Guideline
Wiki
Proposed Page Sections
Specifications
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.
Specification Template
History
A place to record the status and progress of the specification, especially review and approval from users/domain experts.
yyyy-mm-dd
<Name>
<Review Comments>
Overview
Scenarios/User Stories
optional
Non Goals
optional
What the system will NOT do.
Definitions
optional
Of any new terminology in the specification
Users
What different types of users will be using the system? What tasks will they be performing?
Data Model
A list of the tables and fields that the system will include
Flowcharts
Optional
Showing any complex navigation between screens or flow of algorithms.
Menu
For User Modules/Applications
A hierarchical overview of all of the screens
Screens
For User Modules/Applications
A detailed description (preferably with wire-frames) for all of the new screen in the system.
API
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.
Technologies
Optional
A list of specific libraries, APIs etc which will be used by the system. NOT including the standard SahanaPy Ones.
References
Optional
Any external resources which may support of clarify this specification.
Open Issues
Optional
Any unresolved issues or unanswered questions concerning the system.
Comments
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.
Code Documentation
Technical Documentation
Features which don't involve using Python but are more advanced than the regular User's needs
- Installation
- Configuration
- Themes (CSS?)
- Menus
- Web Services
- Synchronization
- Data Import/Export
- Translation Guidelines
User Documentation
How do we want to present this?
Branches
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?
Deployments
Where SahanaPy is being used. This should link to the appropriate Branch, but ideally not be in technical language - it should be more promotional.
Contributors
Is is worthwhile for contributors too be able to have profile pages? it would be good to have some sort of contact directory.