On 2020-06-12, Xeno Amess wrote:

> Hi.

>>> 2. How are commons projects related?

>> They are not necessarily related.  Usually it is considered
>> a feature if a component has zero dependency (as it is was
>> easier to avoid "JAR hell").
>> However, there are also drawbacks, e.g. duplicating functionality
>> (and work) needed by several components.

> Something was not quite right about this.  For example, in
> commons-vfs, we just use commons-lang3 as a dependency.  But in
> commons-email, we fork some of utility functions in commons-lang3 as a
> java class in commons-email.  Which is the right way, or a more
> commonly accepted way in commons projects?

Neither is right or wrong in general, it all depends on the context.

VFS has a bunch of dependencies anyway, so adding a dependency on
commons-lang3 is no big deal. Email may have decided to copy a few
classes in order to avoid a depencency.

Another example I'm aware of is Compress which has copied code from
commons-io (basically parts of IOUtils) in order to avoid a
dependency. And it has copied classes developed in Comnpress to Codec
(some of the more exotic hashes/checksums) because they seemed to fit
there - but Compress didn't want to pay for this by adding a dependency.

One thing that may not have become clear from Gilles' great answer: many
decisions are made by the people who work on a concrete code base while
people only active elsewhere get out of the way. There are some common
grounds - rules that are common to all Apache projects mostly - but the
components operate rather autonomously.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to