Skip to content

Contributing: Brainstorming

Andy Williams edited this page Apr 14, 2021 · 1 revision

Purpose

When you know something would be excellent to add, or you see a problem that really needs to be addressed, but it is really complicated or a very large scope it can help to collaborate on a solution. Instead of jumping straight to the Contributing: Proposals stage we recommend gathering a group and using this brainstorming document first.

The aim of brainstorming is to fully understand the problem or potential feature, make sure that you have diverse opinions on what matters and how it could be approached. Once these things are understood the group should be able to collaborate on potential solutions and eventually converge on one proposed solution that can go through the usual proposals process (or just be implemented directly if the solution turns out to be straight-forward).

Brainstorming document

In preparation for a discussion it is helpful to gather background material and articulate the problem in a document that can be read and collaborated on ahead of time. Because this is very early in the process of finding a solution it is important to focus on what is known and why it matters rather than proposed fixes. To get the most out of group discussions we should bring problems to discuss rather than solutions to analyse.

Because this information will eventually become a proposal it is best to create a wiki page for the discussion and focus on the following important areas:

  • Introduction - describe briefly the problem area or lacking feature.
  • Background - discuss any relevant background, such as links to articles, meeting minutes, issue or PR discussion threads, etc.
  • Scope - where appropriate try to consider the different areas of Fyne (and its usage) that would be impacted. This is not a fixed scope but could help the discussions that follow.
  • Prior Art - if some other toolkit, API, language, library, etc. has already overcome this challenge, post a link to any documentation or discussions you can find. This can help to uncover hidden complexities or uncover ways that previous solutions may not apply.
  • Discussion - this main section allows the team to add ideas and thoughts to expand on the above. It should be a place to capture the notes of meetings or conversations about this topic as it progresses towards a proposed solution.

Maintaining the document

As discussions progress please keep the discussion section of your document up to date. Where scope changes consider revising the earlier sections as well. It is important that the proposal that follows is clearly a solution to the challenges that are discussed through the brainstorm process.

Rationale

In early stages of collaboration it is more important to understand the problem than it is to have ideas of how to solve. By bringing together diverse opinions we can find the best solution - after we need to build the right solution for our community, not for ourselves. The approach outlined above attempts to gain a shared understanding of what really needs to be developed so that as the discussion moves toward potential solutions the team are working on a common goal. By developing solutions together we do not end up with many different designs proposed by different people that could lead to less productive discussions about the correct way forward.