Requirements
General
Requirements are the necessary features of a given product, pelrocess, or development pathway. The requirements can apply to machine be design, design of a website, design of a Template, design of a software tool, etc.
Machines
When applied to machine development, Requirements are the features that the given machine must have. These are based on the general concept of the GVCS - machines that meet or exceed industry standards, and are sufficient to build a post-scarcity village infrastructure for 150 people.
Requirements for OSE machines are based on Module Based Design - we focus on a design language where we identify a finite set of modules, and these modules are used to build any of the GVCS machines. While there are 50 machines, there may be ~200 modules which are used through all the machines. The specific number of modules decreases with time as multi-purpose modules are substituted into the Set.
The motivation is that instead of building a fixed number of machines, we can build an infinite number of machines by combining the modules in different ways.
The Specification narrows the development path from a general idea to a specific implementation. The specification is a distillation of the Conceptual Design (how it's done) and Design Rationale (why it's done in a particular way) into a specific set of design parameters.
The specific items that a Requirement should have includes Specifications. In the Open Source Product Development method, the specification should be approved by the technical lead, such that the general development workflow includes:
Protocol for Machines
- Start with a Requirements Spreadsheet or equivalent.
- Fill it out for your machine. Include simple diagrams and flowcharts.
- Publish in the Development Spreadsheet for a given machine. If you don't have edit privileges, use the Pull Request form. If you join a given development team, you may be given further edit privileges.