Open kpodsiad opened 2 years ago
Yeah, the lib is definitely supposed to be used when you need to write some of your derivation by hand. I think, the the desired usage would be something like
object MyDataType:
given Config[MyDataType] = Config.derived.copy(...) // some user customizations here
given Codec[MyDataType] = EvoCodec.derived
If that suits you we can think of a better set of methods for config to make configuration easier.
Moreover, the derivation core is supposed to be a lightweight library so that one can use it in the "Public API" part. It doesn't mention any circe, etc. parts. So I still think that one can use annotations even in public API with no commitment to serialization\schema library
Annotation based configuration is super useful, but it might be hard to use in cases when one's datatypes are part of e.g. public API and are shared among few apps. Bringing circe, cats and friends into scope is almost impossible.
Of course one can use
derived
methods explicitly, but it's not as convenient as using circe'sderiveConfiguredCodec
and similar. Snippet included to issue doesn't use any configuration options but each one of them will require additional codes which is not easy to write as there are almost no comments in sources.Reproduction uses scala-cli and locally published version of library.