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

Re-organize top-level-plugins #16

Closed
armanbilge opened this issue Dec 30, 2021 · 2 comments · Fixed by #32
Closed

Re-organize top-level-plugins #16

armanbilge opened this issue Dec 30, 2021 · 2 comments · Fixed by #32

Comments

@armanbilge
Copy link
Member

Currently, the super-plugins are sbt-typelevel (which brings in everything but CI release) and sbt-typelevel-ci-release (which adds in CI release). This was following after sbt-spiewak, to accommodate projects that don't want to do CI releases.

Based on feedback from the Discord discussion yesterday, I think I got it wrong. My take-aways were that:

  • CI release is the real bottleneck/headache for almost everyone
  • besides that, many people don't want to be dictated scalac settings, etc.

However, there is also Ross's desire in #11 (reply in thread) for a plugin:

Shrinks the typical build.sbt (or extensions like sbt-http4s-org) to the point that updates to this plugin keep that build fresh.

So, my new proposal is:

  1. sbt-typelevel-ci-release: a super-plugin including versioning+mima+signing+sonatype+ci-release, but no more.
  2. sbt-typelevel: a super-super-plugin, that gets you all of the above, plus whatever else is needed to achieve Ross's vision, so scalac settings, even scalafmt, sbt-header, mdoc, what-have-you.

(2) will be very opinionated of course, but I think that's perfectly fine for many projects. Anyone who wants more fine-grained-control can always drop down to sbt-typelevel-ci-release and then build up their plugin/settings stack as they see fit.

@rossabaker
Copy link
Member

Objective 2 is hard: sbt-explicit-dependencies has repeatedly saved me, whereas many people hate it. Scalafmt is not too controversial anymore, but has naysayers. Headers are somewhere between? And should scalafix be enabled out of the box? Should certain scalafix linters be run out of the box? We could fight for months!

But the payoff to Objective 2 is that we could get a typelevel.g8 that creates projects with familiar workflows to our 70-and-growing maintainers, with a minimal build.sbt so older projects continue to work like newer projects. Most of our builds ain't special.

@armanbilge
Copy link
Member Author

Yeah, I don't think we need to make it hard, just make it clear it's not for everyone, and the really good stuff is in the ci-release plugin anyway. Basically all the Typelevel projects I contributed to use scalafmt and headers so I think those are fine. They all use mdoc too, but maybe that belongs in a site plugin that also makes it as easy as ci-release (and again, not for those who have opinions).

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

Successfully merging a pull request may close this issue.

2 participants