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

Submitting Simulacrum Scalafix for incubator membership #100

@travisbrown

Description

@travisbrown

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions