Add 9 more answers to user stories

Signed-off-by: Akashdeep Dhar <akashdeep.dhar@gmail.com>
This commit is contained in:
Akashdeep Dhar 2024-09-17 11:43:14 +05:30
parent 0ebeeca52a
commit e9e255cc7d
2 changed files with 40 additions and 38 deletions

View file

@ -6,6 +6,8 @@ Forgejo
User stories
------------
Following is the investigation on Forgejo based on the user stories collected.
1. **As a package maintainer, I'd like to be able to run my own CI jobs on distgit PRs.**
While added as recently as 2023-02-27, Forgejo supports an integrated continuous integration system called Actions (https://forgejo.org/2023-02-27-forgejo-actions/). For specific purposes where a custom environment is required, even custom Forgejo runners (https://code.forgejo.org/forgejo/runner) can be associated with a certain project repository or project namespace.
@ -87,7 +89,7 @@ User stories
Please check the answer to the user story #3.
25. **As a package maintainer, I'd like existing STI and TMT CI tests to continue working while also providing a simpler, more familiar YAML-based format.**
As mentioned in cell F2, as long as the Forgejo Actions is configured properly to support STI and TMT CI tests, they should work fine on Forgejo like they do on Pagure - both in environments provided within the managed Forgejo infrastructure and in custom Forgejo runners introduced externally.
As mentioned in the answer to the user story #1, as long as the Forgejo Actions is configured properly to support STI and TMT CI tests, they should work fine on Forgejo like they do on Pagure - both in environments provided within the managed Forgejo infrastructure and in custom Forgejo runners introduced externally.
26. **As a package maintainer, I want to be able to prevent direct push to git, and using merge requests process only.**
Please check the answer to the user story #3.
@ -171,13 +173,13 @@ User stories
Please check the answer to the user story #7.
51. **As a consumer of the fedora messaging bus, I want to be able to continue to receive messages in a JSON format on events.**
With the introduction of the `Webhook To Fedora Messaging <https://github.com/fedora-infra/webhook-to-fedora-messaging/>`_ project, `webhooks <https://forgejo.org/docs/v1.19/user/webhooks/>`_ on the platform can be integrated with the service to stay posted about the activities at the forge end.
With the introduction of the Webhook To Fedora Messaging (https://github.com/fedora-infra/webhook-to-fedora-messaging/ project, webhooks (https://forgejo.org/docs/v1.19/user/webhooks/) on the platform can be integrated with the service to stay posted about the activities at the forge end.
52. **As a developer/release engineer/QA/contributor, we need the new dist-git service to have hooks to attach new and existing CI pipelines.**
Forgejo supports `webhooks <https://forgejo.org/docs/v1.19/user/webhooks/>`_ so as long as we are able to leverage the features with our existing CI pipelines - the service should be able to function similarly to the existing Pagure based git forge.
Forgejo supports webhooks (https://forgejo.org/docs/v1.19/user/webhooks/) so as long as we are able to leverage the features with our existing CI pipelines - the service should be able to function similarly to the existing Pagure based git forge.
53. **As a contributor, I need to be able to login using my Fedora account.**
Forgejo supports `FreeIPA <https://forgejo.org/docs/v1.19/user/authentication/#freeipa>`_ and hence, plugging in support for authentication using Fedora Account System account should be possible. This has been implemented to various degrees of success in the `testing deployment <https://forgejoroute-communishift-forgejo.apps.fedora.cj14.p1.openshiftapps.com/>`_ of Forgejo and hence, the same knowledge can be made use of in this implementation. This extends to group based access controls as well which means that Fedora Account System groups can be used to map access levels at the Forgejo end.
Forgejo supports FreeIPA (https://forgejo.org/docs/v1.19/user/authentication/#freeipa) and hence, plugging in support for authentication using Fedora Account System account should be possible. This has been implemented to various degrees of success in the testing deployment (https://forgejoroute-communishift-forgejo.apps.fedora.cj14.p1.openshiftapps.com/) of Forgejo and hence, the same knowledge can be made use of in this implementation. This extends to group based access controls as well which means that Fedora Account System groups can be used to map access levels at the Forgejo end.
54. **As a developer, I would like there to be a separate staging and production instance of dist-git so I can test my changes before pushing them.**
Being a free and open source software, we should be able to deploy multiple instances of Forgejo with each instance having its own purpose and authentication backend without any issues.
@ -186,22 +188,22 @@ User stories
Please check the answer to the user story #34.
56. **As a maintainer, I would like an easy-to-use interface to make suggestions on individual code blocks and suggest changes that the submitter can simply apply.**
While I suggest rebasing and applying changes based on the review comments for a cleaner Git history, it is `technically impossible <https://forgejo.org/docs/latest/user/pull-requests-and-git-flow/>`_ for collaborators to apply the suggest changes with a click of a button on GitLab.
While I suggest rebasing and applying changes based on the review comments for a cleaner Git history, it is technically impossible (https://forgejo.org/docs/latest/user/pull-requests-and-git-flow/) for collaborators to apply the suggest changes with a click of a button on GitLab.
57. **As a package maintainer, I would like to be able to automatically transfer issues between packages (for example from ansible -> ansible-core).**
This is unfortunately impossible in Forgejo and in order to pull off something like this, one would have to make use of their `REST API <https://forgejo.org/docs/latest/user/api-usage/>`_ to delete the issue ticket from the source namespace and create a new instance of it at the destination namespace.
This is unfortunately impossible in Forgejo and in order to pull off something like this, one would have to make use of their REST API (https://forgejo.org/docs/latest/user/api-usage/) to delete the issue ticket from the source namespace and create a new instance of it at the destination namespace.
58. **A package maintainer, I would like a push hook to block pushes to retired or EOL branches**
While a relevant documentation could not be found on the matter, as Forgejo is based on Git version control system - it should be theoretically possible to conditionalize the rejection of a pushed commit whenever they are made against a branch that is slated to be retired or EOLed. The absence of a documentation means that more efforts has to be put into it.
59. **As a package maintainer, I want to be able to grant access to specific branches, or branches matching a pattern, to individual users. In pagure this is referred to as collaborator access.**
It is possible to configure the access levels per branch dependent on certain branch names or branch names matching a certain pattern in Forgejo. The feature is called "`Branch and tag protection <https://forgejo.org/docs/v1.19/user/protection/>`_".
It is possible to configure the access levels per branch dependent on certain branch names or branch names matching a certain pattern in Forgejo. The feature is called "Branch and tag protection (https://forgejo.org/docs/v1.19/user/protection/)".
60. **As a policy enforcer, I want to be able to "orphan" packages that are not mine.**
Do you want to archive the source repository to signify the "orphaning" of a package? It is possible on Forgejo on all projects. Also, it has to be the owner of the `repository <https://forgejo.org/docs/v1.19/user/repo-permissions/>`_ who can archive a said repository.
Do you want to archive the source repository to signify the "orphaning" of a package? It is possible on Forgejo on all projects. Also, it has to be the owner of the repository (https://forgejo.org/docs/v1.19/user/repo-permissions/) who can archive a said repository.
61. **As a developer, I want to be query packages by their maintainers and vice versa.**
Packages (or in this case, their representation as project repositories) have an ability of managing `collaborators <https://docs.codeberg.org/collaborating/invite-collaborators/>`_ associated with the project. Checking the packages associated with maintainers and checking maintainers associated with packages should be possible.
Packages (or in this case, their representation as project repositories) have an ability of managing collaborators (https://docs.codeberg.org/collaborating/invite-collaborators/) associated with the project. Checking the packages associated with maintainers and checking maintainers associated with packages should be possible.
62. **As a packager, I need the new forge to support the orphaned packages process: a maintainer should be able to automatically orphan a package they own and another packager should be able to take ownership through a self-service interface.**
Extending the answer to the user story #60, a workflow can established around the action of "archiving" a project repository - that in turn leads to automatically opening up an issue ticket that reports the "orphanment" (can we please use the word "abandonment" here?) of a package on a central issue tracker.
@ -216,7 +218,7 @@ User stories
Please check the answer to the user story #8.
66. **As a documentation contributor, I would love to try out new Git forge test systems. I'm agnostic to tools, so I believe I can spend time on UX and docs workflow (build, preview, issue tracking, GitHUb Action-like features and so on).**
Forgejo's UX feels a lot more polished as compared to GitLab for those who are agnostic to tools. It is crucial to note that Forgejo has recently added `accessibility <https://codeberg.org/forgejo/meta/pulls/179>`_ as one of Forgejo project's values in an interest to develop a git forge with accessibility concerns.
Forgejo's UX feels a lot more polished as compared to GitLab for those who are agnostic to tools. It is crucial to note that Forgejo has recently added accessibility (https://codeberg.org/forgejo/meta/pulls/179) as one of Forgejo project's values in an interest to develop a git forge with accessibility concerns.
67. **As a member of the CDT team I need to be able to get notified automatically when someone opens a design request. (An email will be sent to a mailing list).**
Please check the answer to the user story #3 and user story #12.
@ -231,28 +233,28 @@ User stories
Using GitLab CI, the replacement git forge can be configured to kickoff **mock builds** whenever pull requests are created and **actual builds** whenever pushes are made against the primary branch of the repository. This should facilitate packagers to immediately head over to Bodhi to schedule a new release after a pull request was merged.
71. **As a packager, I'd like the option to have packages submitted as an erratum automatically when a merge request is merged. Ideally, this would be supplemental to the above "draft builds", just submitting that exact build to errata.**
UNRESOLVED
Please check the answer to the user story #70.
72. **As a packager, I'd like to be able to provide my own test pipelines for merge requests on individual projects (supplemental to any standard tests provided and/or required by Fedora).**
UNRESOLVED
One can declare custom workflow configuration on Forgejo Actions (https://forgejo.org/docs/v1.20/user/actions/) in addition to the standard tests and builds (draft and actual) facilitated by Fedora Project. While still in alpha, self proposed Forgejo Runners (https://code.forgejo.org/forgejo/runner) is expected to be able to ensure that any testing that has sensitive information or requires specialized resources are addressed suitably - when it becomes production ready.
73. **As a member of Fedora Quality, I need to be able to transparently move any ticket opened by any user for one package to another package and preserve history.**
UNRESOLVED
Please check the answer to the user story #57.
74. **As a member of Fedora Quality, I would like to be able to define ticket submission form templates with custom fields. And create input validations and query all opened tickets based on those field definitions.**
UNRESOLVED
Extending the answer to the user story #44 and user story #47, it is possible for Forgejo to implement templates for ticket submissions but cannot show already opened issue tickets with the similar verbiage to validate if the potential submission has already been proposed. The proposer needs to search for issue ticket by themselves before opening one.
75. **As a member of Fedora Quality, I need to be able to specify "need_info" on a specific ticket. This function should regularly ping (email/matrix or any other channels) the specified user that I am requesting information from.**
UNRESOLVED
It is recommended to use the assignee section of a certain issue ticket and/or to tag the people involved in the action using their username. While this might not facilitate pings to be made to a certain user at equal intervals of time, it can very well be used to keep them posted about the updates made to the issue ticket and to inform them about their action items.
76. **As a policy enforcer, I need to be able to get all the information about a ticket/issue/bug from a Python script in a structured way.**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
77. **As a policy enforcer, I need to be able to open/modify/comment on a ticket/issue/bug from a Python script (including all the possible metadata).**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
78. **As a policy designer, I need to be able to add custom and structured metadata to a ticket/issue/bug, in the form of key=value pairs. I need to be able to set rules for individual keys (such as which values are valid).**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
79. **As a package maintainer, I want to have syntax highlighting for RPM spec files in the git forge web interface. Currently Pagure and Forgejo have this, but GitLab does not.**
UNRESOLVED
Good point! We can ask the GitLab folks nicely to add that I suppose.

View file

@ -181,13 +181,13 @@ Following is the investigation on GitLab based on the user stories collected.
Please check the answer to the user story #7.
51. **As a consumer of the fedora messaging bus, I want to be able to continue to receive messages in a JSON format on events.**
With the introduction of the `Webhook To Fedora Messaging <https://github.com/fedora-infra/webhook-to-fedora-messaging/>`_ project, `webhooks <https://docs.gitlab.com/ee/user/project/integrations/webhooks.html>`_ on the platform can be integrated with the service to stay posted about the activities at the forge end.
With the introduction of the Webhook To Fedora Messaging (https://github.com/fedora-infra/webhook-to-fedora-messaging/) project, webhooks (https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) on the platform can be integrated with the service to stay posted about the activities at the forge end.
52. **As a developer/release engineer/QA/contributor, we need the new dist-git service to have hooks to attach new and existing CI pipelines.**
GitLab supports `webhooks <https://docs.gitlab.com/ee/user/project/integrations/webhooks.html>`_ so as long as we are able to leverage the features with our existing CI pipelines - the service should be able to function similarly to the existing Pagure based git forge.
GitLab supports webhooks (https://docs.gitlab.com/ee/user/project/integrations/webhooks.html) so as long as we are able to leverage the features with our existing CI pipelines - the service should be able to function similarly to the existing Pagure based git forge.
53. **As a contributor, I need to be able to login using my Fedora account.**
GitLab supports `SAML <https://docs.gitlab.com/ee/integration/saml.html>`_ and hence, plugging in support for authentication using a Fedora Account System account should be possible. This has been implemented to various degrees of success in the ``fedora`` namespace of the GitLab.com offering and hence, the same knowledge can be made use of in this implementation. This extends to group based access controls as well which means that Fedora Account System groups can be used to map access levels at the GitLab end.
GitLab supports SAML (https://docs.gitlab.com/ee/integration/saml.html) and hence, plugging in support for authentication using a Fedora Account System account should be possible. This has been implemented to various degrees of success in the fedora namespace of the GitLab.com offering and hence, the same knowledge can be made use of in this implementation. This extends to group based access controls as well which means that Fedora Account System groups can be used to map access levels at the GitLab end.
54. **As a developer, I would like there to be a separate staging and production instance of dist-git so I can test my changes before pushing them.**
Being a free and open source software, we should be able to deploy multiple instances of GitLab with each instance having its own purpose and authentication backend without any issues.
@ -196,22 +196,22 @@ Following is the investigation on GitLab based on the user stories collected.
Please check the answer to the user story #34.
56. **As a maintainer, I would like an easy-to-use interface to make suggestions on individual code blocks and suggest changes that the submitter can simply apply.**
While I suggest rebasing and applying changes based on the review comments for a cleaner Git history, it is `technically possible <https://docs.gitlab.com/ee/user/project/merge_requests/reviews/>`_ for collaborators to apply the suggest changes with a click of a button on GitLab.
While I suggest rebasing and applying changes based on the review comments for a cleaner Git history, it is technically possible (https://docs.gitlab.com/ee/user/project/merge_requests/reviews/) for collaborators to apply the suggest changes with a click of a button on GitLab.
57. **As a package maintainer, I would like to be able to automatically transfer issues between packages (for example from ansible -> ansible-core).**
This is fortunately possible in GitLab in a `feature <https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#bulk-move-issues>`_, that is blissfully unrestricted across various tiers of subscription. The transfers work without the restriction of the repositories having to belong under the same namespace.
This is fortunately possible in GitLab in a feature (https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#bulk-move-issues), that is blissfully unrestricted across various tiers of subscription. The transfers work without the restriction of the repositories having to belong under the same namespace.
58. **A package maintainer, I would like a push hook to block pushes to retired or EOL branches**
GitLab supports `Git Server hooks <https://docs.gitlab.com/ee/administration/server_hooks.html>`_ which can be used to conditionalize the rejection of a pushed commit whenever they are made against a branch that is slated to be retired or EOLed. The presence of a documentation should make the process relatively convenient.
GitLab supports Git Server hooks (https://docs.gitlab.com/ee/administration/server_hooks.html) which can be used to conditionalize the rejection of a pushed commit whenever they are made against a branch that is slated to be retired or EOLed. The presence of a documentation should make the process relatively convenient.
59. **As a package maintainer, I want to be able to grant access to specific branches, or branches matching a pattern, to individual users. In pagure this is referred to as collaborator access.**
It is possible to configure the access levels per branch dependent on certain branch names or branch names matching a certain pattern in GitLab. The feature is called "`Protected Branches <https://docs.gitlab.com/ee/user/project/repository/branches/protected.html>`_" and is blissfully unrestricted across various tiers of subscription.
It is possible to configure the access levels per branch dependent on certain branch names or branch names matching a certain pattern in GitLab. The feature is called "Protected Branches (https://docs.gitlab.com/ee/user/project/repository/branches/protected.html)" and is blissfully unrestricted across various tiers of subscription.
60. **As a policy enforcer, I want to be able to "orphan" packages that are not mine.**
Do you want to archive the source repository to signify the "orphaning" of a package? It is `possible <https://docs.gitlab.com/ee/user/project/working_with_projects.html#archive-a-project>`_ on GitLab on all projects. Also, if a user has elevated privileges to a `namespace <https://docs.gitlab.com/ee/user/permissions.html>`_ under which the said repository exists - they can do it even though they do not own the said repository.
Do you want to archive the source repository to signify the "orphaning" of a package? It is possible (https://docs.gitlab.com/ee/user/project/working_with_projects.html#archive-a-project) on GitLab on all projects. Also, if a user has elevated privileges to a namespace (https://docs.gitlab.com/ee/user/permissions.html) under which the said repository exists - they can do it even though they do not own the said repository.
61. **As a developer, I want to be query packages by their maintainers and vice versa.**
Packages (or in this case, their representation as project repositories) have an ability of managing `members <https://docs.gitlab.com/ee/user/project/members/>`_ associated with the project. Checking the packages associated with maintainers and checking maintainers associated with packages should be possible.
Packages (or in this case, their representation as project repositories) have an ability of managing members (https://docs.gitlab.com/ee/user/project/members/) associated with the project. Checking the packages associated with maintainers and checking maintainers associated with packages should be possible.
62. **As a packager, I need the new forge to support the orphaned packages process: a maintainer should be able to automatically orphan a package they own and another packager should be able to take ownership through a self-service interface.**
Extending the answer to the user story #60, a workflow can established around the action of "archiving" a project repository - that in turn leads to automatically opening up an issue ticket that reports the "orphanment" (can we please use the word "abandonment" here?) of a package on a central issue tracker.
@ -226,7 +226,7 @@ Following is the investigation on GitLab based on the user stories collected.
Please check the answer to the user story #8.
66. **As a documentation contributor, I would love to try out new Git forge test systems. I'm agnostic to tools, so I believe I can spend time on UX and docs workflow (build, preview, issue tracking, GitHUb Action-like features and so on).**
GitLab's UX feels a lot more polished as compared to Forgejo for those who are agnostic to tools. It is crucial to note that GitLab provides an `accessible <https://docs.gitlab.com/ee/development/fe_guide/accessibility/>`_ UX for the convenience of users using screen readers and keyboard-only functionality.
GitLab's UX feels a lot more polished as compared to Forgejo for those who are agnostic to tools. It is crucial to note that GitLab provides an accessible (https://docs.gitlab.com/ee/development/fe_guide/accessibility/) UX for the convenience of users using screen readers and keyboard-only functionality.
67. **As a member of the CDT team I need to be able to get notified automatically when someone opens a design request. (An email will be sent to a mailing list).**
Please check the answer to the user story #3 and user story #12.
@ -241,28 +241,28 @@ Following is the investigation on GitLab based on the user stories collected.
Using GitLab CI, the replacement git forge can be configured to kickoff **mock builds** whenever pull requests are created and **actual builds** whenever pushes are made against the primary branch of the repository. This should facilitate packagers to immediately head over to Bodhi to schedule a new release after a pull request was merged.
71. **As a packager, I'd like the option to have packages submitted as an erratum automatically when a merge request is merged. Ideally, this would be supplemental to the above "draft builds", just submitting that exact build to errata.**
UNRESOLVED
Please check the answer to the user story #70.
72. **As a packager, I'd like to be able to provide my own test pipelines for merge requests on individual projects (supplemental to any standard tests provided and/or required by Fedora).**
UNRESOLVED
One can declare custom workflow configuration on GitLab CI (https://docs.gitlab.com/ee/ci/) in addition to the standard tests and builds (draft and actual) facilitated by Fedora Project. Furthermore, self proposed GitLab Runners (https://docs.gitlab.com/runner/) can also be registered to a certain project to ensure that any testing that has sensitive information or requires specialized resources are addressed suitably.
73. **As a member of Fedora Quality, I need to be able to transparently move any ticket opened by any user for one package to another package and preserve history.**
UNRESOLVED
Please check the answer to the user story #57.
74. **As a member of Fedora Quality, I would like to be able to define ticket submission form templates with custom fields. And create input validations and query all opened tickets based on those field definitions.**
UNRESOLVED
Extending the answer to the user story #44 and user story #47, it is possible for GitLab to implement templates for ticket submissions and show already opened issue tickets with the similar verbiage to validate if the potential submission has already been proposed. The proposer needs not search for issue ticket by themselves before opening one.
75. **As a member of Fedora Quality, I need to be able to specify "need_info" on a specific ticket. This function should regularly ping (email/matrix or any other channels) the specified user that I am requesting information from.**
UNRESOLVED
It is recommended to use the assignee section of a certain issue ticket and/or to tag the people involved in the action using their username. While this might not facilitate pings to be made to a certain user at equal intervals of time, it can very well be used to keep them posted about the updates made to the issue ticket and to inform them about their action items.
76. **As a policy enforcer, I need to be able to get all the information about a ticket/issue/bug from a Python script in a structured way.**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
77. **As a policy enforcer, I need to be able to open/modify/comment on a ticket/issue/bug from a Python script (including all the possible metadata).**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
78. **As a policy designer, I need to be able to add custom and structured metadata to a ticket/issue/bug, in the form of key=value pairs. I need to be able to set rules for individual keys (such as which values are valid).**
UNRESOLVED
Please check the answer to the user story #8 and user story #9.
79. **As a package maintainer, I want to have syntax highlighting for RPM spec files in the git forge web interface. Currently Pagure and Forgejo have this, but GitLab does not.**
UNRESOLVED
Good point! We can ask the GitLab folks nicely to add that I suppose.