commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anton Tagunov <>
Subject 1. Interfaces shold be stable 2. How to do one-pass computations? (was : [math] Recent commits to stat, util packages)
Date Mon, 07 Jul 2003 09:17:05 GMT
Hello, Phil and All the [math] Developers!


PS> Univariate can always be extended -- statistics can be added to the base
PS> interface...

Oh, no.. I feel terribly sorry to break in, but this is
probably going to cause us users some troubles..


* some class appears in [math] that accepts an
  object implementing Univariance as an argument of some

* I, as a user, create my own implementation of Univariance

* I pass my object to that method

All is ok, so far.

* as the next version of [math] comes out the Univariance
  interface is extended

Bump! My project no longer compiles, as my own implementation
of Univariance does not implement the new method.


In fact, extending an interface in a released (and also unreleased
but already adopted by users) project is an extremely painful action.
It breaks all user implementations of that interface.

AFAIK jakarta-commons strives hard to avoid doing that even if
extending an interface would give significant benefits.

AFAIK this is the path to creating incompatible versions of
jars (w/o backward compatibility) and this is part of
the "jar hell" problem widely known here which makes
developers "cut and paste" code rather then create a
dependency on a sister project (augh!)

Please, can you use a design that keeps interfaces stable?



PS> I wanted to keep the stats in ... one-pass, storageless Univariate
PS> limited to the basics -- mean, variance, min, max, sum and the things
PS> that can be derived from those (std. dev, conf intervals, etc.)

This sounds meaningful as well.
How can the one-pass computation be implemented in the
modular framework?

WBR, Anton

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message