How to package Nuxeo DM, a Java EE application, in Ubuntu?

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

How to package Nuxeo DM, a Java EE application, in Ubuntu?

sfermigier
Here are some thoughts and questions about how to package a Java EE application so that it can be accepted in partner.

We have packages that have been created a few months ago, and would be really pleased if they could be included in Natty, so your help would be really appreciated.

  S.

--

# Problem statement

We want to package Nuxeo DM (see: www.nuxeo.org), an open source (LGPL) document management solution developed using Java EE, for Ubuntu (and Debian, and other Linux distributions).

We have created packages 6 months ago, that have been perfected with the help of our user community:


We are fully aware that our packages are not built in a way similar to the way a Linux package is usually built (i.e.: ./configure ; make ; make install). But we believe that:

1. We don't have another reasonable choice for how to build these packages.

2. The issues (and discrepencies with the packaging guidelines for Ubuntu or Debian) are not specific to our project, but common to every project that uses Maven (which seems to be the most popular build tool for Java projects these days) as its main build tool, and more generally to every large-scale Java EE application (such as: XWiki, OpenBravo, Compiere, Open-Xchange, OBM...).

Here are the main objection that have been raise for the way we are making our packages:

1. "It looks like they're bundling their own Tomcat.  We haven't allowed
this in the past. Ask that they use our version"

2. "They bundle a TON of JARs, many of which we provide. We may be able to
work with this, but ideally you will want to use our jars where possible."

And our answers:

Point 1.

There are two issues heres:

a. We're not using a "stock" Tomcat distribution, but one "patched" by adding a few jars in the "lib" directory, which means that other applications which would like to use the same tomcat instance could end-up with unexpected behaviour.

b. We're not using any version of Tomcat, but the one that has been proven (by our test suite and manual QA process) to work properly. While it's probable that other versions of Tomcat could also work, we have no proof of it will unless we base our own "standard" distribution on the exact Tomcat version that's shipped with Ubuntu.

Point 2.

It's possible that some of the jars contained in Nuxeo DM are also provided as Ubuntu packages. We could spend more time trying to come up with a list of matches, but I think it is highly improbable that a great many of them would exactly match the version of the jars we provide in Nuxeo.

The problem is, we run our quality assurance process against and have our customers running on an application build from a list of very specific versions of these jars. It is possible that changing a jar version for another won't change anything in the application behavior, but we can't guarantee it, and our experience is that it is not just a theoretical issue, but something we run into every time we upgrade the version of one of our dependencies.

# Actions taken and issues encountered

We could do the following:

Issue 1.: We could make a script that would setup a separate tomcat instance based on the stock Ubuntu Tomcat package, and use it as the basis for the Nuxeo DM package.

BUT: this doesn't solve the fact that we would need to align our own development on the exact Tomcat version you are using, and support different Tomcat version each time you change it for a new Ubuntu release (at the moment, the same Nuxeo DM package can be used on several Ubuntu and Debian releases, as long as Java 6 is installed).

Issue 2.: We could create a .deb package for each of the 250 third-party jars that are contained in Nuxeo DM, at the expense of lot of time and additional complexity, but what would it gain? Each jar wold have to be named with its exact version number, because, and once again this is our experience, we don't expect that changing jar X.Y.Z to X.Y.Z' will never ever end up in some breakage somewhere. So eventually this won't probably gain us anything, because each of the Java EE application you could eventually want to package will have slightly different versions for all the jars that they have validated, and so you will end up with mutiple versions of the jars in a system that has several of these applications installed (or several copies of the jars in the packages repositories).

We understand that this looks counter-intuitive to the Linux / C / C++ developers, but our experience with open source Java development is that you have to be very careful about changing the version of your librairies.     

So, for both of the issues that have been raised, solutions exist that could address the lack of "purity" of our packages, but don't gain anything meaningful for the users (and probably add more complexity), while costing us a great deal of time, effort, and adding additionnal complexity and risk to our own development process (and probably yours too - do you really want to add 250 news packages to the Ubuntu distribution just for 1 application?).

# Asking for a solution to the community if none are found

Maybe you have solutions for the two points that have been raised. Maybe when packaging one of the other Java EE applications that I have mentionned (or some others) someone has found a better way to do it.

But at this point, the *only Java EE package* I see in your partner repository in openbravo-erp (http://archive.canonical.com/ubuntu/pool/partner/o/openbravo-erp/). Looking at the .deb, I seen they are embedding 92 jars:

darkstar% dpkg --contents openbravo-erp_2.50MP-25EU1-1maverick1_all.deb > /tmp/openbravo-erp.contents
darkstar% egrep "\.jar$" /tmp/openbravo-erp.contents| wc -w
   92

This is less than us (more than 250 third-party jars + 187 of our owns), but this is just because their application is less complex than ours, not because they are packaging it differently.

-- 
Stefane Fermigier, Founder and Chairman, Nuxeo
Open Source, Java EE based, Enterprise Content Management (ECM)
http://www.nuxeo.com/ - +33 1 40 33 79 87 - http://twitter.com/sfermigier
Join the Nuxeo Group on LinkedIn: http://linkedin.com/groups?gid=43314
New Nuxeo release: http://nuxeo.com/dm54
"There's no such thing as can't. You always have a choice."


--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to package Nuxeo DM, a Java EE application, in Ubuntu?

Matt Zimmerman-2
On Fri, Jan 28, 2011 at 12:06:14AM +0100, Stefane Fermigier wrote:

> Here are some thoughts and questions about how to package a Java EE application so that it can be accepted in partner.
>
> We have packages that have been created a few months ago, and would be really pleased if they could be included in Natty, so your help would be really appreciated.
>
>   S.
>
> --
>
> # Problem statement
>
> We want to package Nuxeo DM (see: www.nuxeo.org), an open source (LGPL) document management solution developed using Java EE, for Ubuntu (and Debian, and other Linux distributions).
>
> We have created packages 6 months ago, that have been perfected with the help of our user community:
>
> http://blogs.nuxeo.com/fermigier/2010/07/debian-and-ubuntu-packages-available-for-nuxeo-dm-532-stable.html
> http://blogs.nuxeo.com/fermigier/2010/12/new-beta-nuxeo-dm-package-debian-ubuntu.html
>
> We are fully aware that our packages are not built in a way similar to the way a Linux package is usually built (i.e.: ./configure ; make ; make install). But we believe that:
>
> 1. We don't have another reasonable choice for how to build these packages.
>
> 2. The issues (and discrepencies with the packaging guidelines for Ubuntu or Debian) are not specific to our project, but common to every project that uses Maven (which seems to be the most popular build tool for Java projects these days) as its main build tool, and more generally to every large-scale Java EE application (such as: XWiki, OpenBravo, Compiere, Open-Xchange, OBM...).

Thanks for getting in contact with us and taking the time to explain your
situation in detail.

Thierry Carrez did a good job of explaining these issues from the Ubuntu
perspective in
http://fnords.wordpress.com/2010/09/24/the-real-problem-with-java-in-linux-distros/

The status quo is far from ideal, and we're interested in finding ways to
make it more acceptable for both developers and distribution integrators.
Robbie (CCed) is a good person to talk to about next steps.

--
 - mdz

--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to package Nuxeo DM, a Java EE application, in Ubuntu?

Stefano Zacchiroli
In reply to this post by sfermigier
On Fri, Jan 28, 2011 at 12:06:14AM +0100, Stefane Fermigier wrote:
> Here are some thoughts and questions about how to package a Java EE
> application so that it can be accepted in partner.
>
> We have packages that have been created a few months ago, and would be
> really pleased if they could be included in Natty, so your help would
> be really appreciated.

I believe this list should be aware that you've already posed the very
same question on the debian-java mailing list and that there is a quite
rich thread there already:

  http://lists.debian.org/debian-java/2011/02/msg00003.html

While I haven't read the thread in detail, given you're targeting both
Debian and Ubuntu, it seems wise to avoid wasting time in re-discovering
arguments which have already been posted there.

Hope this helps,
Cheers.
--
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Quando anche i santi ti voltano le spalle, |  .  |. I've fans everywhere
ti resta John Fante -- V. Capossela .......| ..: |.......... -- C. Adams

--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel

signature.asc (197 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: How to package Nuxeo DM, a Java EE application, in Ubuntu?

Scott Howard-5
On Fri, Mar 11, 2011 at 12:31 PM, Stefano Zacchiroli <[hidden email]> wrote:

> On Fri, Jan 28, 2011 at 12:06:14AM +0100, Stefane Fermigier wrote:
>> Here are some thoughts and questions about how to package a Java EE
>> application so that it can be accepted in partner.
>>
>> We have packages that have been created a few months ago, and would be
>> really pleased if they could be included in Natty, so your help would
>> be really appreciated.
>
> I believe this list should be aware that you've already posed the very
> same question on the debian-java mailing list and that there is a quite
> rich thread there already:
>
>  http://lists.debian.org/debian-java/2011/02/msg00003.html
>
> While I haven't read the thread in detail, given you're targeting both
> Debian and Ubuntu, it seems wise to avoid wasting time in re-discovering
> arguments which have already been posted there.

I've been following these threads in both the ubuntu and debian lists
- I just want to prevent any further discussion that will be
off-topic. Stefane Fermigier is specifically asking for help getting
into the Ubuntu Partner repository. They do not have the same
requirements as Debian Main as they already have another java
application with several hundred pre-packaged .jars included in it
(Stefane gave the reference in a previous email).

I believe he wants to avoid the whole java library packaging mess [1]
by getting directly into Ubuntu Partner.

I know nothing of the Ubuntu Partner repository itself, I just wanted
to prevent duplicating the two previous threads on debian-java and
ubuntu-devel. This thread should probably focus on getting into the
Ubuntu Partner repository.

Also, there was a Google Summer of Code idea to help fix the java mess
that was inspired by the debian-java thread. If any student or someone
from Ubuntu is interested, a brief outline of the concept can be found
here [2].

[1] http://fnords.wordpress.com/2010/09/24/the-real-problem-with-java-in-linux-distros/
[2] http://lists.debian.org/debian-java/2011/02/msg00058.html

Cheers,
Scott
(DD/ubuntu contrib devel)

--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to package Nuxeo DM, a Java EE application, in Ubuntu?

Scott Kitterman-3

On Friday, March 11, 2011 01:31:51 pm Scott Howard wrote:

> I've been following these threads in both the ubuntu and debian lists

> - I just want to prevent any further discussion that will be

> off-topic. Stefane Fermigier is specifically asking for help getting

> into the Ubuntu Partner repository. They do not have the same

> requirements as Debian Main as they already have another java

> application with several hundred pre-packaged .jars included in it

> (Stefane gave the reference in a previous email).

It's not really Ubuntu's Partner repository. It's Canonical's. In that case questions are off topic on both of these lists.

Scott K


--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to package Nuxeo DM, a Java EE application, in Ubuntu?

Robbie Williamson-3
On 03/11/2011 12:55 PM, Scott Kitterman wrote:

> On Friday, March 11, 2011 01:31:51 pm Scott Howard wrote:
>
>> I've been following these threads in both the ubuntu and debian lists
>
>> - I just want to prevent any further discussion that will be
>
>> off-topic. Stefane Fermigier is specifically asking for help getting
>
>> into the Ubuntu Partner repository. They do not have the same
>
>> requirements as Debian Main as they already have another java
>
>> application with several hundred pre-packaged .jars included in it
>
>> (Stefane gave the reference in a previous email).
>
> It's not really Ubuntu's Partner repository. It's Canonical's. In that
> case questions are off topic on both of these lists.
>
> Scott K
>
Agreed.  I will forward this on to the appropriate people within
Canonical. If your aim is to get the package into Ubuntu's archives
(i.e. main or universe), then I urge you to get it into Debian first.
This would ensure both distros stay in synch.

-Robbie

--
Robbie Williamson <[hidden email]>
Canonical USA

"You can't be lucky all the time, but you can be smart everyday"
 -Mos Def

"Arrogance is thinking you are better than everyone else, while
Confidence is knowing no one else is better than you." -Me ;)


--
ubuntu-devel mailing list
[hidden email]
Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel