pivotal-jbarrett commented on PR #7211:
URL: https://github.com/apache/geode/pull/7211#issuecomment-1154370976

   @upthewaterspout, this brings up an excellent question. Does the use of the 
`Serializable` interface outside of the direct API, which does not utilize it, 
constitute part of the binary compatibility contract for a public class. Our 
API or internals do not transmit the classes in question as serializables but 
the test framework does. As a result of having the `Serializable` interface on 
the class are we stuck making sure that external use of this class maintains 
serialization compatibility? 
   
   If the answer to this is yes, then it will likely put a damper on future 
mutation of types that either directly or indirectly, like `enum`, implement 
`Serializable`. There are many issues with versioning `Serializable` classes 
that may force us to consider `@Deprecated` annotations on these sorts of types 
and making new types to replace them anytime we want to mutate them.
   
   If the answer is no, then how should we communicate this to users? We could 
define a `@NotSerializable` annotation and Javadoc tag to hopefully inform the 
user not to use it in serialization. We could implement the write/readObject 
methods and throw exceptions to prevent it at runtime.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@geode.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to