[jbosstools-dev] Unnecessary Dependencies
Max Rydahl Andersen
max.andersen at redhat.com
Fri Feb 13 13:12:20 EST 2009
>
> Also i simply disagree with you that "duplication of code" is a bigger
> downside than "decoupling". This is simply a value judgement. There's
> no book or guide that can prove you or I right. It'd be interesting to
> find out what the rest of JBoss thinks about duplication vs decoupling
> when you don't yet have time to add a new core / common module. The
> fact is you can always refactor it out to common code later.
That is *not* true. It is always easier to factor out common code later
if the code is actual common - if they are separate it gets harder to
ensure they are still the same.
> You keep mentioning the update site and how easy it is to add things,
> but we're neglecting that users may actually want to control their dev
> environment and customize what plugins go in and don't go in, and may
> still want their tools to work even if they remove some parts. For a
> project that has a download page that offers piecemeal downloads (a la
> carte), to not even make a basic attempt at it is ridiculous.
Which parts would he be able to remove if there are declared dependencies ?
> And finally, if you were to really look at the classes, there's not a
> whole lot to them. All it is is a container where you give it a folder
> and it adds those to a classpath. It's pretty basic code. It's not
> some novel algorithm or crazy logic.
I'm still waiting for a pointer to what classes they are ;) (maybe they
are now in the jira after anonsvn got back...will need to look)
/max
>
> Max Rydahl Andersen wrote:
>> Maybe showing the +/- of each scenario would make it more obvious:
>>
>> A) We keep the ESB to AS dependency:
>> + Does not require module structure/dependency changes shortly before GA
>> ++ if there is a bug in the shared code it will be fixed once and
>> work for all
>> - I have to download AS to get the shared functionality (but this is
>> not a big minus if you use the updatesite since there would be a
>> dependency)
>>
>> B) We copy code from AS to ESB:
>> + ESB can be downloaded separately
>> - Changes dependency changes shortly before GA (a small minus but it
>> needs to be checked after all)
>> -- if one fixes a bug in the copied code in ESB he also need to fix
>> this where the code was copied from (i.e. which will be forgotten
>> because we are all humans)
>> - I have to download AS to get the ESB projects to actually deploy
>> (but this is not a big minus if you use the updatesite since there
>> would be a dependency)
>>
>> C) We share code between AS to ESB in a common core
>> + ESB can be downloaded separately
>> ++ if there is a bug in the shared code it will be fixed once and
>> work for all
>> - I have to download common core (but this is not a big minus if you
>> use the updatesite since there would be a dependency)
>> -- Require module structure/dependency changes shortly before GA
>>
>> So for me the copy option is the worst of all choices. Since it has a
>> big minus (duplication of code), but no real benefits plus moving
>> from A to C is easier then B to C.
>>
>> If ESB and AS did not have a natural dependency and the duplicated
>> code was just simple - things would be different. It all depends on
>> the context.
>> Dependencies are not a bad thing - but yes, in general we should
>> modularize our code so we don't get *unnatural* dependencies.
>> /max
>>> On 12-02-2009 06:34, Rob Stryker wrote:
>>>> So today I decided to work on JBIDE-3772 and I create a workspace
>>>> with just ESB projects.
>>>>
>>>> I see immediately that it requires XModel (bleh), but that's fine I
>>>> guess. It provides a lot of functionality. I also see, however,
>>>> that it requires as.classpath.core.
>>>>
>>>> Requiring XModel is maybe justifiable as it's "common" code. The
>>>> requirement on as.classpath.core is just to make use of an Abstract
>>>> classpath provider that's in there.
>>>>
>>>> I'm not trying to call any plugin or developer out here, but I'd
>>>> like to suggest that we try to decouple our code as much as is
>>>> possible. If you're just borrowing one or two classes with minimal
>>>> dependencies, would it be better to copy that class? I think it
>>>> would be better but I'd like to hear other's thoughts.
>>> No, copy/paste of code that is doing more than just very simple
>>> things should not just be copied.
>>>
>>> You don't tell what classpath provider you are copying so I can't
>>> see what it does (and fisheye is down), but my guess is that it is
>>> the classpth container
>>> that manages the sourcecode and javadoc attachements - that is
>>> excellent candidates for code to be shared.
>>>
>>> This does not mean you should not decouple your code, but decoupling
>>> is much more than just avoiding plugin dependencies between our
>>> plugins.
>>> i.e. if having ESB classpath containers and deployment being
>>> dependent on AS plugin saves us from a lot of possibly maintanence
>>> duplication then why bother
>>> separating them when the only adapter and server in the world that
>>> will work with ESB is our AS plugin...in other words ESB has (IMO) a
>>> natural dependeny on AS
>>> hence having common code in AS does not hurt anyone.
>>>
>>> If ESB one day can be deployed to other servers or the classpath
>>> container start being used by other parts of our code that is not
>>> 100% dependent on AS by nature then
>>> separating those base classes out makes a lot of sense.
>>>
>>> /max
>>> _______________________________________________
>>> jbosstools-dev mailing list
>>> jbosstools-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/jbosstools-dev
>>
>
More information about the jbosstools-dev
mailing list