Hello, Do we have anywhere a set of recommendations for developing new coders? I'm confused by a couple of things:
- Why are coders serialized by JSON serialization instead of by regular Java serialization, unlike other elements of the pipeline such as DoFn's and transforms? - Which should one inherit from: CustomCoder, AtomicCoder, StandardCoder? I looked at their direct subclasses and didn't see a clear distinction. Seems like, when the encoded type is not parameterized then it's CustomCoder, and when it's parameterized then it's StandardCoder? [but then again CustomCoder isolates you from JSON weirdness, and this seems useful for non-atomic coders too] - Which methods are necessary to implement? E.g. should I implement verifyDeterministic? Should I implement the "byte size observer" methods? I'm actually even more confused by the hierarchy between Coder => StandardCoder => DeterministicStandardCoder => AtomicCoder => CustomCoder. DeterministicStandardCoder implements verifyDeterministic(), but it has subclasses that override this method...
