commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Colebourne" <scolebou...@btopenworld.com>
Subject Re: [general][lang] monolithic components considered harmful
Date Wed, 01 Jan 2003 12:53:52 GMT
Let me attempt to demonstrate why multiple jars won't work. Imagine we do
the split of [lang] into jars based on Common Reuse/Reuse-Release
Equivalence/Common Closure Principles.

[arrayutil]
ArrayUtils.java
- depends on [builder]

[booleanutil]
BooleanUtils.java
- depends on [numberutil]

[charsetutil]
CharRange.java
CharSet.java
CharSetUtils.java

[stringutil]
RandomStringUtils.java
StringUtils.java

[classutil]
ClassUtils.java

[notifierutil]
Notifier.java
NotifierException.java
- depends on [exception]

[numberutil]
NumberUtils.java

[objectutil]
ObjectUtils.java

[serializationutil]
SerializationUtils.java
SerializationException.java
- depends on [exception]

[systemutil]
SystemUtils.java

[builder]
CompareToBuilder.java
EqualsBuilder.java
HashCodeBuilder.java
StandardToStringStyle.java
ToStringBuilder.java
ToStringStyle.java
- depends on [numberutil], [systemutil]

[enum]
Enum.java
EnumUtils.java
ValuedEnum.java

[exception]
ExceptionUtils.java
Nestable.java
NestableDelegate.java
NestableError.java
NestableException.java
NestableRuntimeException.java
- depends on [arrayutil], [systemutil]

[functor]
Executor.java
ExecutorException.java
ExecutorUtils.java
Factory.java
FactoryException.java
FactoryUtils.java
Predicate.java
PredicateException.java
PredicateUtils.java
Transformer.java
TransformerException.java
TransformerUtils.java
- depends on [exception], [serialization]

[numberrange]
DoubleRange.java
FloatRange.java
IntRange.java
LongRange.java
NumberRange.java
Range.java
- depends on [numberutil]

[fraction]
Fraction.java

[reflect]
ConstructorUtils.java
FieldUtils.java
MethodUtils.java
ReflectionException.java
ReflectionUtils.java
package.html
- depends on [arrayutil], [classutil], [stringutil], [exception]

[timeutil]
CalendarUtils.java
DateUtils.java

[timingutil]
StopWatch.java

[bitfield]
BitField.java

[identifier]
IdentifierUtils.java
- depends on [functor]

[validate]
Validate.java

So, 22 new commons components. <sarcasm>Now thats a good idea isn't
it</sarcasm>

And if you think this is pedantic look at the list again. Any combination of
the above components is combining two concepts that don't have a direct
connection.

Because thats what [lang] is, and thats why is doesn't fit the holy commons
charter. Its a combination of useful utilities
- too small to exist alone (one class)
- that gain strength by being together (see some of the more unusual
dependencies above)
- encourage reuse and discourage cut and paste by offering more (I might cut
and paste if I want one routine. I might depend if I want more than one. The
broader range available increases reuse over cut and paste)
- builds a viable community (not just counting committers, but users. The
time and math packages are user suggestions. The util package is the useful
parts of the dead community [util]. The functor package is the useful parts
of the dead community [pattern].)

Should we complain that the JDK contains stuff we don't use?

Stephen

----- Original Message -----
From: "Rodney Waldhoff" <rwaldhoff@apache.org>
>  Person ${p} suggests feature ${f} for component ${c}. Person ${q} insists
> it belongs in [lang].
>
> and ${q} pulls from a very small set.

and {q} = Stephen
Rodney, please feel free to make it personal if thats what you believe.



--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message