Skip to content
This repository has been archived by the owner on Jan 5, 2024. It is now read-only.

Splitting this repo into one repo for each action! #141

Closed
Tracked by #89
andreasabel opened this issue Dec 22, 2022 · 34 comments
Closed
Tracked by #89

Splitting this repo into one repo for each action! #141

andreasabel opened this issue Dec 22, 2022 · 34 comments
Assignees
Labels
re: marketplace Conerning publication on GitHub Marketplace

Comments

@andreasabel
Copy link
Member

andreasabel commented Dec 22, 2022

It is not customary to host several github actions in one repo. The reason is simple to understand:
Versions of an action are identified by tags of the form v1.2.3, and such tags apply to the whole repo.
So basically, bundling several actions into one repo means bundling them into a single versioning scheme.

Putting several actions into one repo explicitly violates the github marketplace policy written at https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace (retrieved 2022-12-22):

Each repository must contain a single action.

So the suggestion is to split this repo into 3, one for each action.

If stuff should reside in the haskell organization

New names for the actions:

  • haskell/setup-action (or maybe just haskell/setup?)
  • haskell/hlint-setup
  • haskell/hlint-run

Would be good to get co-ownership of haskell then.

If stuff move to organization haskell-actions

New names for the actions:

  • haskell-actions/setup or haskell-actions/haskell-setup
  • haskell-actions/hlint-setup
  • haskell-actions/hlint-run

One would have to negotiate co-ownership of the haskell-actions orga with @AlexeyRaga then.

See also:

Prior art (similar concerns than here):

@cartazio
Copy link

this sounds like a nice idea to me, what would the suggested workflow for migrating basic build test CI after this change?

@mihaimaruseac
Copy link
Contributor

I think this repo could have one final release on the split then get archived with a note to move to the corresponding split repos?

It's how I got to this repo from setup-haskell, saw the note that development was moved here

@andreasabel
Copy link
Member Author

To close this repo down, we could release a new major version here that deactivates the ordinary function of haskell/actions/setup (1) and instead errors out with a migration message.
Say, we have migrated the current setup action to haskell/setup-action (2), we could release a v3.0.0 in both places, which may not have new functionality at (2), but "destroys" (1). This would force folks moving to the new major version to also migrate from (1) to (2). (It would be great if dependabot supported such moves.)

@Kleidukos
Copy link
Member

I'm all for splitting actions into multiple repos if that can help with the versioning. Could we also bring https://github.com/haskell-ci back into the fold?

@liskin
Copy link

liskin commented Feb 14, 2023

I'm all for splitting actions into multiple repos if that can help with the versioning. Could we also bring https://github.com/haskell-ci back into the fold?

haskell-ci is not a GitHub Action, though, it's a GitHub Actions workflow generator. Why unify its versioning with an Action (that it doesn't even use)?

@Kleidukos
Copy link
Member

Kleidukos commented Feb 14, 2023

@liskin I was unclear, sorry. https://github.com/haskell-ci is a separate organisation that further splits the ACLs, responsibilities and accountability of the our CI tooling. This is the same as https://github.com/haskell-actions btw. We should aim at reducing the surface for collaboration and contribution for this kind of strategic tooling.

@andreasabel
Copy link
Member Author

andreasabel commented Feb 14, 2023

@haskell-ci is a separate organisation that further splits the ACLs, responsibilities and accountability of the our CI tooling.

@haskell-CI is a CI generator for multiple CI platforms (shell, travis, github) so maybe it does not need to get unified with an organization caring just about github actions. (E.g., it is thinkable that @haskell-CI will also support gitlab at some point.)

@AlexeyRaga: Would you open up the haskell-actions organization for co-ownership by other stakeholders, e.g. the maintainers of this setup action? (I thought I asked you before, but maybe only implicitly so, can't find the record now.)

@Kleidukos
Copy link
Member

Kleidukos commented Feb 14, 2023

@haskell-ci is a separate organisation that further splits the ACLs, responsibilities and accountability of the our CI tooling.

@haskell-CI is a CI generator for multiple CI platforms (shell, travis, github) so maybe it does not need to get unified with an organization caring just about github actions. (E.g., it is thinkable that @haskell-CI will also support gitlab at some point.)

@andreasabel I'm not sure I can see any benefit from splitting the tooling, and I definitely cannot see any benefit in separating the actions repositories from the @haskell organisation. I would love to be enlightened though.

It really feels super stereotypical to present "The state of the Haskell CI tooling" as being a collection of separate GitHub organisations with spread-out leadership and no unified way of managing evolution of the tools they host.

@cartazio
Copy link

cartazio commented Feb 14, 2023 via email

@Kleidukos
Copy link
Member

Kleidukos commented Feb 14, 2023

@cartazio and yet it sends the wrong message when these people are also stewards of the community and that these tools have the vocation to be promoted as the tool. Without any kind of structure that's how we end up with community standards that become unmaintained because the street cred of one person was enough for ecosystem-wide adoption but there wasn't any succession plan in place, so the bus factor was effectively of 1.

You cannot support effectively a community of hobbyists and professionals by just shrugging off the fact that there are three teams who develop the CI tools, 2 of which answering to no-one. This is just not sustainable with a community size such as ours.

@Kleidukos
Copy link
Member

Moreover, this will also deprive these different organisations that provide infrastructural services to the ecosystem from benefiting from the very large CI resources that our diplomatic link with GitHub has unlocked for the Haskell organisation.

@ulysses4ever
Copy link
Contributor

I'm sorry if I don't really follow the discussion here, and I don't have an opinion about splitting the action into several repos, but I do have one on Haskell-CI. I believe Haskell-CI should be brought as close to the action as possible for a simple reason: it improves visibility. Let me tell you: many beginners and even intermediate Haskell users can find the action but have no idea about Haskell-CI. Having it under the same organization would help with that even if a bit.

@ulysses4ever
Copy link
Contributor

Also, I'm for splitting into several repos under a separate organization, my reasoning: #228 (comment)

@Kleidukos
Copy link
Member

@ulysses4ever I understand the argument that it can be more practical to have a separate org for complexity management reasons, however we need to establish a very clear structure in terms of who is accountable to whom. If this is just an unofficial project, it means that we lose a bunch of trust in the tooling there because whoever is involved is free to do whatever they want, and as such haskell.org cannot recommend the GitHub Actions anymore.

Also we must have safeguard mechanisms in case there is a takeover or a series of burn-out that leaves this organisation without any responsive maintainer. The ACLs of this org cannot be an afterthought. :)

@cartazio
Copy link

cartazio commented Apr 3, 2023 via email

@Kleidukos
Copy link
Member

@cartazio Yes this must be a matter of fluency, I do not understand how the language used is coercive.

@cartazio
Copy link

cartazio commented Apr 3, 2023 via email

@ulysses4ever
Copy link
Contributor

Is it an inherently unsolvable task to create a credible body other than github.com/haskell? It's too bad then because the haskell github org is already overloaded imo. Let me get back to the example of Julia. It has a bunch of organizations for common things:

I am not hopeful for anything close to this much of organization (pun intended) but if we can't split out a single github organization that could be perceived as credible enough to be a goto for a common task, I think we need to have a conversation about why this is the case. And that conversion certainly shouldn't happen on this bugtracker. The governance of the haskell github org itself is a moot point that would benefit from some discussion as well (see haskell/meta#1).

@cartazio
Copy link

cartazio commented Apr 3, 2023 via email

@Kleidukos
Copy link
Member

@ulysses4ever

Is it an inherently unsolvable task to create a credible body other than github.com/haskell?

On the contrary, I laid out the things to keep in mind whilst doing so (and I'm sorry that I wasn't clear when I did):

  • Get recognition as an official organisation of the Haskell project:
    • Ensure proper communication about this (the Haskell.org committe can handle that aspect);
    • Get included in negotiations with partners when it comes to allocating resources destined for the Haskell project
  • Establish clear line of accountability:
    • ACLs that reflect the leadership of the Haskell project;
    • Enforcing the code of conduct of the project to ensure that participants are granted the same rights and duties as in other official spaces;

This is pretty standard stuff, as we don't want to end up in another haskell.org/haskell-lang.org situation.

@cartazio
Copy link

cartazio commented Apr 3, 2023 via email

@Kleidukos
Copy link
Member

No, I'm speaking about the dissolution of legitimacy and accountability.

@cartazio
Copy link

cartazio commented Apr 3, 2023 via email

@Bodigrim
Copy link

Bodigrim commented Apr 3, 2023

Could we also bring https://github.com/haskell-ci back into the fold?

AFAICT haskell-ci has never been a part of Haskell organization, so there is nothing to bring back. FWIW I also read this remark as coercive: "we" cannot (and should not) do anything with an independently maintained package against the will or without consent of respective maintainers, who were not invited to this discussion.

@Kleidukos
Copy link
Member

I see, much clearer when it's explained.

However I was not implying any kind of takeover or coercive action, and I'm sorry that it came out like that.

@andreasabel
Copy link
Member Author

I was hoping to get @haskell-actions on board (@AlexeyRaga). New attempt:

If @haskell-actions was opened to major stakeholders in CI, this would be the canonical home.
While we are discussing, I squatted @haskell-gh-actions as an alternative organization name, if it need be.
@haskell is still an option to me, but I am afraid it will get bloated by an unforeseeable number of actions, and we would need a clear naming discipline. I tend to haskell/actions-FOO now as this simulates haskell/actions/FOO most directly.

@andreasabel
Copy link
Member Author

andreasabel commented Apr 5, 2023

@newhoggy opened @haskell-actions to new actions and wider collaboration, so I guess this the way to go!

@Kleidukos wrote:

  • Get recognition as an official organisation of the Haskell project:

    • Ensure proper communication about this (the Haskell.org committe can handle that aspect);
    • Get included in negotiations with partners when it comes to allocating resources destined for the Haskell project
  • Establish clear line of accountability:

    • ACLs that reflect the leadership of the Haskell project;
    • Enforcing the code of conduct of the project to ensure that participants are granted the same rights and duties as in other official spaces;

This is pretty standard stuff

Where can I read about these procedures and principles?
Do you have links for (some of) these points?

@ulysses4ever
Copy link
Contributor

@andreasabel could this repo (haskell/actions) be archived? It's quite confusing to have two active repos for the same thing...

@andreasabel
Copy link
Member Author

andreasabel commented May 12, 2023

@andreasabel could this repo (haskell/actions) be archived? It's quite confusing to have two active repos for the same thing...

I agree, and eventually, yes.
However, I want to update the setup action with a deprecation warning once the move is complete. And then maybe start brownouts...
Note that you can still run an action from an archived repository, this is why some are still on actions/haskell-setup.

Also we need maintainer(s) for the hlint actions, and they should be moved as well.

@andreasabel andreasabel changed the title Splitting this repo into one repo for each action? Splitting this repo into one repo for each action! May 12, 2023
@andreasabel andreasabel pinned this issue May 12, 2023
@andreasabel andreasabel mentioned this issue May 12, 2023
3 tasks
@Kleidukos
Copy link
Member

Kleidukos commented May 12, 2023

@andreasabel Please hit me up when you want the Haskell.org committee to make announcements and publish deprecation warnings on our social media accounts 👍

@mihaimaruseac
Copy link
Contributor

I could maintain the hlint action(s) (and maybe create ones for hindent too)

@andreasabel
Copy link
Member Author

@mihaimaruseac Sorry, that comment slipped my attention.
Great to have you onboard! I added you to @haskell-actions where you can recreate these actions.

I extracted the setup action in a way that preserved the history, using git-filter-repo, see also https://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository. Then I git-moved everything from setup/ to the root in haskell-actions/setup@6459b35 and then made a commit replacing /setup/ by / (and similar) in the CI workflow: haskell-actions/setup@d98a6fb

@mihaimaruseac
Copy link
Contributor

Sorry @andreasabel , now I missed the comment myself. This is great!

@mihaimaruseac
Copy link
Contributor

The hlint actions are moved now. Long comment at #301 (comment)

This can be closed now, I think?

@andreasabel andreasabel unpinned this issue Oct 2, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
re: marketplace Conerning publication on GitHub Marketplace
Projects
None yet
Development

No branches or pull requests

7 participants