On 7/21/2012 9:48 AM, Kevin Wright wrote:

    On 7/20/2012 2:42 PM, Kevin Wright wrote:
    Nothing wrong with a half-baked solution.  Something can have
    definite value even if it's not "complete".  But without the
    ability to evolve the thing and change APIs under a different
    version number, it's too risky to release in such a state.
    No module system will give you what you want -- an ability to
    radically and incompatibly change longstanding public APIs
    whenever and wherever this is deemed more correct/pure/perfect,
    e.g. wherever you'd do it differently if you could do it all over
    again.


Radically change - yes
Whenever and wherever - no

I'm only concerned with two classes of issue here:

1. The big, infrequent changes: removing Corba, breaking swing out into a separate module, a one-off replacement of all methods using enumeration to use iterable. The sort of legacy stuff that you often hear people wishing could be changed with each new release, but which is tied to backwards compatibility.
Most of this isn't worth the sort of heartburn / community fracturing it would engender. Removal of CORBA is a separate case, of course, as this largely can just be moved to a separate module without actually changing APIs in any incompatible fashion. Rather it can just be pushed out of the way. That said, it wouldn't buy me anything whatsoever either -- not because I use CORBA but rather because CORBA packages being present does not hurt me in any way whatsoever.
2. Very new stuff that's still evolving. Instead of hiding JavaFX 2 from the public for so long, it could have been released as a versioned module. Frequent changes here wouldn't be a problem in the same way as for more established functionality, because nobody's yet had time to build up any legacy code around them.

The extreme way that I works because it happens in a very lean environment, where the developers are all co-located, the "application" is made up of numerous modules all communicating via JSON, and where almost all our services are for in-house consumption by our own client app.

I can't imagine that approach working in the Java libs for a second.
As you say, that works in a very lean, colocated, environment.

This sort of change would fall on its face for large distributed environments with large less modular source bases, lots of usages of external Java libraries, etc.

In short, it wouldn't fly for a good number of large Java-based development organizations.

--
Jess Holle

--
You received this message because you are subscribed to the Google Groups "Java 
Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to