On Mar 19, 2007, at 11:45 AM, Frank Budinsky wrote:

Hmm, this seems like an example of where "legal red tape" may be getting
in the way of the "spirit of reuse".

One man's "spirit of reuse" is another's copyright infringement. This is not something to take lightly.

EPL is very specific:
  When the Program is made available in source code form:
    a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.

Distributing EPL code in source form under the Apache License is a violation of these EPL terms. Period.

To distribute this code under the Apache License it needs to be relicensed by the copyright owner. This is not an ongoing contribution as covered by a CCLA but a grant of software written elsewhere to the Foundation. There is a process for this, handled by the Incubator:
  http://incubator.apache.org/ip-clearance/index.html

Another alternative might be to distribute the code in binary form. This would involve making the "necessary change" elsewhere (say at Eclipse), releasing that derivative under the EPL in binary form. Tuscany would then be able to redistribute that code in its binary form. That's a suggestion - you probably want to talk to a lawyer and I would suggest running it past [EMAIL PROTECTED]

Here's the general problem:

1) We need to override a base class' behavior to do something "slightly
different".
2) Looking at the base class, we notice that it requires a tiny change in
the middle of a medium to large sized method. We request a slight
refactoring of the base (EMF) code, which they agree to fix in their next
version.
3) We can't move to the next version yet, so we add a copy of the method (with the change) in our subclass and then proceed as if it was already in
the base class.

Note that we really don't want to do this in the first place because if we later forget to remove the override and EMF fixes some other bug in the
same method, we won't ever pick up the fix. Unfortunately, however, we
have no choice in the short term other than to rewrite the whole method,
but since it's intricately tied to the rest of the base class
implementation it really couldn't be much different. We could rewrite the
entire class, but that completely defeats the purpose of reuse.

Does anybody know how this kind of "necessary copying" is addressed? I
also wonder where is the fine line between providing a "changed method" vs "a copied method with a change" in a subclass? For example, what if one of the copied methods was only 3 lines and we changed one of them? Is that
still a copy?

Thanks,
Frank.

Jeremy Boynes <[EMAIL PROTECTED]> wrote on 03/19/2007 10:27:52 AM:

The original code here is EPL (I assume), which Apache projects can
include in binary form but not in source form. See here for details:
   http://www.apache.org/legal/3party.html

We need to remove the original code from the repo. After that, there
are two options:
* Have the IP owner (I presume this is IBM code) relicense it under
AL and contribute
   via the IP Clearance process
* Do an alternative implementation, best done by someone who has not
seen the Eclipse code

--
Jeremy

On Mar 19, 2007, at 7:01 AM, Frank Budinsky wrote:

We may be talking about two different things here.

Regarding the two EMF classes: BasicExtendedMetaData and
XSDEcoreBuilder,
here's what we did.

Both of these classes (in EMF) create metadata (Types and Properties)
scattered in various places in the classes. Unfortunately, for us,
it does
it using those evil singletons: EcoreFactory.eINSTANCE.createXXX (). We asked the EMF team if they could switch this to the IOC pattern, so we
could inject our SDO specific metadata factories. They said they
would,
but can't before EMF version 2.3 which is Java 5 dependent. Since
we won't
(can't) move to EMF 2.3, our interim solution was to create
subclasses in
Tuscany, BaseSDOExtendedMetaData and BaseSDOXSDEcoreBuilder, which
override the methods that create metadata. The subclasses contain
copies
of the base method, only using a factory instance variable instead
of the
singleton. For example:

class BaseSDOXSDEcoreBuilder extends XSDEcoreBuilder {
    protected EcoreFactory ecoreFactory;

    void someXSDEcoreBuilderMethod() {
        bla ... bla ... bla ...
        // replaced this line: someVariable =
EcoreFactory.eINSTANCE.createXXX();
        someVariable = ecoreFactory.createXXX();
        bla ... bla ... bla ..
    }

    ... etc.

}

So, the question is, what kind of license do we need in these two
Tuscany
classes?

1. Apache.
2. Apache + Eclipse
3. Other?

Currently, I think we just have #1. If anyone can provide guidance on
this, it would be much appreciated.

Thanks,
Frank.


Jeremy Boynes <[EMAIL PROTECTED]> wrote on 03/18/2007 12:33:25 PM:

Those are the ones. You said before that you thought this might be
generated but that you were sure Frank would confirm. He has not done
so.

What seems odd to me is that if this was generated then I would have
expected consistent text to have been produced by the generator.
Instead we have things like:

+ * $Id: BasicExtendedMetaData.java,v 1.26 2006/04/29 11:45:28 emerks
Exp $

and

+ * $Id: XSDEcoreBuilder.java,v 1.71 2006/08/15 16:04:41 emerks Exp $

which correlate directly to headers found in files in the Eclipse
repo. This makes the provenance of the code uncertain which is why we
need clarification of what happened.

--
Jeremy

On Mar 18, 2007, at 8:34 AM, kelvin goodson wrote:

I think you are freferring to commit r513560 .* *There was no code
copied
from eclipse.  The EMF generator puts an eclipse header in to
generated code
by default. That code was simply the result of using that generator
against
our own schemas.

Regards, Kelvin.




On 17/03/07, Jeremy Boynes <[EMAIL PROTECTED]> wrote:

Not to be a party-pooper, but what was the outcome with the code
copied from Eclipse?
--
Jeremy

On Mar 15, 2007, at 8:42 AM, kelvin goodson wrote:

I have posted an SDO Java M3 release candidate here:
http://people.apache.org/~kelvingoodson/sdo_java/M3/RC1/ <http://
people.apache.org/%7Erobbinspg/M3-RC1/<http://people.apache.org/
~robbinspg/M3-RC1/>


Please take a look at this and try it out, so that I can pick up
any errors
quickly and move towards a vote on a proper release in the short
term.

Thanks, Kelvin.


----------------------------------------------------------------- --

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




------------------------------------------------------------------- --
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



-------------------------------------------------------------------- -
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to