Hi all!

We have various pending pull requests that add support for certain types by
adding extra kryo serializers.

I think we need to decide how we want to handle the support for extra
types, because more are certainly to come.

As I understand it, we have three broad options:

(1)
Add as many serializers to Kryo by default as possible.
 Pro:
    - Many types work out of the box
 Contra:
    - We may eventually overload the kryo registry with serializers
      that are not needed for most cases and suffer in performance
    - It is hard to guess which types work out of the box (intransparent)


(2)
We create a collection of serializers and a registration util.
--------
val env = ExecutionEnvironemnt.getExecutionEnviroment()

Serializers.registerProtoBufSerializers(env);
Serializers.registerJavaUtilSerializers(env);
---------
Pro:
  - Easy for users
  - We can grow the set of supported types very large without overloading
Kryo
  - It is transparent what gets registered

Contra:
  - Not quite as convenient as if things just run


(3)
We do nothing and let the user create and register whatever is needed.

We could have a library and utility for serializers for certain libraries.
Users could use this to conveniently add serializers for the libraries they
use.
Pro:
  - Simple for us ;-)
Contra:
  - More repeated work for users


========================

For approach (1) and (2), there is an orthogonal question of whether we
want to simply register default serializers (that enable that types work)
or also register types for tags, to speed up the serialization of those
types.


Greetings,
Stephan

Reply via email to