[Proposal] End-user impacts and change log

Joseph Reynolds jrey at linux.ibm.com
Wed Feb 27 02:28:41 AEDT 2019


This is a proposal to improve OpenBMC communication and get better 
release notes.

** Preamble **

Teams that use OpenBMC in other projects will not know OpenBMC as well 
as the development community, and they will not know what is in each 
release.  The main way for them to find out is by reading the release 
notes.  They will make decisions based on its contents.  That makes the 
release notes an important communication between the development 
community and its end-users.

We need to get better at communicating new and changed OpenBMC 
functions.  Doing so gives many benefits, including better release notes 
[1].

** The proposal **

1. Adopt a new practice to provide end-user impact statements when and 
where it make sense to do so.
2. Begin a project level change log to summarize user impacts.

** Details **

How do these changes help connect the folks who contribute to OpenBMC 
with the folks who use it?  The main points are:
1. Contributors write an "end-user impact" statement to notify users 
that something they might care about has changed.
2. Community members use end-user impact statements to create a change 
log which summarizes changes they consider significant.
3. Release planning summarizes the change log as an input to the release 
notes.

Items in detail:

1. Create end-user impact statements.

An "end-user impact" statement summarizes each change from the point of 
view of someone familiar with using the external interfaces.  It tells 
them what they need to know about what changed from their point of view, 
so they know what to test, how to adapt, etc.

When there is an impact, it should have details like:
- Is there an end-user impact (y/n)?
- Is this a new feature or function (where are the docs)?
- Is this a bug fix?
- What does the end-user need to know (one liner)?
These statements don't have to be perfect.  Any inkling you can provide 
that there is a user impact is helpful to the community.  The impact 
might change during the release as the design evolves.  Different 
contributors will see different impacts.  That's all normal and okay.

Are the following end-user impacts?
- Change to phosphor-webui that affects the browser display?  Answer 
"no" if it doesn't affect usage, or "Yes" if the user will likely notice 
or care.
- Bug fix in fan control? Answer depends.  Answer "yes" if the bug might 
start a fire.
- Refactor code?  No
- New Redfish API?  Yes; new features are positive user impacts.
- Adding new documentation?  No; although helpful, docs don't affect the 
end-user's use of the external interfaces
- BMCWeb retires old and accepts new TLS encryption algorithms?  Yes, it 
affects how you can connect to the BMC
- Changes to phosphor-rest or to D-Bus APIs?  No, despite their 
importance, these interfaces are technically internal to the BMC.  We 
might want to document user-impacts to these as well.
- Security fix?  Yes, probably, given today's climate
Feel free to come up with your own criteria, based on your estimation of 
an end-user.

Writing an "end-user impact" statement bridges two worlds.  Folks who 
work on the code may prefer to leave documentation for others or may not 
fully understand the impact of their change on BMC operations.  And 
nobody else may understand the change.  So who should write the end-user 
impact statement?  Anyone who understands the change and how it impacts 
end-users.  That could be developers, testers, or project managers. 
Multiple people can contribute over time.  And it should be okay to 
document an end-user impact in someone else's change.

It is important that all of the end-user impact statements be 
"findable".  Adding them as comments on selected GitHub issues is an 
obvious solution, and I suggest using the issue associated with the code 
change that caused the user impact. (We could use GitHub labels [8][9] 
to mark issues which have user impact.)

2. Create a change log from end-user impact statements.

Groups who care about end-user impacts include testers, security folks, 
release managers, and others.  They can scan the issues, read the impact 
statements, and use them to curate a change log [2] which lists all 
changes that might be interesting to users.  Each change log entry 
should have a brief description of the impact (from the user's point of 
view) with links back to the issue.  The change log could be an openbmc 
wiki page.  (And yes, some people's job includes curating change logs.)

We should have a project-wide change log which captures all impacts.  
(It is easy to ignore entries you don't care about.)  Anyone who cares 
about a user impact can add items to the change log.

How is the change log useful?  Testers will use the change log to help 
ensure test coverage and add facts about where the test cases are stored 
and whether the tests passed.  Release managers will use it to gauge 
progress toward goals.  Security folks will cover security changes.  
Technical writers, etc.  Each will contribute significant facts about 
their part of the process, and the log is a place to organize links to 
demos, etc.

3. Use the change log to make release notes.

The Release Planning work group [3] can refer to the change log as an 
input to the Release Notes [1][4].  For example, multiple changes can be 
merged, minor changes can be omitted, important changes can be 
highlighted, etc.  Having good release notes is a hallmark of a mature 
development process.

Let's be clear about this: Most users will ignore the release notes or 
use it only to answer specific questions about bugs or features.  Only a 
few will use it to learn more about new functions, changed functions 
they have to adapt to, how to review test efforts, what security fixes 
are included, etc.  They will make decisions based on its content.  For 
example, some groups may use it as part of a software security assurance 
process [5].

** Conclusion **

That's the proposal ... create end-user impact statements ... summarize 
them in a change log ... and massage that into release notes.  The real 
trick is to actually write end-user impact statements as the work is 
being done.  We have the test team [6] and the security work group [7] 
to help with that, along with pressure from groups who use OpenBMC in 
their projects.

- Joseph Reynolds

[1]: https://en.m.wikipedia.org/wiki/Release_notes
[2]: https://en.m.wikipedia.org/wiki/Changelog
[3]: https://github.com/openbmc/openbmc/wiki/Release-Planning
[4]: 
https://github.com/openbmc/docs/blob/master/release/release-notes.md
[5]: https://en.wikipedia.org/wiki/Software_security_assurance
[6]: https://github.com/openbmc/openbmc/wiki/Test-work-group
[7]: https://github.com/openbmc/openbmc/wiki/Security-working-group
[8]: https://help.github.com/en/articles/about-labels
[9]: https://github.com/openbmc/openbmc/labels



More information about the openbmc mailing list