Github user christopher-johnson commented on the issue:

    https://github.com/apache/jena/pull/401
  
    the module system does not allow two distinct modules (e.g. 
`org.apache.jena.arq` and `org.apache.jena.base`) to export the same package 
(e.g. `org.apache.jena.atlas`).  
    
    There are two options in this situation, 
    1. consolidate the package into an existing module.
    2. separate the package into a new module.
    
    Option 2 is only viable when the package has no dependencies to another 
module that depends on it (i.e. a cyclical relationship).  I think that  
`org.apache.jena.atlas` is not a candidate for separation from 
`org.apache.jena.arq` as  `org.apache.jena.riot` depends on it, and  
`org.apache.jena.atlas` depends on `org.apache.jena.riot`, so they must be in 
the same module (given the existing code).   
    
    I agree that there is a balance between organizational convenience and 
radical (presumably hierarchical) package retrofitting to support strong 
encapsulation.  The concept of one-way dependency vectors governs modularity, 
but this does not necessarily agree with component semantics when implemented 
with package names.    



---

Reply via email to