Github user aledsage commented on the pull request:

    https://github.com/apache/incubator-brooklyn/pull/844#issuecomment-132400477
  
    Thanks @ahgittin - much clearer!
    
    I've written up my comments at 
https://docs.google.com/document/d/1un7SwvoE43lWaIlD5CRdIdza4XJkHji-OhTKXpkr0NA,
 because there are a lot of them!
    
    We can do this package name incrementally - but agree we want to get most 
of the changes done quickly in a small number of steps to limit the disruption 
for package renames causing merge conflicts, and problems for downstream 
projects trying to keep up.
    
    Comments copy-pasted below for posterity, but recommend you use the link 
above for a better formatted doc:
    
    General questions
    * What is our public API?
      How do we communicate to users what is internal impl, versus public API?
      Do we just list packages that are “public”?
      We definitely want a set of packages that we are free to refactor, 
without deprecation warnings (or worries about persisted state!).
    * What does “internal” mean in the package name?
      Is this to indicate that it is internal to the module (i.e. OSGi meaning)?
      Or just not part of the public API?
      It would be nice  if we can use the OSGi meaning of “internal”.
    
    *api*
    EntityLocal:
        move to org.apache.brooklyn.api.entity, and deprecate it!
    
    BrooklynClassLoadingContext:
        could move to core? note referenced by rest of API?
    
    org.apache.brooklyn.api.sensor.Enricher*:
        I'd put this in org.apache.brooklyn.api.enricher
        We talk about policies and enrichers, so deserves a top-level I think.
    
    org.apache.brooklyn.api.sensor.Feed:
        I'd (maybe) put this in org.apache.brooklyn.api.feed
        no strong feelings.
    
    org.apache.brooklyn.api.mgmt.*Task*
        could move to 
    org.apache.brooklyn.api.task
    
        I’m inclined to move all the basic task stuff into a separate 
“task” module, in time.
    
    To deprecate, includes:
        org.apache.brooklyn.api.mgmt.rebind.RebindSupport
        org.apache.brooklyn.api.mgmt.rebind.Rebindable
    
        org.apache.brooklyn.core.mgmt.internal.LocalAccessManager
        org.apache.brooklyn.api.mgmt.AccessController
    
        
    *core*
    org.apache.brooklyn.camp.brooklyn.api
        Looks out of place in core.
    
    org.apache.brooklyn.camp.brooklyn.api.HasBrooklynManagementContext
        Feels like it should sit near ManagementContextInjectable
        Feels like nothing to do with camp.
    
    *.internal:
        Is this to indicate that it is internal to the module? Or just not part 
of the public API?
        Would be good if we can use the OSGi meaning of “internal”.
    
    org.apache.brooklyn.core.internal.BrooklynFeatureEnablement
        Does feel internal to core
    
    org.apache.brooklyn.core.mgmt.internal.UsageListener & UsageManager:
        Suspect this is part of public API.
    Used by customers / power users to track their customers’ usage.
    Could move into org.apache.brooklyn.core.mgmt.usage (need to double check)
    
    .rebind versus .persist:
        What is the difference?
    Should .persist contain everything for persisting? And .rebind just what is 
used for rebinding?
    
        Longer term… could separate RebindManager from PersistenceManager
        (but not now)
    
    org.apache.brooklyn.effector.core:
        I’d rename it org.apache.brooklyn.core.effector
    
        Recommend moving AddEffector, AddSensor and AddChildrenEffector.
                e.g. beside EntityInitializers
                Maybe in org.apache.brooklyn.core.entity.initializers
    
    org.apache.brooklyn.entity.*
    Uncomfortable with this.    
    There are quite a few sub-packages; so change of a name collision with 
something in a brooklyn-software-* module seems risky.
    Also, makes it hard to tell what is core from the package name.
    
    I’d go for org.apache.brooklyn.core.entity.* for anything about writing 
entities or helpers.
    This would include:
        org.apache.brooklyn.core.entity
        org.apache.brooklyn.core.entity.drivers.*
        org.apache.brooklyn.core.entity.factory
        org.apache.brooklyn.core.entity.internal
        org.apache.brooklyn.core.entity.lifecycle
        org.apache.brooklyn.core.entity.trait
        org.apache.brooklyn.core.entity.trait
    
    I’m more happy with things that are actually entities:
    org.apache.brooklyn.entity.group
    org.apache.brooklyn.entity.stock
    
    org.apache.brooklyn.entity.annotation:
        Uncomfortable with this.
    Contains only a couple of annotations; other annotations are elsewhere 
(e.g. org.apache.brooklyn.api.catalog.CatalogConfig)
    
    org.apache.brooklyn.location.*:
        Uncomfortable with this, as with org.apache.brooklyn.entity.*
        
    I’d name them:
        org.apache.brooklyn.core.location
        org.apache.brooklyn.core.location.access
        org.apache.brooklyn.core.location.cloud
        org.apache.brooklyn.core.location.dynamic
        org.apache.brooklyn.core.location.geo
        org.apache.brooklyn.core.location.dynamic
        org.apache.brooklyn.core.location.dynamic
        org.apache.brooklyn.core.location.dynamic
    
    I’m fine with:
        org.apache.brooklyn.location.byon
        org.apache.brooklyn.location.localhost
        org.apache.brooklyn.location.ssh
        org.apache.brooklyn.location.winrm
    
    
    org.apache.brooklyn.location.paas:
    Let’s deprecate or even delete PaasLocation - and resurrect it 
differently when we can deploy to Cloud Foundry.
    
    org.apache.brooklyn.policy.core:
        rename to org.apache.brooklyn.core.policy
    
    org.apache.brooklyn.sensor.core:
        rename to org.apache.brooklyn.core.sensor
    
    org.apache.brooklyn.sensor.enricher:
        could rename to org.apache.brooklyn.enricher.stock
        (see comment under api about not having this inside “sensor”)
    
        and separate out anything that is a utility for writing new enrichers 
etc into:
    org.apache.brooklyn.core.enricher
    (e.g. AbstractEnricher, etc)
    
    org.apache.brooklyn.sensor.feed:
        I’d put the core feed stuff in org.apache.brooklyn.core.feed
    
        For particular feed impls, I’m fine with us having:
                org.apache.brooklyn.feed.function
                org.apache.brooklyn.feed.http
                etc
    
    org.apache.brooklyn.util.core:
        I’d go for org.apache.brooklyn.core.util
    
        And we should more carefully review what’s in here, to see what to 
move/delete.
    
    org.apache.brooklyn.util.core.task:
        Perhaps put this in org.apache.brooklyn.util.task
    
        Reasoning is that we may well move the task stuff into its own module.
        (core is way too big!)
    
        However, o.a.b.core.util.task.ssh etc is fine, as these are not for 
generic tasks.
    
    *software-base*
    org.apache.brooklyn.entity.system_service:
        not sure about this (it’s too late at night now!)
    
    org.apache.brooklyn.sensor.ssh:
        2 of 3 of its classes are not related to sensors.
        Could be an “initializers” package?
        
    SshEffectorTasks: should that be in core, closer to 
org.apache.brooklyn.util.core.task.ssh?
    
    org.apache.brooklyn.sensor.feed.jmx:
        Could be renamed to org.apache.brooklyn.feed.jmx?
    
    org.apache.brooklyn.sensor.winrm:
    Uncomfortable with this namespace.
    
    
    *brooklyn-utils-common*
    org.apache.brooklyn.util:
        this package name is also in brooklyn-utils-groovy
    
    *brooklyn-utils-test-support*
    org.apache.brooklyn.test:
        this package name is also in brooklyn-utils-common
        
        Rename this one, e.g. to org.apache.brooklyn.test.support
    



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to