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

Submitting Simulacrum Scalafix for incubator membership #100

Closed
travisbrown opened this issue Feb 28, 2020 · 2 comments
Closed

Submitting Simulacrum Scalafix for incubator membership #100

travisbrown opened this issue Feb 28, 2020 · 2 comments

Comments

@travisbrown
Copy link

travisbrown commented Feb 28, 2020

Simulacrum Scalafix tool is an experimental reworking of Simulacrum as a set of Scalafix rules. A couple of months ago I opened a proposal advocating for this approach in Cats, and we've discussed the idea in other channels (e.g. this Gitter conversation). The primary goal of the project is to unblock Dotty cross-building for libraries that use Simulacrum 1 (since Dotty does not and probably will never support macro annotations).

Initial 0.1.0 releases of the rules and the annotations for Simulacrum 1 compatibility are currently available on Maven Central, but under my personal dev.travisbrown group ID. Versioning follows the same restricted semantic versioning scheme as e.g. Cats and Circe (no binary incompatibilty within 0.x or x > 0 release series, no source incompatibility within 1.x series). In-line documentation is minimal but the README includes a fairly detailed guide to usage.

The library adopts the Scala Code of Conduct and is currently licensed under the Apache License, Version 2, but I'm open to relicensing under a BSD license (to match Simulacrum 1) or MIT (to match Cats). I am currently the only contributor, and the implementation shares no code with Simulacrum 1 (although it's clearly completely inspired by it and produces the same encoding of syntax classes and methods, etc.).

I'm not aware of any projects that have replaced Simulacrum 1 with Simulacrum Scalafix "in production", but I've been using it in Dotty cross-building branches in Cats and other libraries, where it is consistently working as a drop-in replacement for Simulacrum 1 (all tests and binary-compatibility checks pass without manual intervention).

Concretely Typelevel membership would mean moving the repository from travisbrown/simulacrum-scalafix to typelevel/simulacrum-scalafix and publishing to Maven Central under the org.typelevel group ID. I'd be happy to have merge rights given to any current Cats maintainers who are interested in helping with review.

I'm proposing incubator status, with a plan to promote the tool to full membership if we decide to go this route in Cats, but I don't think there's any particular reason it couldn't be included with full membership now.

@rossabaker
Copy link
Member

Thanks for submitting. Looks like there are no objections or questions. I've opened a PR to add it to the website.

Regarding incubator vs. full membership, it's a distinction we'd like to do away with. We have another in-flight PR to reform the way projects are listed.

If you'd like to get more eyes on this and are so inclined, we'd love to have a blog post about it.

@travisbrown
Copy link
Author

@rossabaker Thanks! I've moved the repo and published the first Typelevel release: https://github.com/typelevel/simulacrum-scalafix/releases/tag/v0.1.0

I could definitely collect some of the things I've written about this experiment for a blog post—let me think about that this week.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants