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

Communication strategy #1054

Open
kenbot opened this issue Feb 13, 2021 · 3 comments
Open

Communication strategy #1054

kenbot opened this issue Feb 13, 2021 · 3 comments
Labels
3.x Next major version
Milestone

Comments

@kenbot
Copy link
Collaborator

kenbot commented Feb 13, 2021

I think the website, scaladoc, code/variable naming, import interface and compiler error messages all have to form one coherent, clearly stated communication strategy for 3.0 release. They all have to make sense with respect to each other, not just themselves.

@kenbot kenbot added the 3.x Next major version label Feb 13, 2021
@julien-truffaut
Copy link
Member

Yeah I completely agree. I think what is important is to define a pattern, e.g. select a few features/optics/methods and write the sort of documentation we expect to get for the rest of the library.

For example, it would be great to create a section on the website documenting all the Optics Builder methods. This would include code example, is it available via Focus macro, conditions etc

some

Description Zoom into an Option but only if it is a Some
Available All Optics, ApplyOptics and Focus
Example Focus[User](_.address.some.streetNumber) .replace(4) ...

Then we could reference this documentation in the code

/**  Description | Zoom into an `Option` but only if it is a `Some`
 @see www.optics.dev/optics-builder#some
*/
def some[A1, B1](implicit ev1: A =:= Option[A1], ev2: B =:= Option[B1]): PPrism[S, T, A1, B1] =

@julien-truffaut
Copy link
Member

@kenbot do you have an idea how should we do this and communicate about it?

@kenbot
Copy link
Collaborator Author

kenbot commented Feb 17, 2021

I think my ideas are pretty aligned with yours. I'd say:

Have "onion rings" of documentation levels, where each level n need not know anything about n+1. Something like:

  • Level 1: Focus macro features, basic examples. Reusable optic use case, single-use applied use case.
  • Level 2: Monomorphic optic family, hierarchy, composition table, operators, relationship to what they know in Focus, bulk auto-generation of optics, advanced use cases that Focus isn't enough for.
  • Level 3: Polymorphic usage, STAB, creating new custom instances of optics. Use cases requiring polymorphism. Cats integration

@yilinwei yilinwei added this to the 3.3 milestone Jan 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
3.x Next major version
Projects
None yet
Development

No branches or pull requests

3 participants