Better design discussions
Joseph Reynolds
joseph-reynolds at charter.net
Tue Oct 16 13:37:59 AEDT 2018
On 10/15/2018 4:44 PM, openbmc-request at lists.ozlabs.org wrote:
> Send openbmc mailing list submissions to
> openbmc at lists.ozlabs.org
This is a summary of an OpenBMC Community Call discussion held on
2018-Oct-15. I gave my advice for how to make our design discussions
more approachable and easier to understand. The advice is consistent
with ideas discussed by the release planning workgroup and the testing
workgroup. The main idea is to use the new design template:
https://github.com/openbmc/docs/blob/master/designs/design-template.md,
specifically:
- record the problem that prompted you to create the design
- walk through functional scenarios in your design overview
The problems I am trying to solve include:
- It can be difficult to understand the context each design, that is,
how it fits into the larger solution.
- It can be difficult to understand the value of each design, that is,
what problem it solves.
- It can be difficult to understand the function of each design, that
is, how to use it to solve a problem.
Details:
Why take time to document requirements and scenarios?
- Writing the requirements and walking through scenarios will sharpen
your thinking about what problem you are trying to solve and how you
plan solve it.
- You only need to explain your requirements once, and you won't have to
repeat yourself.
- You'll be helping the uninitiated to understand your technical area.
- Your designs will be more approachable and easier to understand.
- You'll get better reviews which will give you a better design.
- Scenarios engage the reader and help explore your design.
- You'll learn how better requirements leads to better design, and how
that leads to better code.
What exactly am I calling for?
- Requirements: Before you create new design, ask yourself what problem
you are trying to solve, then write down the answer. See the design
template for ideas.
- Scenarios: When you have a design, walk through a few high-level
scenarios, then write them down. See
https://en.wikipedia.org/wiki/Scenario_(computing).
- Collaborate: Be prepared to answer questions about the problem you are
proposing to solve. Also be prepared to explain how to use your design
to solve the problem.
That's the only change I am calling for.
I also presented a negative scenario intended to illustrate the
consequences of not having a good design process. In this scenario,
attackers dump bad designs onto the mailing list, then push buggy code
into gerrit, and +1 their reviews. I believe a good defense against
this (and more subtle bugs) is a development community that creates
strong links between requirements, design, and code.
Thank you,
- Joseph
More information about the openbmc
mailing list