Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [rt-pmc] Re: [jetty-dev] jetty dependency's and 'releasing' within eclipse

I'll respond to all the various points in one go. (at least I hope I get them all)

First, I and I believe the rest of the RT PMC are sympathetic to the situation and quite appreciate that the Jetty team is taking the time to work out a solution. Thanks!

It might help to talk about code as different types.

1) source you write at Eclipse
This is well understood by all I think

2) source you didn't write but is at eclipse for whatever reason
This has to be IP cleared and is essentially adopted and becomes like #1

3) binary that you get from somewhere else and reship at eclipse
This has to be IP cleared

4) binary that you expect users to get somewhere else
This dependency needs to be classified as either a works with or a hard dependency. In the former, most of the time you are good. In the latter case either things are good or you need an exemption (e.g., gcc fails the test but is the only reasonable c compiler).

5) binary/source that you compile against but do not ship from eclipse
This is like the Java class libs. not sure anyone cares about this other than as it pertains to #4

Greg's characterization below gives

a) ship the stuff that jetty@eclipse produces = #1 and perhaps #2. great b) ship all of what people typically consume that is "Jetty". Desirable but frankly I don't think this is feasible from an IP perspective nor is it particularly required at this point.
c) ship jetty@eclipse plus things like JSP = #1 and (#2 or #3)

Personally I am after c). It is clear that Eclipse needs JSP support and there may be a few other little things that make sense. In the JSP case in particula, it would be goofy if we have Jetty@Eclipse and yet continue to ship the JSP support from Tomcat. Especially is if it deemed inferior. So how do we get there. I really don't know how big a mess this is from an IP point of view but I'm willing to back putting the "right" JSP support code in a CQ and starting in on it. We should work with the IP team to understand if it is better to do #2 or #3 but frankly, as a consumer, I don't really care. As long as we can get it from Eclipse.org and it has been IP approved, we're golden.

Now, the build topic.  I have three main concerns and one non-concern.

0) It should not matter where you get stuff that you compile against as long as the same or equivalent content is available to others in the community so they too can participate in the project (see form #5 above). So you can fetch from maven central, host your own maven repo, ... doesn't matter. However!

1) We must ensure that the code (and I mean the actual bytes, not just "yeah, someone said it was the same version") you actually *ship* from Eclipse servers is IP cleared. Here the concern is not what you compile against etc but what you ship off eclipse.org. The concern is where did the bytes come from, when and are do they match what was cleared. AFAICT the only way to deal with that is to have a copy on eclipse.org and use that. Relying on the maven central repo feels problematic in general. There may be particular cases where exactly the *bundle* (you are shipping bundles right?!) you need and have cleared is there and you are able to spec in your Maven metadata the particular version but that does not seem to be the norm today.

2) Related is whether or not the thing being shipped off eclipse.org has been tested in the configuration shipped (i.e., the set of bytes shipped has been tested together). If your build gets stuff from all over, compiles, tests and then ends up shipping with some JARs (oops, bundles) replaced, you are shipping untested configurations.

3) No eclipse project is an island. For example, to have Jetty in Helios we would like to have some level of coordination between the third party bundles used by Jetty and those used by the rest of Eclipse. If Jetty is getting and shipping/expecting code/bundles from various other places it is unlikely that these will match up with the rest of Eclipse and there will be issues.

Good news is that I think there are reasonable paths on all these fronts.

Having a maven repo at eclipse.org is trivial. Maven repos are just disk layouts. When you get some code approved for use in Jetty, put it in the right spot on your part of eclipse.org and away you go. (hmmm, I could be naive about that but it "should" work no?). It should be easy to have the Orbit build spit out a maven repo format.

This effectively addresses all issues no?

Jeff

On 14-Jul-09, at 9:59 PM, Greg Wilkins wrote:

All,


I'd just like to follow up on Jesse's email with a little more
information.

It may be convenient to think of jetty in two ways.

Firstly there is the Jetty as a code base which includes the
core HTTP server/client and a servlet container.  This core
is available as jars either from the central maven repository
or from the eclipse update site that we build.


Secondly there is Jetty as an application server, which includes
the jetty code base, but is bundled with other third party
code into something that can be downloaded and used with
"the usual" services associated with an application server.
These include JSP engine, clustering support, tools integrations,
transaction managers, JDBC drivers etc.



So for the core jetty code base, we are close to being OK.
We have CQs (or are getting CQs) for all of our dependencies
and there are no really difficult ones in there (other than
some standard APIs that have not yet been actually released
yet).    The only real issue here is that we consume these
dependencies from the central maven store and not from
eclipse servers.

If eclispe could provided these CQ'd dependencies in a
maven repository, then jetty could consume them from there.
However, if these jars are processed into eclipse bundles,
then they will need to be identified slightly differently
to the artefacts from the central maven repository (perhaps
with an -eclipse classifier).

I think this is most necessary for the dependencies of
the core code base: servlet-api, slf4j etc.



It is the application server download that is the difficult
one.   It would be considerable effort to IP clear all
the common inclusions in such a bundle: JSP, clustering,
JTA etc.

So I see we have several choices:

a) Don't make such a download available from eclipse.  Only
   the jetty components would be available.  For the
   application server style download, you would either
   need to get additional components or an optioned up
   download from codehaus.   This is the path that we
   originally intended to take when we asked to move
   the core to eclipse.

b) Put the full application server dependencies through
   the standard eclipse IP process and eventually produce
   an IP cleared application server.     While possibly
   the "correct" route, this may be confusing as it could
   be seen as THE eclipse application server, even though
   it is not using OSGi.  It would also raise questions
   about certification of the server as either a servlet
   container, or JEE container etc.


c) Take a pragmatic middle ground.    JSP is the key
   additional dependency that many users would like in
   both app server and embedded environments.   Find
   some way to IP clear the bundling of the JSP component
   with the Jetty download so that many/most users would
   be content with just that.   For clustering, JTA, etc.
   users would still be directed to codehaus for those
   additional modules - but there could be ongoing efforts
   to IP clear them and bring the code to eclipse.


We are continuing to work towards a)
But we have received feedback from eclipse members that
they really would like JSP to be included - so that is
suggesting we should aim for c)
If anybody wants b), then I think significant extra
resources need to be found to work on that.

cheers


_______________________________________________
rt-pmc mailing list
rt-pmc@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/rt-pmc



Back to the top