[ https://issues.apache.org/jira/browse/MATH-742?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210192#comment-13210192 ]
Gilles commented on MATH-742: ----------------------------- bq. It is perfectly fine to make only part of the library Serializable. And the policy must provide an clear decision-making procedure to select between the part that will be "Serializable" and the one that won't. We are already in trouble, because of this lack of policy, for several classes for which "Serializable" is a supposedly innocuous feature (e.g. fields that should be transient cannot be because no _explicit_ serialization is implemented). In the Commons project, there is a commitment that minor releases must be fully compatible; that implies that relying on a default serialization would prevent *any* change to internal structure of a class. Maybe that you are not aware of the constraints imposed by "Serializable"; maybe that you don't care because in your use-case, you'll never be confronted to the problem of a wrong serialized form. But another user's use-case might bring him here complaining about our inconsistent support of "Serializable". Would he be less right than you? It is always trivial to add "implements Serializable" to a class definition. But it is not trivial to do the implementation in the right way; just adding "implements Serializable" is not the right way, never. Again, it could be good enough for some purpose, but the wish for CM to be an example of good Java programming, is not compatible with statements such as "We know it's sloppy, so don't use it whenever you need something that works...". The purpose of CM is to provide robust implementations of mathematical utilities; supporting distributed applications is a totally different game. Easing the use of CM in distributed applications is a worthy enhancement, but it should not put the primary goal at risk (like blocking development because it would be tied by "puny" considerations of backwards compatibility not even related to the "core business"). Hence I think that it has to be thought about with more care than was done up to now: You rightly pointed out the inconsistency of tagging "PolynomialFunction" as serializable while "PolynomialSplineFunction" is not. Personally, I'm really _not_ attached to backwards compatibility! So I wouldn't mind making that class "Serializable" *until* we decide to clean up the mess. Thus, if I have it my way, that would mean that in, say, version 4.0, *all* of the CM classes (not obviously meant as data storage) will be stripped of their "trivial serializability". > Please make PolynomialSplineFunction Serializable > ------------------------------------------------- > > Key: MATH-742 > URL: https://issues.apache.org/jira/browse/MATH-742 > Project: Commons Math > Issue Type: Improvement > Affects Versions: 2.2 > Reporter: Neil Roeth > Priority: Minor > Attachments: PolynomialSplineFunction.java > > > PolynomialSplineFunction is not Serializable, while the very similar > PolynomialFunction class in the same package is. All that needs to be done is > to add the import: > {{import java.io.Serializable;}} > and change this: > {{public class PolynomialSplineFunction implements > DifferentiableUnivariateRealFunction}} > to this: > {{public class PolynomialSplineFunction implements > DifferentiableUnivariateRealFunction, Serializable}} > I made exactly that modification to a local copy and it serialized > successfully. Before the change, I got serialization errors. > Thanks. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira