[mark] I feel that you think that just because we happen to include the
Serialization Interfaces to these classes, that somehow we have to
guarantee that they are serializable across releases and the somehow we
are stuck with the current implementation. I do not believe we are
required to maintain such a claim at all. Having the Serialization
interface gives only the most simplistic and default serialization
behavior. We do not claim to be supporting serialization across versions
and changes across versions are currently not required to meet any
serialization compatibility to previous versions.
 
[phil]  I was assuming that we would be making the serialization compatability 
commitment across versions, similarly to what [collections] does (and maintains tests 
to ensure).  I may be misinterpreting the [collections] test framework, however and / 
or generally accepted practice in j-c.  Perhaps others can explain?  I have been 
burned by serialization incompatability in the past;  so my personal preference would 
be to avoid breaking it.
[phil]
 >* Drop from all UnivariateRealSolvers. The API is not stable enough to be tied to 
 >the physical implementation (there are lots of protected fields, including a 
 >UnivariateRealFunction, which does not have to be serializable and I would be -1 to 
 >forcing this). If kept, custom serialization needs to be added and it is not clear 
 >to me how this should work.

[mark]
If users are working with serialization, then they are probably working
as well with their own (or the default provided) implementations of
UnivariateRealFunction, as such they can assure their Functions are
serializable. If they are working with third party implementations of
UnivariateRealFunctions, then we make no guarantee serialization of such
implementations. If we take this position, no customization is necessary.

[phil] So we implement the interface, but don't guarantee that it will work?  Unless 
we *require* UnivariateRealFunctions to implement Serializable (or make the function 
transient, which is awkward), serialization can fail.


[phil]
>* Drop from ContinuedFraction (no reason to serialize, burdens subclasses).
>
[mark] How does it burden subclasses? If they want to support Serialization
they can, if they don't want to, then they don't.

[phil] No, they have to support serialization.


[phil]
 >* Either drop or customize serialization for all classes in the univariate package 
 >(other than StatisticalSummaryValues), especially those in the moment subpackage. 
 >Default serialization ties us to the current physical implementation, which may well 
 >change as we optimize implementations.  For example, SummaryStatisticsImpl currently 
 >holds a (redundant) private field n. Removing this field after release would break 
 >backward serialization compatability. I will probably eliminate this field before 
 >release, but this is the kind of thing that makes me want to be conservative about 
 >serialization.  My vote would be to release 1.0 without serialization support for 
 >these classes. 

[mark]
Again, we establish the statement that we do not guarantee serialization
as compatible across versions at this time. I need serialization
capabilities in this implementation and I don't require it, or expect
others who use the api the way I do (in Object Oriented Agent Based Java
Simulation) to be at all concerned with Serialization across versions of
the api.

[mark]
I understand you may have discomfort with this. But I think the original
email that suggested this as an issue was entirely a "Red Herring".
There are not significant drawbacks to including the Serialization
interfaces with a simple notice that we do not guarantee consistent
behavior across versions. I believe that if we provide event the
simplest default behavior, then we will attract users willing to test
out the capability and developers who are willing to help us support it
further. If we do not, then you loose those users/developers interest.
We are trying to create an API that is better than whats out there,
serialization is already out there in api's like COLT and RngPack.

[phil] Look carefully at what is serializable and what is not in COLT, for example.  I 
do not think that it is good practice to implement serialization when there is no 
logical reason do do so (e.g special functions, continued fraction impls, etc.).  I 
also need to hear from other commons committers that it is OK to ignore backward 
serialization compatability before releasing the classes mentioned above with default 
serialization.  My opinion is that we should avoid this kind of thing.

Phil

 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to