Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jwt-dev] refactoring

Hi Chris

Those are sensible thoughts.

So I'd be OK with :

* group 1. stays in the same architecture & CVS and goes in the main feature * group 2. goes in an additional feature, and can be merged in fewer plugins, as long as it makes sense / doesn't cripple the example, or moved in the CVS. It'll also make it easier for new developers to start with JWT : "look in the main example plugin, what you're looking for should be there". It'll also make maintenance easier / more enforced, as you pointed out
  * group 3. may only have some web or wiki pages about it

And about merging or not EMF.model and EMF.edit projects :
  * in a sample I don't mind
* in the main architecture I say no. More specifically, the metamodel has been already refactored / extracted, and each jwt-we-conf plugin is well defined as well. I don't like putting tool dependencies in my runtime "because it's convenient for the build". And an EMF.edit plugin may have additional dependencies that are more cumbersome or even incompatible with my runtime, like to a different version of the jDOM jar.

Regards,
Marc

Christian Saad a écrit :
Hi Marc,

thanks for your reply! You're absolutely right, a clean architecture mustn't be sacrificed for a more conveniant maintenance (which in my understanding is not just the build process but all development to keep it up to date). My idea was to compromise only in areas where the current layout is too detailed for the useage scenarios and therefore we and JWT's users won't benefit from it anyway.

I very much agree on your classification and the suggestion to separate the parts in different features, but this raises the same question for the plugins inside group 1), 2) or 3).

As a concrete suggestion, I would propose to merge the test plugins and some of the samples (especially the extension point ones) since this 1. has no impact on everything else, 2. is handled similarily in many other Eclipse projects and 3. I don't think there are any disadvantages in doing so.

> And to answer your question, the model may be used alone, at runtime.
> And I've written code that does that :)

That's really interesting and a reason why I'd like to start a discussion since possible refactorings should of course be made according to our experiences (just like the metamodel changes). In this case it would have been obviously necessary to export the emf edit stuff to the runtime although it was not needed. The question to be considered is if this is acceptable or would it "hurt" too much. In my opinion, adding a few dependencies to an already huge Eclipse isn't that bad, but on the other hand adding Eclipse dependencies to a standalone Java JAR is (so e.g. if EMF can run outside Eclipse but EMF.Edit can't this would be a definite reason to separate them).

Regards,
Chris

Am 05.05.2010 16:10, schrieb Marc Dutoo:
Hi Chris

I'd like the opinion of Eclipse experts like Stephane :)

But IMO having many plugins is not a problem, it's a solution (to
application architecture, cross dependencies etc.).

What do you say about that : the problem you describe is not about how
plugins are separated, but about easing the build of a release (what
about writing a script that increments the version number of all
sub-plugins ?), about knowing which plugins are obsolete and
unmaintained (what about putting them in a "trash" place in the CVS, or
having another build cycle for them ?).

In this context, our plugins can be classified this way :
* 1. WE build required plugins : all metamodel (and converter), we,
we-conf (aspects), views, transformations plugins - except "dumb" samples
* 2. WE optional, sample and prototype plugins : transfo-test, samples
(including views, conf "dumb" samples, stub transfo), monitoring /
runtime WorkflowService APIs
* 3. other projects not directly needed : runtime "only" APIs, swing
apps...

1. should be well defined, always be perfectly managed and maintained,
and built in every build. I maintain that 1. is well architectured, not
hard to delve in, and pretty clear.
2. should be managed by the person who did it, or another one that takes
responsibility.
3. is not in any build, but only for specific uses.

Nowadays, JWT is build and made available as a single feature in the
download site. I believe 2. should be put in a separate feature, maybe
jwt-samples. The idea is that 1. is rock solid and well defined, and not
crippled by possibly obsolete or "dumb" aspect or transfo samples. And
that 2. provides everything else that someone could be interested in,
like samples and prototypes. (Actually, what goes in 2. vs 1. should be
thought about : should Logging go in 2. because it is a sample, or in 1.
because it is a valuable feature ?) And if 2. doesn't build because of a
single project, we could even throw it out for the time being whitout
afterthought.

In any way, I'm not for crippling the architecture in order to solve
productivity problems.

And to answer your question, the model may be used alone, at runtime.
And I've written code that does that :)

Regards,
Marc (shocked but not suprised, and open to discuss it on Skype or on
the phone ;)

Christian Saad a écrit :
Hi guys,

since Hudson is currently on vacation, I'm writing this mail because
I'd like to hear your opinions about an issue which is bugging me for
quite some time now. I'm aware that it's quite a controversial
subject, so of course I don't expect that you have the same perception
here :)

Doing some maintenance work on JWT in the last weeks and months, I
currently have ~60 (!) JWT plugins in my workspace. As you know of
course most of them have been added at one time or the other to
provide a new feature or extension of an existing one and have been
categorized accordingly which at least provides some sort of overview.
However, in my opinion we have reached a critical amount which makes
it very hard to maintain (technical&documentation-wise) all existing
plugins and which makes this maintainance also very error-prone. In
addition I think it's very confusing for new users and/or developers
who stumble upon such a huge repository of potentially (un)interesting
plugins and I fear that some may not be willing or able to invest the
time to find what they would need and move on.

Therefore I would like to suggest to think about some possibilities
for refactoring, i.e. deciding where a package-wise distinction inside
a single plugin would be sufficient and preferrable to completely
separate plugins.
Given our limited resources, I would take a really pragmatic approach
taking into account our personal experiences over the last years, e.g.
even go so far ( yes, the final frontier ;) ) as to say why not merge
model&edit code (in my experience in "real life" the model is never
used alone, and even if it is, the disadvantage would only be a few
unneccessary dependencies to emf edit but chances are that it's
present in the target environment anyway).

Ok, so I hope you're not too completely shocked by my reformist ideas
(alas I haven't nailed them yet to the door of the university) and I
would very much like to hear if you have the same perception or if you
don't see a problem at all or if you have different ideas about
solutions.

Regards,
Chris
_______________________________________________
jwt-dev mailing list
jwt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jwt-dev
_______________________________________________
jwt-dev mailing list
jwt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jwt-dev
_______________________________________________
jwt-dev mailing list
jwt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jwt-dev


Back to the top