0. Workshop
1. Audience Survey
Questions
Q1. How many people here have released a OSHW project? (x1/y)
Q2. How many of you have certified any of those projects? (x2/x1)
Q3. Have any of you certified multiple projects? (x3/x2)
Q4. How many of you have re-certified updated releases of certified projects? (x4/x2)
Q5. Has anyone tried modifying or building on top of existing projects? (x5/y)
Summary
example projects
- led prototype board light-on wsd 20 clone stm32 - up and running
- halloween vending machine build earrings for rabbi
- rc2014
notes
- diffs are useless unless you pay for a service
- openscad - jump to microelectronics
- challenge getting into digital space
- "structural diffing" - see diff tastic
- need for name-spacing; unambiguous means of referencing component instances
- need a means of mapping dof schema to other tools (e.g., KiCad, FreeCAD)
- this enables referencing data (s.a., part description) in DOF to enhance understanding data in other tools (e.g., what is the purpose of capacitor C2 in board layout)
- this enables deeper referencing within instructions (e.g., where to place capacitor on a board based on board layout within assembly instructions)
- any instance of a component in DOF needs to have a (fully qualified?) singular definitive name; this should be one-to-one and onto
- investigate connection between structural diffing and mapping to other tools in user stories
- need a means of mapping dof schema to other tools (e.g., KiCad, FreeCAD)
- need context as to why a design was changed (e.g., a capacitor was swapped out or removed), or any design decision
- this is a kind of annotation capability that should
- annotate any element in a project (e.g., components, aspects of components, steps in instructions, any data structure)
- include ability to leave commentary
- be able to point to one or more element(s) that it is annotating
- be able to point to one or more "source" element(s), s.a.,
- a Bib reference
- another annotation
- an "analysis artifact"
- be supported in m30ml
- this is a kind of annotation capability that should
notes
- newer process makes more sense
- fairly seamless
notes
- 5 certified
notes
- one and done for most
notes
- (example projects from audience)
- (specific experiences from audience, "what project(s) did you make/modify/reuse?")
2. There Must Be a Better Way
1. Core Capabilities
These are the core needs of the OSHW community when sharing, communicating, and collaborating on OSHW projects
1. OSHW Definition
OSHW projects should be developed and shared in accordance to the OSHW Definition.1
2. OSHW Certification
OSHW projects should be developed and shared in accordance to the OSHW Certification process.1
3. OSHW Should Be like OSS
OSHW should be like Open Source Software (OSS) to the greatest degree possible (e.g. sharing, development, licensing).
4. OSHW Development Should Leverage Modern Software Development Techniques
OSHW development should leverage modern software development techniques to improve the OSHW developer experience.
examples
- package management
- DevOps (e.g., DevSecOps, DocOps)
- mono-repos
- design patterns (e.g., model-view-controller)
- semantic versioning
2. Pillars
Classes of data that need to be captured 1. Core Capabilities
1. BOM Data
Bill of Materials (BOM) data: list of components and counts covering all parts and tools which must be procured to build the project
2. Instructions
- Assembly Instructions: complete list of instructions to build the project from its procured parts
- Operating Instructions: complete list of instructions to use the project safely and effectively
3. Supporting Data
e.g. design files,
- CAD models (e.g., Mechanical CAD files, PCB Gerbers files)
- Specifications (e.g., operating temperature range)
- Interface definitions (e.g., board pinout)
- Schematics (e.g., Circuit boards)
3. Developing User Stories
See also User Story template.
User Stories
As a OSHW User, I want to Build an OSHW Project, so that I can Reproduce the OSHW Project
related to 1. Core Capabilities: 1. OSHW Definition
notes
- build using alternative components for (end-of-life) availability
As a OSHW User, I want to Build an OSHW Project with Alternative Components, so that I can Address Issues with Component Availability
related to 1. Core Capabilities: 1. OSHW Definition
As a OSHW Developer, I want to Ensure Unique Project Element Names, so that I can Unambiguously Identify Every Instance of a Component in a Project
related to 1. Core Capabilities: 1. OSHW Definition
As a OSHW Developer, I want to Organize OSHW Project, so that I can Conform to DRY Principle
related to 1. Core Capabilities: 4. OSHW Development Should Leverage Modern Software Development Techniques
notes
- need for bridging knowledge gap between industry standard and open-source practices; no mentoring programs / methodology
- while the DOF team agrees this is a challenge within the OSHW community, it is outside the scope of DOF (packaging a OSHW project to be shareable/modifiable/reproducible)
- lintable data structure
- interpret "lintable" to mean the content in the model is verifiable (no missing fields, orphan elements, etc.)
- LinkML "validate" capability implements these kinds of tests
- a.k.a., expose ability to validate content
As a OSHW Developer, I want to Verify Project Data, so that I can Discover Project Errors Early
related to 1. Core Capabilities: 4. OSHW Development Should Leverage Modern Software Development Techniques
As a OSHW Developer, I want to Decompose OSHW Project into Subprojects, so that I can Identify Reusable Elements of a Project
related to 1. Core Capabilities: 4. OSHW Development Should Leverage Modern Software Development Techniques
As a OSHW Developer, I want to Reuse Elements of External OSHW Projects, so that I can Build upon Previous Engineering Effort
related to 1. Core Capabilities: 4. OSHW Development Should Leverage Modern Software Development Techniques
As a OSHW Developer, I want to Reuse Elements of This OSHW Project, so that I can Define an Element of a Project Only Once
related to 1. Core Capabilities: 4. OSHW Development Should Leverage Modern Software Development Techniques
As a OSHW User, I want to Fork an OSHW Project, so that I can Customize the Forked OSHW Project
related to 1. Core Capabilities: 3. OSHW Should Be like OSS
As a OSHW Developer, I want to Automate Certification, so that I can Easily Certify Every Release
related to 1. Core Capabilities: 2. OSHW Certification
As a OSHW Developer, I want to Diff a Project between Commits, so that I can Review Changes between Commits
related to 3. OSHW Should Be like OSS
As a OSHW User, I want to Annotate an OSHW Project, so that I can Provide Context or Explanation about Model Content
related to 1. Core Capabilities: 0. Unidentified
As a OSHW User, I want to Comment on Elements, so that I can Explain or Discuss Elements
related to 1. Core Capabilities: 0. Unidentified
As a OSHW Developer, I want to Attach a Citation to Elements, so that I can Attribute Credit to External Resources
related to 1. Core Capabilities: 0. Unidentified
As a OSHW User, I want to Create Agile Decision Record about Elements, so that I can Capture the Reasoning behind a Decision
related to 1. Core Capabilities: 0. Unidentified
As a OSHW Developer, I want to Associate a Figure with Elements, so that I can Describe the Element Visually
related to 1. Core Capabilities: 0. Unidentified
As a OSHW Developer, I want to Associate an Asset with Elements, so that I can Use Supporting Material
related to 1. Core Capabilities: 0. Unidentified
Users
notes
- user who builds OSHW projects for their own use
notes
- user who develops/maintains OSHW project(s)
Use Cases
List of actions to be performed by a user
Rationales
List of objectives/reasons