Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Future home/support for Shadow? #908

Closed
johnrengelman opened this issue Feb 25, 2024 · 20 comments
Closed

Future home/support for Shadow? #908

johnrengelman opened this issue Feb 25, 2024 · 20 comments

Comments

@johnrengelman
Copy link
Collaborator

johnrengelman commented Feb 25, 2024

This project started 12 years ago (eb773b1) as a way for me to address CI/CD tooling for developer teams when I was consulting. It has had a long run and I'm glad that the community has enjoyed the capabilities that it brings.
But as many of you have noticed, I have not had as much time to manage this project over the last few years. There's a few big points that I'd like to call out:

  • I believe that shadow is feature complete and any additional capabilities should be added as extensions or wrappers to Shadow. I could see some future development to make Shadow more generic with plugins to enable this, but IMO, shadow shouldn't be bloated with a bunch of different features.
  • Shadows place in the ecosystem is directly impacted by the more rapid development and releases in both Java and Gradle and so this project has become mostly responding to those changes...particularly Gradle changes since Shadow relies on some internal APIs of Gradle.
  • There is an opportunity to influence the Gradle team to expose more public API or structures that would make Shadow simpler, but that will require some significant time investment to work through their processes.
  • Over the last decade my career trajectory has changed sufficiently that I can't reasonably argue that working on Shadow is related to my job, so that puts it has a night/weekend hobby where I'd prefer to dedicate more time to my family.

With all that said, it's time for Shadow to find either a new home or a new set of maintainers that I can turn the keys over to. @Goooler has been doing a wonderful job lately and is supporting users with their fork. I see a few options that are viable:

  1. Keep the plugin here and add additional maintainers that can commit and release
  2. Move to @Goooler's fork and deprecate this plugin
  3. Identify a foundation/community model that would take the plugin with multiple maintainers (I bring this up in case there is strong feeling to get individual's names out of the plugin id).

Please feel free to share your thoughts. I'd like to get a consensus and make a decision soon.

@johnrengelman johnrengelman pinned this issue Feb 25, 2024
@Goooler
Copy link
Member

Goooler commented Feb 26, 2024

The thrid would be great.

@staktrace
Copy link
Contributor

Thank you for all the work you've put into this project over the years! I don't have strong feelings but I also prefer option 3 if that's viable. At least at CashApp we use this project widely in our internal builds and plan to continue to do so with newer versions of Gradle. As long as I'm working in my current capacity I'm happy to try to contribute fixes and patches that serve that goal.

@oleg-nenashev
Copy link
Contributor

oleg-nenashev commented Mar 2, 2024

Hello @johnrengelman. From my side (Gradle community manager), I am interested in building a community hub and community-governed GitHub organization that would offer a home for plugin and other key components maintainers who want to ensure continuity of the plugins. I call it Project Gradliverse (inspired by Quarkus), but this is not a finalized name.

From GitHub perspective it would be an org that offers hosting, various automations to simplify the life of maintainers (CI/CD, release flow, changelogs, docs hosting, etc.), encourages the best practices for plugin development, and also clear governance model that offers the maintainers almost full powers but defines a process of transition should the maintainer want to move one or become inactive. It is somehow aligned with how Jenkins governance is defined and how we support maintainers

I have not yet published the proposal, but I am discussing it with the community members. I hope to go live soon, and I think the Shadow Plugin could be one of the pilot projects moving there

@jimshowalter
Copy link

jimshowalter commented Mar 7, 2024

IMHO, the features of this plugin should be absorbed into native Gradle features, the same way unbroken-dome test-sets was (finally!) subsumed by native JVM Test Suites. Similarly, https://github.com/ben-manes/gradle-versions-plugin should be absorbed into Gradle. Both shadow and ben-manes are super-important, both depend on internal Gradle features and could be made to work better/faster if they were in Gradle's codebase, both started as "weekend projects", and both eventually fatigued the original authors.

Does anyone know how to start a conversation with the Gradle org about this?

@oleg-nenashev
Copy link
Contributor

Hi @jimshowalter @Goooler @martinbonnin

While I finalize the gradle/community#15 proposal and the approvals, I would suggest the following temporary solution:

  1. We transfer the repository to https://github.com/GradleUp, one of the popular GitHub organizations hosting a number of Gradle tools. I confirmed with @martinbonnin that he is open to it. CC @deepy too
  2. We synchronize changes by @Goooler to the new upstream, and I guess he becomes a maintainer of the repository
  3. Until 🌐 Community Hub for Gradle plugins and integrations gradle/community#15 is finalized, we do not change artifact/group IDs, but then we do something about it to unify for such a community hub recommendations we define

WDYT?

@johnrengelman
Copy link
Collaborator Author

@oleg-nenashev The general outline above sounds promising. I think moving to https://github.com/GradleUp has a middle ground might be unnecessary though. I could add @Goooler as a collaborator to this repository and to the circle ci project and I believe you all could add portal access for him to publish plugin versions?

@oleg-nenashev
Copy link
Contributor

I could add @Goooler as a collaborator to this repository and to the circle ci project and I believe you all could add portal access for him to publish plugin versions?

Yes, this is possible.

@kennytv
Copy link

kennytv commented Apr 3, 2024

I strongly believe that moving this project to some kind of organization with at least one other admin (whether one created by you or someone else) is necessary to avoid running into the same issue again. Having only a single person with administrative permissions on such a widely used tool is the most common factor for the entire project disappearing or breaking up into vaguely promoted forks while people using it scramble on how to go forward with the dependency

At the same time and with the same line of thought, I agree with jimshowalter that I would like to see features like relocation and easy exclusion/inclusion in Gradle-proper, or at least in an officially supported plugin. A community hub for gradle plugins with shadow would be the next best thing to that, including governance of even more trusted community leaders, as long as the bus factor doesn't stay at one or below

@oleg-nenashev
Copy link
Contributor

I'm finishing the proposal for Gradliverse, so it should move forward in a few weeks. I will be happy to publicize the version once I have a first review and green light.

@Goooler in the meantime, do you need any help from me to do the next release with your changes?

@Goooler
Copy link
Member

Goooler commented Apr 9, 2024

Yes, please.

@gtach2o
Copy link

gtach2o commented Jun 3, 2024

Hello,
any update on this?

marcphilipp added a commit to junit-team/junit5 that referenced this issue Jun 5, 2024
jlangch added a commit to jlangch/venice that referenced this issue Jun 12, 2024
The Gradle plugin "com.github.johnrengelman.shadow" has been retired.
See GradleUp/shadow#908. Switched to the fork
"io.github.goooler.shadow"
CDAGaming added a commit to CDAGaming/CraftPresence-Mirror that referenced this issue Jun 14, 2024
- Gradle shadow plugin retired
  - The Gradle plugin "com.github.johnrengelman.shadow" has been retired.
  - See GradleUp/shadow#908 for further info.
  - Switched to the fork
"io.github.goooler.shadow"
@josecsotomorales
Copy link

@johnrengelman, I just wanted to say thanks for all the hard work on this, this plugin is a must-have in most of my Gradle projects 🚀

joshuasing added a commit to ChameleonFramework/Chameleon that referenced this issue Jun 17, 2024
The Gradle shadow plugin by johnrengelman is currently unmaintained, and
does not currently support the latest versions of Gradle.

There have been discussions regarding the future of the plugin, however
nothing has been acted upon currently: GradleUp/shadow#908

This fork appears to be the most supported and best maintained fork, and
has been suggested as the replacement for the original shadow plugin.

Fixes #414
Related to #410
Badya added a commit to JetBrains/kotlin that referenced this issue Jun 17, 2024
Use new shadow fork, since original shadow development discontinued
see: GradleUp/shadow#908
@oleg-nenashev
Copy link
Contributor

I am ready to move forward on my side. Sorry for the long silence period; I was involved in getting the approvals for transfer and clarifying the process for mission-critical components. @Goooler we are ready to hand over permissions on the plugin portal to the previous plugin ID

joshuasing added a commit to ChameleonFramework/Chameleon that referenced this issue Jun 18, 2024
The Gradle shadow plugin by johnrengelman is currently unmaintained, and
does not currently support the latest versions of Gradle.

There have been discussions regarding the future of the plugin, however
nothing has been acted upon currently: GradleUp/shadow#908

This fork appears to be the most supported and best maintained fork, and
has been suggested as the replacement for the original shadow plugin.

Fixes #414
Related to #410
Badya added a commit to JetBrains/kotlin that referenced this issue Jun 20, 2024
Use new shadow fork, since original shadow development discontinued
see: GradleUp/shadow#908

^KTI-1456
Badya added a commit to JetBrains/kotlin that referenced this issue Jun 20, 2024
Use new shadow fork, since original shadow development discontinued
see: GradleUp/shadow#908

^KTI-1456
Badya added a commit to JetBrains/kotlin that referenced this issue Jun 20, 2024
Use new shadow fork, since original shadow development discontinued
see: GradleUp/shadow#908

^KTI-1456
KotlinBuild pushed a commit to JetBrains/kotlin that referenced this issue Jun 21, 2024
Use new shadow fork, since original shadow development discontinued
see: GradleUp/shadow#908

^KTI-1456
@oleg-nenashev
Copy link
Contributor

@Goooler FYI, I will be off for the next month, but somebody from the team might be able to help if you are still interested. @ljacomet can help with the permissions updates

FWIW, gradle/community#15 is stuck pending internal approvals, and I do not have any ETA, so for now, the only actionable approach is @johnrengelman granting permissions as it was discussed before.

@Goooler
Copy link
Member

Goooler commented Jul 2, 2024

Thanks!

@oleg-nenashev
Copy link
Contributor

So, for the transfer we need:

@johnrengelman
Copy link
Collaborator Author

@Goooler what do you think? Should we create a new org, move the repo under that?
Do we want to keep using the same plugin id or start with a new one?

@Goooler
Copy link
Member

Goooler commented Jul 6, 2024

A new org or @GradleUp, both look good to me.

@oleg-nenashev
Copy link
Contributor

Both options LGTM at this stage. If the new org includes "Gradle" in it's name, I will take care of the trademark grant when I am black from vacation

@Goooler
Copy link
Member

Goooler commented Jul 27, 2024

It's been placed at @GradleUp now.

jonesdevelopment added a commit to jonesdevelopment/sonar that referenced this issue Aug 12, 2024
null2264 added a commit to null2264/MCPreprocessTemplate that referenced this issue Aug 25, 2024
null2264 added a commit to null2264/CobbleGen that referenced this issue Aug 25, 2024
yuri1969 added a commit to yuri1969/kestra that referenced this issue Oct 28, 2024
The plugin ID `com.github.johnrengelman.shadow` is no longer maintained.
See: GradleUp/shadow#908
yuri1969 added a commit to yuri1969/kestra that referenced this issue Oct 28, 2024
The plugin ID `com.github.johnrengelman.shadow` is no longer maintained.
See: GradleUp/shadow#908
loicmathieu pushed a commit to kestra-io/kestra that referenced this issue Oct 29, 2024
* Fix Idea-reported problems

* Minimize Gradle 9.0-related warnings

* Migrate Shadow plugin

The plugin ID `com.github.johnrengelman.shadow` is no longer maintained.
See: GradleUp/shadow#908

* Make Shadow JAR-related task incremental
MilosPaunovic pushed a commit to kestra-io/kestra that referenced this issue Nov 4, 2024
* Fix Idea-reported problems

* Minimize Gradle 9.0-related warnings

* Migrate Shadow plugin

The plugin ID `com.github.johnrengelman.shadow` is no longer maintained.
See: GradleUp/shadow#908

* Make Shadow JAR-related task incremental
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants