Re: Maven and Fedora

2006-12-14 Thread Rafael Schloming
Just to clarify the building from source situation, the real requirement 
is that if we were in a concrete bunker somewhere with no connection to 
the outside world, and all we had was an installed fedora box + all the 
source rpms for fedora, we should be able to rebuild the entire OS.


Note that this doesn't require building everything from source all in 
one go. That's impossible since there are cyclic dependencies, e.g. gcc 
is used to build itself. It *does* require that we can completely turn 
off all maven's attempts at remote access and preferably turn them into 
nice error messages. Now I'm not sure how this translates into the 
building one level from source vs building all levels from source 
terminology, I would phrase it as we need to build all levels from 
source, but we can build them one level at a time. This strict offline 
bootstrapping requirement is necessary for producing consistent OS builds.


This does make it clear that a self contained binary repository will 
work, as long as the self contained binary repository is part of every 
fedora install. The only issue there is one of JPP vs maven conventions 
for jar locations.


--Rafael

Carl Trieloff wrote:

Jason van Zyl wrote:


On 13 Dec 06, at 10:26 AM 13 Dec 06, Carl Trieloff wrote:



I don't see that there is a consistent view yet on this. It would be 
nice to get to a conclusion on whether the Maven community would like 
to work with the downstream distros teams so that we can provide a 
consistent and good experience. Is there any more information that is 
needed to get to a view point, and if so how can I help?




If the distros works with us to provide something that is familiar to 
our current users, to which our documentation, practices, and current 
body of user knowledge apply then I don't think anyone would be 
opposed here. So that means:


- Using an installation layout that is consistent with our current setup


This seems reasonable - we do need to work with jpackage so there might 
be some items that come from that. If there are maybe we can see if we 
can do it in a consistent way that can work for mainline also.



- Using the Maven repository as the source for satisfying dependencies 
for development work


That was my assumption and if we can get all the items we needed merged 
in a way maven is happy with upstream there would be no reason to do 
anything else


- Maven running with a standard JDK and not being compiled with GJC or 
anything weird like that. With Java being GPL now that shouldn't be a 
problem


There is a timeline issue with this. If we complete the Maven work 
before JDK (GPL) is available then we might need to prove we can build 
with GCJ, or build with mainline of the GPL version which will be ahead 
1.6. Don't really know if worth debating now as GPL JDK is also a moving 
target and we should eval once we get closer to completing the other 
items that need to be done.



A couple questions that weren't really answered were:
- How far into the graph do you need to build from sources

- All the way, or we can limit some modules and add them incrementally, 
or maybe if the user needs them the we can

download them when mvn is run much like anaconda.


- Would a self-contained Maven repository with the binary dependencies 
work and then build Maven itself from source or do you want to walk back 
down the entire graph?


- All dependencies that are shipped in the distro or used to build the 
distro need to be able to be built from source.





Suggestion:

Would a good starting point be to maybe be to create a branch where some 
guys can work, and then we work item by item with the maven community. 
once we get an issue out the way, and agreed by maven team we merge the 
branch and start the next item?



Carl.






-
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]



Re: Maven and Fedora

2006-12-14 Thread Rafael Schloming

Jason van Zyl wrote:


On 14 Dec 06, at 10:30 AM 14 Dec 06, Rafael Schloming wrote:

Just to clarify the building from source situation, the real 
requirement is that if we were in a concrete bunker somewhere with no 
connection to the outside world, and all we had was an installed 
fedora box + all the source rpms for fedora, we should be able to 
rebuild the entire OS.




Sure, but for Maven usage a JDK + a tarball of Maven in all practical 
instances is enough for someone to get work done.


I'm not sure what this has to do with my post. I'm just trying to 
explain fedora's bootstrapping requirements. Besides, even if a JDK + a 
tarball is enough to run maven itself, this doesn't really solve the 
problem maven users face when trying to distribute their software on 
fedora or any other OS for that matter. IMHO the key problem to solve is 
how to make maven builds produce software that is integrated with the 
target OS. Once we've done this then integrating maven with the target 
OS should be trivial since maven can build itself.


This issue is really broader than just maven. It seems the defacto java 
packaging standard is to simply distribute a huge archive that includes 
every dependency, quite reminiscent of windows DLL hell. This may well 
be the only option available for windows, but for OSes like fedora where 
things like automatic dependency management, upgrades, and security 
fixes are the norm, this practice just doesn't scale.


--Rafael


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



Re: Maven and Fedora

2006-12-07 Thread Rafael Schloming



Jason van Zyl wrote:


On 6 Dec 06, at 3:02 PM 6 Dec 06, Carl Trieloff wrote:


John Casey wrote:


Let's start with: What are the requirements?

Regards,

John



yes that is good - I would not see the patches set as something to 
commit as is but a prototype to see if it could
be done. we now think it can - and would do it in a way that works for 
maven.


The key parts are:

-  boot strap via build from source


Not by default, this is Java and we are happy to use binary JARs. If you 
want to attempt to do this knock yourself. I don't see any benefit in 
complicating our bootstrap to accommodate this.



-  OS boot strap-able, with no network, this is more than just mvn -o
-  meet fedora package guidelines

Can break those our one by one, unless Deepak or Rafi fill them first.



I just don't see the value in this for Maven users. Carl what value do 
you see as a real benefit to Maven users who work on Redhat?


There are three distinct use cases for maven playing nice with distros.

1. For a standard distro install without devel tools there may be 
packages that maven creates in distro format (RPM, dep, etc). Note that 
the maven RPM would not be used by end users at all in this scenario.


2. For a development distro install, i.e. installing devel packages 
there's a use case for maven packaged in distro format since distro 
users like to have the same install experience for all their software, 
i.e. they'd rather do yum install maven than download and install 
manually.


3. For scenario (1) and (2) distro builders need to be able to get maven 
in distro format so that they can bootstrap their distro.


Strictly speaking if you don't want to allow (2) in order to control the 
maven experience for end users we could package a special form of maven 
that is only available to distro builders to satisfy scenario (1). I 
think this will actually end up creating *more* flavors of maven than if 
we work together to make maven play nice with distros in general. In the 
latter case you can shape what an OS level maven install looks like. If 
you refuse to work with distros then they will inevitably be forced to 
figure out on their own how to get maven to build packages for them.


--Rafael


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



Re: Maven and Fedora

2006-12-07 Thread Rafael Schloming



Jason van Zyl wrote:
I don't remember a specific instance, but I'm sure there are some who 
would like them. Either way, we need to consider Fedora as a consumer 
of Maven and that they know what their users want, which apparently is 
Maven bundled with Fedora.


I doubt they have asked but I would be pleasantly surprised if the 
impetus was actually Maven users and not simply a desire to package 
Maven up on Redhat.


There are multiple projects that we develop on that use maven and need 
to go into distros. FWIW this makes use maven users that would really 
like to see maven work well with distros.


We also agree that usability is the key objective. That's exactly why we 
want to work out a solution and not distribute a modified version of 
maven just to satisfy our bootstrapping requirements.


--Rafael

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



Re: Maven and Fedora

2006-12-06 Thread Rafael Schloming



John Casey wrote:

 2: Ensure that projects can build against a single version of a
dependency, rather than multiple.

This bothers me the most.   If my project's pom.xml says I depend on foo
version 1.1.3, it better be built and installed with foo version 
1.1.3,
not foo version 1.2 or foo version 1.1.5 of foo version 2.0.
If I

wanted to say any 1.x version, I would have used a version range in my
pom.

If redhat or rpm or whatever cannot install multiple versions of a
resource,
that seems like a deficiency in those and I don't think maven should go
out
of it's way to work around that.   Maven's dependency management is
definitely one of it's strong point.   That type of change bypasses 
all of

that.


This is a sticking point for me, too, actually. It might be okay to drop 
the

versions off of a build during the distro-building process, because you've
got other systems managing compatibility of versions in the larger
context...but if a user gets to do that sort of thing, it's going to be a
major support problem for us, and it's counter to a lot of what we're 
trying

to do with Maven in the first place. In the first case, it's more like an
alternative version-conflict resolution step...in the second, it's 
hijacking

Maven's notion of artifact identity and build reproducibility.


I think you touch on a key point here. Building in the context of 
putting together a distribution is very different from an end user 
downloading and building something for themselves.


A distribution is trying to provide a consistent set of well integrated 
packages. In this context you want to avoid multiple versions of a 
package if you can because 99% of users don't care and in fact will be 
confused if they have to choose between two versions of the same thing. 
Not to mention security patches become nearly impossible if you need to 
keep around any old version of a package. There are cases where 
installing multiple versions makes sense and RPM can do that if you 
want, but for these reasons most distros try to avoid it and it's not 
uncommon for them to build against a slightly different version of 
dependencies than upstream developers use in order to eliminate multiple 
package versions.


Of course all this is in stark contrast with an end user downloading a 
source tarball directly and building it himself. In this scenario the 
user may want to duplicate as closely as possible the build conditions 
that the upstream developers use themselves and so he would want 
precisely the same version that upstream is using.


So I see two distinct use cases for building software:

1. Precisely reproducing upstream builds. Maven is already an excellent 
tool for this.


2. Building software to integrate with a pre-existing environment. This 
is what fedora or any other distro needs, and right now it's not so easy 
with maven.


--Rafael


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



Re: Maven and Fedora

2006-12-06 Thread Rafael Schloming

John Casey wrote:

All of this makes sense, until you consider that the user might start using
the Fedora-provided version of Maven for his own software builds. Then you
have a possibility of letting him produce a very messy build that doesn't
use artifact versions. If the possibility is there, it will be [ab]used.


Isn't this just a matter of choosing the right defaults? If by default 
you use artifact versions then people won't get a messy build unless 
they specifically ask for it, and at that point they should expect the 
possibility of some surprises. Distros certainly expect to take on the 
burden of integration testing as soon as the depart from upstream build 
procedures.


--Rafael



-john

On 12/6/06, Rafael Schloming [EMAIL PROTECTED] wrote:




John Casey wrote:
  2: Ensure that projects can build against a single version of a
 dependency, rather than multiple.

 This bothers me the most.   If my project's pom.xml says I depend on
foo
 version 1.1.3, it better be built and installed with foo version
 1.1.3,
 not foo version 1.2 or foo version 1.1.5 of foo version 2.0.
 If I
 wanted to say any 1.x version, I would have used a version range in
my
 pom.

 If redhat or rpm or whatever cannot install multiple versions of a
 resource,
 that seems like a deficiency in those and I don't think maven 
should go

 out
 of it's way to work around that.   Maven's dependency management is
 definitely one of it's strong point.   That type of change bypasses
 all of
 that.


 This is a sticking point for me, too, actually. It might be okay to 
drop

 the
 versions off of a build during the distro-building process, because
you've
 got other systems managing compatibility of versions in the larger
 context...but if a user gets to do that sort of thing, it's going to be
a
 major support problem for us, and it's counter to a lot of what we're
 trying
 to do with Maven in the first place. In the first case, it's more like
an
 alternative version-conflict resolution step...in the second, it's
 hijacking
 Maven's notion of artifact identity and build reproducibility.

I think you touch on a key point here. Building in the context of
putting together a distribution is very different from an end user
downloading and building something for themselves.

A distribution is trying to provide a consistent set of well integrated
packages. In this context you want to avoid multiple versions of a
package if you can because 99% of users don't care and in fact will be
confused if they have to choose between two versions of the same thing.
Not to mention security patches become nearly impossible if you need to
keep around any old version of a package. There are cases where
installing multiple versions makes sense and RPM can do that if you
want, but for these reasons most distros try to avoid it and it's not
uncommon for them to build against a slightly different version of
dependencies than upstream developers use in order to eliminate multiple
package versions.

Of course all this is in stark contrast with an end user downloading a
source tarball directly and building it himself. In this scenario the
user may want to duplicate as closely as possible the build conditions
that the upstream developers use themselves and so he would want
precisely the same version that upstream is using.

So I see two distinct use cases for building software:

1. Precisely reproducing upstream builds. Maven is already an excellent
tool for this.

2. Building software to integrate with a pre-existing environment. This
is what fedora or any other distro needs, and right now it's not so easy
with maven.

--Rafael


-
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]



Re: Maven and Fedora

2006-12-06 Thread Rafael Schloming



Rafael Schloming wrote:

John Casey wrote:
All of this makes sense, until you consider that the user might start 
using
the Fedora-provided version of Maven for his own software builds. Then 
you

have a possibility of letting him produce a very messy build that doesn't
use artifact versions. If the possibility is there, it will be [ab]used.


Isn't this just a matter of choosing the right defaults? If by default 
you use artifact versions then people won't get a messy build unless 
they specifically ask for it, and at that point they should expect the 
possibility of some surprises. Distros certainly expect to take on the 
burden of integration testing as soon as the depart from upstream build 
procedures.


--Rafael


Also with Java being GPLed, more and more distros will be using it for 
core distro-related stuff, and they'll be trying to address the same 
maven issues that we're trying to address now. Isn't now the best time 
to work this out so that maven will be ready when distros start 
seriously leaning on Java?


--Rafael


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