xref: /aosp_15_r20/external/flashrom/doc/how_to_support_flashrom.rst (revision 0d6140be3aa665ecc836e8907834fcd3e3b018fc)
1=======================
2How to support flashrom
3=======================
4
5Intro
6=========
7
8This document is for people and companies who want to help flashrom, and it explains
9various ways how to do this.
10
11There are lots of ways to help (as you can see below), whether you have little time or a lot,
12whether you are a developer, a user or a company.
13flashrom is a free open source software project, and all the contributions are publicly visible -
14which means you get all the glory for your work, and you help the whole open source ecosystem.
15Thank you!
16
17flashrom supports a huge variety of environments, platforms and hardware, and there is
18no one person or one company on earth which has setup to test and maintain all of these
19(and realistically, never will be). The only way we can maintain all of these,
20is together as a community.
21
22To be aware of what's going on, subscribe to our :ref:`mailing list` and/or join our :ref:`real time channels`.
23
24Development
25===========
26
27Development, or in other words, sending patches to flashrom, is what probably comes to mind first
28when you think about helping and contributing. And indeed, this is a great help,
29and patches are always welcome.
30
31If your idea fits into one patch, you can just send it. If you have bigger plans in mind,
32a large amount of work over a longer time frame, the best way is to start a topic on the mailing list.
33This helps with planning, and also people in the community, whoever is interested,
34will be able to support your effort.
35
36If you are new to flashrom development process, please start by reading :doc:`/dev_guide/development_guide`.
37It's also useful to check `existing patches <https://review.coreboot.org/q/status:open+project:flashrom>`_
38for examples on how the dev process works.
39
40For some types of contributions we have more detailed guidelines, check the list :doc:`/contrib_howtos/index`.
41
42Code reviews
43============
44
45Did you know: code reviews are equally important as writing the code!
46
47For each patch, we need at least one reviewer, and often more than one.
48Doing code reviews is highly appreciated and highly respected!
49All reviewers' names are immortalised in git history together with authors names,
50as "Reviewed-by" and "Signed-off-by" tags in a commit message (see `example <https://review.coreboot.org/c/flashrom/+/80729>`_).
51
52Code review involves carefully inspecting the patch in Gerrit, and adding comments if anything
53is unclear/potential errors/issues/something missing etc. If you think the patch is ready,
54you can vote on the patch. Every Gerrit user with a registered account can add comments to patches
55and vote +1/-1. Note that if you vote -1, you need to add a comment explaining why you gave a negative vote,
56and what specific big issues that you see with the patch. Negative vote is a stronger opinion,
57and in most cases just adding comments is enough.
58
59The group of people who can fully approve the patch (i.e. vote +2, see :doc:`/about_flashrom/team`)
60is limited, however every Gerrit user can do code reviews. This increases overall confidence
61in the reviewed patch. Approving the patch is much easier when the code reviews are done well.
62
63You can check pending patches under review `in Gerrit <https://review.coreboot.org/q/status:open+project:flashrom>`_
64and help with code review if a patch looks useful, you understand what it is about, and want to have it submitted.
65
66.. _building-and-testing:
67
68Building and testing
69====================
70
71Given the large variety of environments and hardware that flashrom supports,
72the question of building and testing flashrom is always relevant.
73Try to build flashrom at head on your environment and if it doesn't build,
74send a patch to fix (see :doc:`/dev_guide/development_guide`) or file a ticket in :ref:`bugtracker`
75with as many details as possible.
76
77A special case of this is, the time when flashrom team is preparing the release.
78The release candidate tag is announced on the mailing list, and it is a great help to try and build and test
79a release candidate in whatever your environment is. Both positive and negative results are important,
80and you are welcome to share the results, just don't forget to include environment details.
81In case of issues, as always: patches are very very welcome.
82
83Documentation
84=============
85
86You don't have to be a flashrom developer to add, update or review documentation. In fact,
87lots of users' docs can greatly benefit from reviews by the users, who are supposed to read and use the docs.
88Doc how to update the docs is here: :doc:`/how_to_add_docs`
89
90As for specific ideas:
91
92#. If there is an announcement on the mailing list about new doc under review,
93   have a look and you can join the review
94
95#. Help migrate information from `old website <https://wiki.flashrom.org/>`_ to `new website <https://www.flashrom.org/>`_.
96   The rule is, all useful docs need to be migrated but they should be reviewed. Concrete example,
97   there are docs for programmers, written a while ago. If you are using the programmer regularly
98   you can review the existing doc and help update it (if needed) and then the updated doc will
99   go to the new website.
100
101#. New documentation welcome.
102
103Mailing list
104============
105
106If you are not subscribed: please subscribe (see :ref:`mailing list`) so you can see what's going on.
107
108Oftentimes, mailing list has questions from flashrom users. If it so happens
109that you maybe know what they are asking, or have ideas about it - you are welcome to respond!
110This will be very helpful.
111
112Similarly, if there is a development discussion that makes sense to you and is relevant: please join the discussion.
113
114Mailing list is archived, and archives are public and searchable. Which means,
115when you respond to the post you not only help that one person who is asking,
116but you also help one hundred people in future, who have the same question and can search the answer on the list archives.
117
118Joining the team
119================
120
121If you have experience of flashrom development, good knowledge of some of the areas of flashrom code,
122some time and motivation, you can consider joining the team, more info here (:doc:`/about_flashrom/team`).
123Unlike the previous ideas, this means some *regular* time commitment (the amount of time
124can be small or large, but it is regular).
125
126If you are not at this stage yet, but are considering this as a potential goal for the future,
127check the :doc:`/about_flashrom/team` page for what it means.
128
129Special appeal for companies
130============================
131
132There are lots of companies that have their own forks of flashrom, and it would be a great help
133if you could contribute back to the upstream project!
134
135Try to keep your fork as close as possible to upstream, do not diverge without a strong reason.
136This makes it easier for you to downstream patches, and also makes it easier to contribute patches
137from your fork upstream. As an end result, you will be exchanging code and knowledge with a large ecosystem
138rather than hiding in your own corner. Working together we can achieve a higher quality bar,
139which is better for the upstream project, and better for your fork.
140
141Consider the following ideas:
142
143#. Send upstream the bug fixes you found
144
145#. Add unit tests for the areas you are using actively
146
147#. Add new features or add support for new platforms/hardware, especially if you have that in your lab
148   and can reliably test and maintain
149
150#. Help with releases: if you have an automated test suite, run it on release candidates.
151   Build and test flashrom for the devices you have in the lab.
152
153#. If possible, allocate an engineer(s) to contribute to upstream project (and all their work
154   you can downstream straight away). Upstream early, upstream often: anything you can upstream sooner
155   will make your life easier in the future.
156
157#. Have someone subscribed to the mailing list and respond when the topic is relevant to you,
158   and you have a knowledge of questions or ideas how to help.
159
160#. On a long term, consider joining the :doc:`/about_flashrom/team`, pick something to maintain:
161   for example a programmer you are using often
162
163Outro
164========
165
166If you read all of the above and still unsure what to do, but actually want to help,
167please don't be afraid to ask flashrom project lead directly (Anastasia Klimchuk,
168and you can find email in `Gerrit <https://review.coreboot.org/c/flashrom/+/80729>`_
169or tag aklm on Discord (see :ref:`real time channels`).
170
171**Every bit of help matters and you can help make flashrom a better place. Thank you!**
172