TL;DR: Use only one branch for Forgejo development and no longer rebase on top of Gitea. Use it as an inspiration instead, taking only the good parts.
The Forgejo development workflow could be simplified to be a single development branch instead of multiple feature branches. Instead of being rebased on top of Gitea, it would become independent and cherry-pick from the Gitea codebase until the divergences are too great and that becomes impossible.
It could be called a hard fork but it really is the last step in a process that is already well under way (if not done) for other parts in Forgejo: documentation, releases, runner, test suites... A rough estimate would be that Forgejo is now half hard forked from Gitea and that would complete the other half.
Six months ago it was sensible for Forgejo to evolve on top of Gitea but a lot has happened since and it shifted the balance:
- Gitea merges very large untested code (feature or refactor) that have been the cause of major regressions with high impact on users (for the year 2023 alone see the blog post about the storage regressions for an example or the pull request that refactored the PAT in v1.20 which had such unspecified side effects that the only sound advice for security was to re-create all tokens and the pull request that introduced actions, a 7000+ lines PR with almost no test coverage).
- Forgejo grew to have more contributors
- Forgejo completed the groundwork required of a new software project (security, releases, infrastructure)
- Gitea turned Open Core and will keep adding proprietary features
- Gitea is engaged in shady security behavior
This simpler development workflow would have benefits:
- more familiar to the contributors: a single development branch instead of multiple feature branches
- simpler fixes & features implementation because they do not need to be concerned by future conflicts & refactors in Gitea
- the weekly cleanup would be more about choosing the good parts to use from Gitea and other dependencies and less about conflict resolution
- more stability as most changes merged in Forgejo are tested
- improved documentation on existing features that are currently hidden
The downsides are that:
- bug fixes found in Gitea will gradually become impossible to cherry-pick. They will have to be ported to Forgejo. The same goes for new features
- Forgejo will no longer be a drop-in replacement for Gitea
What is your opinion as someone actively involved in the development of Forgejo? It would directly impact your work. Do you think the benefits are greater than the downsides? Do you think it is a good step to take to improve Forgejo growth? Do you have reservations?
TL;DR: Use only one branch for Forgejo development and no longer rebase on top of Gitea. Use it as an inspiration instead, taking only the good parts.
The [Forgejo development workflow](https://forgejo.org/docs/v1.21/developer/workflow/) could be simplified to be a single development branch instead of multiple feature branches. Instead of being rebased on top of Gitea, it would become independent and cherry-pick from the Gitea codebase until the divergences are too great and that becomes impossible.
It could be called a **hard fork** but it really is the last step in a process that is already well under way (if not done) for other parts in Forgejo: documentation, releases, runner, test suites... A rough estimate would be that Forgejo is now half hard forked from Gitea and that would complete the other half.
Six months ago it was sensible for Forgejo to evolve on top of Gitea but a lot has happened since and it shifted the balance:
* **Gitea merges very large untested code (feature or refactor) that have been the cause of major regressions with high impact on users** (for the year 2023 alone see [the blog post about the storage regressions](https://forgejo.org/2023-09-monthly-update/#fixing-s3-configuration-bugs-and-regressions) for an example or the [pull request that refactored the PAT in v1.20](https://github.com/go-gitea/gitea/pull/24767) which had such unspecified side effects that the only sound advice for security was to re-create all tokens and [the pull request that introduced actions](https://github.com/go-gitea/gitea/pull/21937/files), a 7000+ lines PR with almost no test coverage).
* Forgejo grew to have more contributors
* Forgejo completed the groundwork required of a new software project (security, releases, infrastructure)
* Gitea turned Open Core and will keep adding proprietary features
* Gitea is engaged in shady security behavior
This simpler development workflow would have benefits:
* more familiar to the contributors: a single development branch instead of multiple feature branches
* simpler fixes & features implementation because they do not need to be concerned by future conflicts & refactors in Gitea
* the weekly cleanup would be more about choosing the good parts to use from Gitea and other dependencies and less about conflict resolution
* more stability as most changes merged in Forgejo are tested
* improved documentation on existing features that are currently hidden
The downsides are that:
* bug fixes found in Gitea will gradually become impossible to cherry-pick. They will have to be ported to Forgejo. The same goes for new features
* Forgejo will no longer be a drop-in replacement for Gitea
**What is your opinion as someone actively involved in the development of Forgejo?** It would directly impact your work. Do you think the benefits are greater than the downsides? Do you think it is a good step to take to improve Forgejo growth? Do you have reservations?