typelevel / typelevel/cats

Reveal internal but public identifiers and make them `private[cats]`

Open
#4,618 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

behind-the-scenes Source Breaking
Dominant language
Scala
Stars
5.5k
Forks
1.2k
Avg merge
2d 10h
Merged PRs (30d)
5

Description

There are several classes or other identifiers across Cats that were made public initially even though they are not supposed to be accessible outside of the library:

  • cats.kernel.instances.SeqMonoid - should only be exposed as Monoid[Seq] (see initial discussion)
  • TBD

In order to simplify the migration and alleviate toil for users, it makes sense to consider a corresponding scalafix rule for that.


The issue is created just to don't forget about it.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the visibility of cats.kernel.instances.SeqMonoid and the linked discussion in pull request 4614. Identify the other public identifiers that should be private[cats], then determine the scope of a corresponding scalafix rule. Done means the intended identifiers and migration approach are agreed and documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
backend-api-design, developer-experience
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.