This lifts some aspects out of #156 that deserve more attention IMHO, and it addresses some recent discussions about where to put design discussions1 2 .
Contrary to @earl-warren 's request, I do not think that the forgejo/discussions repository is an adequate place for design discussions. It's rather used for meta discussions about the project itself, long-term strategies and workflow adjustments. However, design decisions are a part of the development workflow. They are not code, but they are actual work that should live together with the rest of the development.
However, I acknowledge the need for developers to find tasks that are actionable and ready to be picked up. That's why I propose the following new workflow, especially for feature requests:
- bugs get the bug/confirmed label assigned which marks them as ready to start hacking, no adjustment to the bug workflow seems necessary to me
- feature requests by end users follow the new cycle which was briefly discussed in #156
- at the end, these feature requests are turned into actionable issues and labelled as such for development.
How the workflow can look in detail
Users are encouraged to describe the problem rather than the solution:: Feature requests typically consist of the description of a solution. However, often there are multiple solutions to one problem, and there are multiple problems with one solution. forgejo/forgejo#4119 is one such example, it is the combination of three different feature requests that all demanded different solutions for the same problem ("long scrolling to the README" in this example).
Often, feature requests want one more button to configure X, which is one step closer to hell (more settings, more logic, more edge cases, more complexity, more to learn for new users etc). And sometimes, the requested behaviour would be the best for everyone (as in forgejo/forgejo#3342 where the solution to configurable display of oauth sources is to simply specify a default login, which is likely easier to implement).
New feature requests are not ready to implement: They are investigated first, similar to how new bugs are triaged. This can either happen inside forgejo/forgejo (because I suspect that most feature requests will land there anyway) together with a label, or we create a separate place.
A research and design process is established: Similar to forgejo/forgejo#4119, we start an actual process for changes in Forgejo. This will put an additional step between user needs and development, but since the backlog of feature requests is growing anyway, I don't think this is an issue. On the contrary: Merging feature requests can reduce the backlog of open feature requests, and only the most valuable changes are implemented.
Fast-tracking in some cases? I'm wondering: Sometimes users have a very precise need, e.g. "integrate service X". I'm not yet sure if we should apply the process to every feature request, but I tend to say "yes". When a user requests an integration or very specific feature, we might still come up with a better idea. For example, when someone asks to integrate service X to do Z and someone else asks to integrate Y to do Z, we might do research and only implement one of both services to do Z, because it also covers the needs for the other user.
Separate or not to separate?: I'm very open to creating a Forgejo repository (= issue tracker) to focus on the design work if this is the general wish, but I'm also happy to continue working with labels. Since Forgejo doesn't make it easy to move issues, and since users are likely to continue generating feature requests in the forgejo repository, keeping them in one place sounds like the easier option. But ... (see next)
Dealing with the open backlog? We can discuss how to deal with the backlog of existing feature requests. One option would be to treat issues with the enhancement label as "not ready" until they receive a corresponding classification by the User Research or UI team (since the latter also works closely on UX matters right now).
An alternative that might be appealing for developers who don't like the growing pile of open issues would be to
- go through them
- keep those with unquestionable gain
- close the rest
- encourage users to describe their problem in a new way
This lifts some aspects out of https://codeberg.org/forgejo/discussions/issues/156 that deserve more attention IMHO, and it addresses some recent discussions about where to put design discussions[^1][^2].
[^1]: https://codeberg.org/forgejo/forgejo/issues/4140#issuecomment-2028138
[^2]: https://codeberg.org/forgejo/forgejo/issues/4141#issuecomment-2028135
Contrary to @earl-warren 's request, I do not think that the forgejo/discussions repository is an adequate place for design discussions. It's rather used for meta discussions about the project itself, long-term strategies and workflow adjustments. However, **design decisions are a part of the development workflow**. They are not code, but they are actual work that should live together with the rest of the development.
However, I acknowledge the need for developers to find tasks that are actionable and ready to be picked up. That's why I propose the **following new workflow**, especially for feature requests:
- bugs get the bug/confirmed label assigned which marks them as ready to start hacking, no adjustment to the bug workflow seems necessary to me
- feature requests by end users follow the new cycle which was briefly discussed in https://codeberg.org/forgejo/discussions/issues/156
- at the end, these feature requests are turned into actionable issues and labelled as such for development.
### How the workflow can look in detail
Users are encouraged to **describe the problem rather than the solution:**: Feature requests typically consist of the description of a solution. However, often there are multiple solutions to one problem, and there are multiple problems with one solution. https://codeberg.org/forgejo/forgejo/issues/4119 is one such example, it is the combination of three different feature requests that all demanded different solutions for the same problem ("long scrolling to the README" in this example).
Often, feature requests want one more button to configure X, which is one step closer to hell (more settings, more logic, more edge cases, more complexity, more to learn for new users etc). And sometimes, the requested behaviour would be the best for everyone (as in https://codeberg.org/forgejo/forgejo/issues/3342 where the solution to configurable display of oauth sources is to simply specify a default login, which is likely easier to implement).
**New feature requests are not ready to implement**: They are investigated first, similar to how new bugs are triaged. This can either happen inside forgejo/forgejo (because I suspect that most feature requests will land there anyway) together with a label, or we create a separate place.
**A research and design process is established**: Similar to https://codeberg.org/forgejo/forgejo/issues/4119, we start an actual process for changes in Forgejo. This will put an additional step between user needs and development, but since the **backlog of feature requests is growing** anyway, I don't think this is an issue. On the contrary: **Merging feature requests can reduce** the backlog of open feature requests, and only the most valuable changes are implemented.
**Fast-tracking in some cases?** I'm wondering: Sometimes users have a very precise need, e.g. "integrate service X". I'm not yet sure if we should apply the process to every feature request, but I tend to say "yes". When a user requests an integration or very specific feature, we might still come up with a better idea. For example, when someone asks to integrate service X to do Z and someone else asks to integrate Y to do Z, we might do research and only implement one of both services to do Z, because it also covers the needs for the other user.
**Separate or not to separate?**: I'm very open to creating a Forgejo repository (= issue tracker) to focus on the design work if this is the general wish, but I'm also happy to continue working with labels. Since Forgejo doesn't make it easy to move issues, and since users are likely to continue generating feature requests in the forgejo repository, keeping them in one place sounds like the easier option. But ... (see next)
**Dealing with the open backlog?** We can discuss how to deal with the backlog of existing feature requests. One option would be to treat issues with the enhancement label as "not ready" until they receive a corresponding classification by the User Research or UI team (since the latter also works closely on UX matters right now).
An alternative that might be appealing for developers who don't like the growing pile of open issues would be to
- go through them
- keep those with unquestionable gain
- close the rest
- encourage users to describe their problem in a new way