You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cassandra.apache.org by Eric Evans <ee...@rackspace.com> on 2010/04/09 16:26:05 UTC

Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

On Fri, 2010-04-09 at 08:52 -0500, Jonathan Ellis wrote:
> On Fri, Apr 9, 2010 at 8:21 AM, Gary Dusbabek <gd...@gmail.com> wrote:
> > Cassandra is a community of volunteers.  If someone is willing to take
> > that half-hour and make Cassandra a mvn-friendly place and maintain it
> > whilst moving forward, I say let it happen.  Make it easy for us to
> > package a release and push it to a repo.
> >
> > Nobody has stepped up to do this though.  We had a pom in trunk for
> > quite a while.  None of the developers used it, and therefore had no
> > motivation to maintain it.
> 
> It's still there in contrib/maven, btw.  No doubt somewhat bit-rotted.

Required reading for anyone wishing to contribute maven support:

https://issues.apache.org/jira/browse/CASSANDRA-850

The highlights:

You either (a) have to find a way to create binary artifacts that
contain all of the necessary libs while satisfying their license
requirements, or (b) turn the tide of public opinion and build consensus
that using maven to retrieve the dependencies post-download is OK.

I wish you the best of luck (seriously).

-- 
Eric Evans
eevans@rackspace.com


Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

Posted by Hannes Schmidt <ha...@eyealike.com>.
On Fri, Apr 9, 2010 at 10:41 AM, Jonathan Ellis <jb...@gmail.com> wrote:

> On Fri, Apr 9, 2010 at 12:11 PM, Hannes Schmidt <ha...@eyealike.com>
> wrote:
> > Well, Eric, let's start with you: Would you be in support of moving
> > Cassandra to a Maven build and abandoning Ant/Ivy or at least have the
> Ant
> > build deploy the necessary artifacts to the Maven repo?
>
> It would be more productive if you were to read issue 850 that Eric
> has linked twice before asking questions like this.
>

Maybe I'm blind but where does that issue answer my questions to Eric?

Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

Posted by Jonathan Ellis <jb...@gmail.com>.
On Fri, Apr 9, 2010 at 12:11 PM, Hannes Schmidt <ha...@eyealike.com> wrote:
> Well, Eric, let's start with you: Would you be in support of moving
> Cassandra to a Maven build and abandoning Ant/Ivy or at least have the Ant
> build deploy the necessary artifacts to the Maven repo?

It would be more productive if you were to read issue 850 that Eric
has linked twice before asking questions like this.

Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

Posted by Ryan Daum <ry...@thimbleware.com>.
Properly constructed Maven artifacts have to declare their license in their
POM, and there are maven plugins for checking license conformity.

R

On Fri, Apr 9, 2010 at 2:25 PM, Eric Evans <ee...@rackspace.com> wrote:

> On Fri, 2010-04-09 at 10:11 -0700, Hannes Schmidt wrote:
> > > https://issues.apache.org/jira/browse/CASSANDRA-850
> > >
> > > The highlights:
> > >
> > > You either (a) have to find a way to create binary artifacts that
> > > contain all of the necessary libs while satisfying their license
> > > requirements, or (b) turn the tide of public opinion and build
> > consensus
> > > that using maven to retrieve the dependencies post-download is OK.
> > >
> > >
> > The Maven build should produce as it's main artifact a slim jar that
> > contains only the classes and resources that are derived from the
> > sources
> > inside the project. Like every Maven-produced jar artifact, the slim
> > jar
> > would contain the pom.xml which would declare the slim jar's
> > dependencies.
> > The slim jar is for people who want to use Cassandra in a Maven
> > project.
> > They would simply declare a dependency on the slim jar in their
> > project and
> > Maven would pull that in along with the transitive dependencies, i.e.
> > the
> > slim jar's dependencies (for this to work, all of those dependencies
> > would
> > have to be available through a public repository which is what this
> > issue is
> > about).
> >
> > The Maven build would also produce an attached (Maven lingo) fat jar.
> > This
> > is a JAR that contains all classes and resources of Cassandra and its
> > dependencies rolled into a single JAR that's executable via "java
> > -jar".
> > This is also the artifact that the Download section would link to.
>
> As CASSANDRA-850 covers (and I summarized separately), we are required
> to conform to the individual license requirements of these third-party
> dependencies if we are to legally redistribute them. These requirements
> vary from license to license, and TTBOMK, there is no deterministic way
> to identify a license (including any additional provisions) and generate
> compliant artifacts.
>
> > Optionally, and as you already suggested, the client- or API-specific
> > stuff
> > could be factored out into a separate project.
> >
> >
> > > I wish you the best of luck (seriously).
> > >
> > >
> > Well, Eric, let's start with you: Would you be in support of moving
> > Cassandra to a Maven build and abandoning Ant/Ivy or at least have the
> > Ant
> > build deploy the necessary artifacts to the Maven repo?
>
> I don't like Maven either, but you aren't the first person to tell me I
> have it all Wrong. If someone were to do the work and demonstrably prove
> that there is a Better Way, as opposed to just telling me what I should
> do, I'd be open to a change.
>
> --
> Eric Evans
> eevans@rackspace.com
>
>

Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

Posted by Eric Evans <ee...@rackspace.com>.
On Fri, 2010-04-09 at 10:11 -0700, Hannes Schmidt wrote:
> > https://issues.apache.org/jira/browse/CASSANDRA-850
> >
> > The highlights:
> >
> > You either (a) have to find a way to create binary artifacts that
> > contain all of the necessary libs while satisfying their license
> > requirements, or (b) turn the tide of public opinion and build
> consensus
> > that using maven to retrieve the dependencies post-download is OK.
> >
> >
> The Maven build should produce as it's main artifact a slim jar that
> contains only the classes and resources that are derived from the
> sources
> inside the project. Like every Maven-produced jar artifact, the slim
> jar
> would contain the pom.xml which would declare the slim jar's
> dependencies.
> The slim jar is for people who want to use Cassandra in a Maven
> project.
> They would simply declare a dependency on the slim jar in their
> project and
> Maven would pull that in along with the transitive dependencies, i.e.
> the
> slim jar's dependencies (for this to work, all of those dependencies
> would
> have to be available through a public repository which is what this
> issue is
> about).
> 
> The Maven build would also produce an attached (Maven lingo) fat jar.
> This
> is a JAR that contains all classes and resources of Cassandra and its
> dependencies rolled into a single JAR that's executable via "java
> -jar".
> This is also the artifact that the Download section would link to.

As CASSANDRA-850 covers (and I summarized separately), we are required
to conform to the individual license requirements of these third-party
dependencies if we are to legally redistribute them. These requirements
vary from license to license, and TTBOMK, there is no deterministic way
to identify a license (including any additional provisions) and generate
compliant artifacts.

> Optionally, and as you already suggested, the client- or API-specific
> stuff
> could be factored out into a separate project.
> 
> 
> > I wish you the best of luck (seriously).
> >
> >
> Well, Eric, let's start with you: Would you be in support of moving
> Cassandra to a Maven build and abandoning Ant/Ivy or at least have the
> Ant
> build deploy the necessary artifacts to the Maven repo? 

I don't like Maven either, but you aren't the first person to tell me I
have it all Wrong. If someone were to do the work and demonstrably prove
that there is a Better Way, as opposed to just telling me what I should
do, I'd be open to a change.

-- 
Eric Evans
eevans@rackspace.com


Re: Thoughts on issue 697 (Mitigate unpublished dependencies when using Cassandra with Maven)

Posted by Hannes Schmidt <ha...@eyealike.com>.
On Fri, Apr 9, 2010 at 7:26 AM, Eric Evans <ee...@rackspace.com> wrote:

> On Fri, 2010-04-09 at 08:52 -0500, Jonathan Ellis wrote:
> > On Fri, Apr 9, 2010 at 8:21 AM, Gary Dusbabek <gd...@gmail.com>
> wrote:
> > > Cassandra is a community of volunteers.  If someone is willing to take
> > > that half-hour and make Cassandra a mvn-friendly place and maintain it
> > > whilst moving forward, I say let it happen.  Make it easy for us to
> > > package a release and push it to a repo.
> > >
> > > Nobody has stepped up to do this though.  We had a pom in trunk for
> > > quite a while.  None of the developers used it, and therefore had no
> > > motivation to maintain it.
> >
> > It's still there in contrib/maven, btw.  No doubt somewhat bit-rotted.
>
> Required reading for anyone wishing to contribute maven support:
>
> https://issues.apache.org/jira/browse/CASSANDRA-850
>
> The highlights:
>
> You either (a) have to find a way to create binary artifacts that
> contain all of the necessary libs while satisfying their license
> requirements, or (b) turn the tide of public opinion and build consensus
> that using maven to retrieve the dependencies post-download is OK.
>
>
The Maven build should produce as it's main artifact a slim jar that
contains only the classes and resources that are derived from the sources
inside the project. Like every Maven-produced jar artifact, the slim jar
would contain the pom.xml which would declare the slim jar's dependencies.
The slim jar is for people who want to use Cassandra in a Maven project.
They would simply declare a dependency on the slim jar in their project and
Maven would pull that in along with the transitive dependencies, i.e. the
slim jar's dependencies (for this to work, all of those dependencies would
have to be available through a public repository which is what this issue is
about).

The Maven build would also produce an attached (Maven lingo) fat jar. This
is a JAR that contains all classes and resources of Cassandra and its
dependencies rolled into a single JAR that's executable via "java -jar".
This is also the artifact that the Download section would link to.

Optionally, and as you already suggested, the client- or API-specific stuff
could be factored out into a separate project.


> I wish you the best of luck (seriously).
>
>
Well, Eric, let's start with you: Would you be in support of moving
Cassandra to a Maven build and abandoning Ant/Ivy or at least have the Ant
build deploy the necessary artifacts to the Maven repo?


> --
> Eric Evans
> eevans@rackspace.com
>
>