[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: List of consultants focusing on Debian packaging for Java?



Hi Antonin,

Am Freitag, den 04.12.2020, 21:46 +0100 schrieb Antonin Delpeuch (lists):
[...]
> It is not clear to me to what extent a Debian packaging project lends
> itself to fixed-term contracting, since maintaining the package will
> require continued work as we release new versions. Perhaps the project
> could include some mentoring of the upstream maintainers to assist with
> the packaging if possible? Or some provision to maintain the package for
> a few years, assuming most of the work lies in the initial packaging?

I had to do a quick analysis for OpenRefine to give you a proper answer. In
short OpenRefine is a complex project with many dependencies. It is most likely
suitable for Debian main and some work to package it for Debian is required. I
have attached the list of dependencies found with mvn dependency:resolve and
mvn dependency:list. 

The initial work will be significant but the reoccurring maintenance is equally
important. It will be easier when the OpenRefine specific dependencies are only
updated when OpenRefine moves to a newer version. If the project depends on a
new dependency, then it must be packaged for Debian as well. Bug reports must
be handled, for instance when we move to OpenJDK 17 and a build-dependency
starts to fail to build from source, then something like that needs to be
addressed even if it is not under the control of the OpenRefine project.

Should OpenRefine move to another build system like Gradle then this would also
require additional work or when the project decided to rewrite Java code in
Kotlin. 


OpenRefine build-depends on Apache Jena and Butterfly and several other
artifacts which haven't been packaged for Debian yet.

com.github.albfernandez:juniversalchardet:jar:2.4.0:compile
com.github.andrewoma.dexx:collection:jar:0.7:compile
com.google.errorprone:error_prone_annotations:jar:2.3.4:compile
com.google.guava:failureaccess:jar:1.0.1:compile 
com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-
guava:compile
com.google.j2objc:j2objc-annotations:jar:1.3:compile
com.metaweb:lessen:jar:1.0:compile 
com.wcohen:com.wcohen.secondstring:jar:0.1:compile 
de.fau.cs.osr.ptk:ptk-common:jar:3.0.8:compile 
de.fau.cs.osr.utils:utils:jar:3.0.8:compile
edu.mit.simile:tracer:jar:1.0:compile
net.rootdev:java-rdfa:jar:0.4.2:compile
org.mozilla:rhino-runtime:jar:1.7.13:compile (not sure if rhino.jar in Debian
is the same)
org.sweble.wikitext:swc-parser-lazy:jar:3.1.9:compile
org.odftoolkit:odfdom-java:jar:0.9.0-
org.openrefine.dependencies:arithcode:jar:1.2:compile
org.openrefine.dependencies:butterfly:jar:1.0.4:compile
org.openrefine.dependencies:opencsv-multichar:jar:2.4:compile
org.openrefine.dependencies:vicino:jar:1.2:compile

The server module depends on Jetty 6 which has been removed from Debian. This
quite ancient version is only available in Debian 8 "Jessie" at the moment. It
is not supported anymore. Here the project needs to depend on a newer,
supported Jetty version or at least depending on the current Jetty 9 version
shouldn't cause any problems. 

The webapp depends on several Javascript files. I believe most of them are
available in Debian but in in any case I recommend to ship the non-minified
versions too because otherwise this is a reason for rejecting the package.

It makes sense to split the whole work into different smaller pieces. I would
package the main module first and all required build-dependencies and after
that try to tackle the server and extensions modules but I don't know if that
is really feasible. I suppose the extensions are important but optional but the
server probably is not. 


I am open to discuss more details offlist and I can prepare a quote or an
estimate. If you or other OpenRefine project members help with packaging,
mentoring would also be possible. You can also just learn Debian packaging the
normal way, for example by reading the documentation linked on 
https://mentors.debian.net/intro-maintainers/ and asking questions on debian-
mentors or debian-java.

Best,

Markus




Dependency list
================

  Compile
  =========
    com.fasterxml.jackson.core:jackson-annotations:jar:2.11.3:compile -- module
    com.fasterxml.jackson.annotation
    com.fasterxml.jackson.core:jackson-core:jar:2.11.3:compile -- module
    com.fasterxml.jackson.core
    com.fasterxml.jackson.core:jackson-databind:jar:2.11.3:compile -- module
    com.fasterxml.jackson.databind

    com.github.albfernandez:juniversalchardet:jar:2.4.0:compile -- module
    com.github.albfernandez.juniversalchardet [auto]
    com.github.andrewoma.dexx:collection:jar:0.7:compile -- module collection
    (auto) com.github.jsonld-java:jsonld-java:jar:0.12.1:compile -- module
    jsonld.java (auto) com.github.virtuald:curvesapi:jar:1.06:compile --
    module curvesapi (auto) com.google.code.findbugs:jsr305:jar:3.0.2:compile
    -- module jsr305 (auto)
    com.google.errorprone:error_prone_annotations:jar:2.3.4:compile -- module
    com.google.errorprone.annotations [auto]
    com.google.guava:failureaccess:jar:1.0.1:compile -- module failureaccess
     (auto) com.google.guava:guava:jar:30.0-jre:compile -- module
    com.google.common [auto]
    com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-
guava:compile
    -- module listenablefuture (auto)
  com.google.j2objc:j2objc-annotations:jar:1.3:compile -- module
   j2objc.annotations (auto)
 com.metaweb:lessen:jar:1.0:compile -- module lessen (auto)
  commons-beanutils:commons-beanutils:jar:1.9.4:compile -- module
  commons.beanutils (auto) commons-cli:commons-cli:jar:1.4:compile -- module
  commons.cli (auto) commons-codec:commons-codec:jar:1.13:compile -- module
  org.apache.commons.codec [auto]
  commons-collections:commons-collections:jar:3.2.2:compile -- module
  commons.collections (auto)
  commons-compress:commons-compress:jar:20050911:compile -- module
  commons.compress (auto) commons-digester:commons-digester:jar:2.1:compile --
  module commons.digester (auto)
  commons-fileupload:commons-fileupload:jar:1.4:compile -- module
  commons.fileupload (auto) commons-io:commons-io:jar:2.8.0:compile -- module
  org.apache.commons.io [auto] commons-lang:commons-lang:jar:2.5:compile --
  module commons.lang (auto) commons-logging:commons-logging:jar:1.2:compile --
  module commons.logging (auto)
  commons-validator:commons-validator:jar:1.7:compile -- module
  commons.validator (auto)
  com.wcohen:com.wcohen.secondstring:jar:0.1:compile -- module
  com.wcohen.secondstring (auto) com.zaxxer:SparseBitSet:jar:1.2:compile --
  module SparseBitSet (auto)
  de.fau.cs.osr.ptk:ptk-common:jar:3.0.8:compile -- module ptk.common (auto)
  de.fau.cs.osr.utils:utils:jar:3.0.8:compile -- module utils (auto)
  edu.mit.simile:tracer:jar:1.0:compile -- module tracer (auto)
  javax.activation:javax.activation-api:jar:1.2.0:compile -- module
  java.activation [auto] javax.xml.bind:jaxb-api:jar:2.3.1:compile -- module
  java.xml.bind joda-time:joda-time:jar:2.10.8:compile -- module
  org.joda.time [auto] log4j:log4j:jar:1.2.16:compile -- module log4j (auto)
  net.rootdev:java-rdfa:jar:0.4.2:compile -- module java.rdfa (auto)
  oauth.signpost:signpost-commonshttp4:jar:2.1.1:compile -- module
  signpost.commonshttp4 (auto) oauth.signpost:signpost-core:jar:2.1.1:compile
  -- module signpost.core (auto)
  org.apache.commons:commons-collections4:jar:4.4:compile -- module
  org.apache.commons.collections4 [auto]
  org.apache.commons:commons-compress:jar:1.20:compile -- module
  org.apache.commons.compress [auto]
  org.apache.commons:commons-csv:jar:1.5:compile -- module commons.csv (auto)
  org.apache.commons:commons-lang3:jar:3.11:compile -- module
  org.apache.commons.lang3 [auto]
  org.apache.commons:commons-math3:jar:3.6.1:compile -- module commons.math3
  (auto) org.apache.commons:commons-text:jar:1.9:compile -- module
  org.apache.commons.text [auto]
  org.apache.httpcomponents:httpclient-cache:jar:4.5.5:compile -- module
  httpclient.cache (auto)
  org.apache.httpcomponents:httpclient:jar:4.5.13:compile -- module
  org.apache.httpcomponents.httpclient [auto]
  org.apache.httpcomponents:httpcore:jar:4.4.14:compile -- module
  org.apache.httpcomponents.httpcore [auto]
  org.apache.jena:jena-arq:jar:3.9.0:compile -- module org.apache.jena.arq
  [auto] org.apache.jena:jena-base:jar:3.9.0:compile -- module
  org.apache.jena.base [auto] org.apache.jena:jena-cmds:jar:3.9.0:compile --
  module org.apache.jena.cmds [auto]
  org.apache.jena:jena-core:jar:3.9.0:compile -- module org.apache.jena.core
  [auto] org.apache.jena:jena-dboe-base:jar:3.9.0:compile -- module
  org.apache.jena.dboe [auto] org.apache.jena:jena-dboe-index:jar:3.9.0:compile
  -- module org.apache.jena.dboe [auto]
  org.apache.jena:jena-dboe-transaction:jar:3.9.0:compile -- module
  org.apache.jena.dboe [auto]
  org.apache.jena:jena-dboe-trans-data:jar:3.9.0:compile -- module
  org.apache.jena.dboe [auto] org.apache.jena:jena-iri:jar:3.9.0:compile --
  module org.apache.jena.iri [auto]
  org.apache.jena:jena-rdfconnection:jar:3.9.0:compile -- module
  org.apache.jena.rdfconnection [auto]
  org.apache.jena:jena-shaded-guava:jar:3.9.0:compile -- module
  org.apache.jena.ext.com.google [auto]
  org.apache.jena:jena-tdb2:jar:3.9.0:compile -- module org.apache.jena.tdb2
  [auto] org.apache.jena:jena-tdb:jar:3.9.0:compile -- module
  org.apache.jena.tdb [auto] org.apache.poi:poi:jar:4.1.2:compile -- module poi
  (auto) org.apache.poi:poi-ooxml:jar:4.1.2:compile -- module poi.ooxml (auto)
  org.apache.poi:poi-ooxml-schemas:jar:4.1.2:compile -- module
  poi.ooxml.schemas (auto) org.apache.thrift:libthrift:jar:0.10.0:compile --
  module libthrift (auto) org.apache.velocity:velocity:jar:1.6.3:compile --
  module velocity (auto) org.apache.xmlbeans:xmlbeans:jar:3.1.0:compile --
  module xmlbeans (auto) org.checkerframework:checker-qual:jar:3.5.0:compile --
  module org.checkerframework.checker.qual [auto]
  org.clojure:clojure:jar:1.10.1:compile -- module clojure (auto)
  org.clojure:core.specs.alpha:jar:0.2.44:compile -- module core.specs.alpha
  (auto) org.clojure:spec.alpha:jar:0.2.176:compile -- module spec.alpha (auto)
  org.jsoup:jsoup:jar:1.13.1:compile -- module org.jsoup [auto]
  org.marc4j:marc4j:jar:2.9.1:compile -- module marc4j (auto)
  org.slf4j:jcl-over-slf4j:jar:1.7.25:compile -- module jcl.over.slf4j (auto)
  org.slf4j:slf4j-api:jar:1.7.30:compile -- module org.slf4j [auto]
  org.slf4j:slf4j-log4j12:jar:1.7.30:compile -- module slf4j.log4j12 (auto)
  org.mozilla:rhino-runtime:jar:1.7.13:compile -- module rhino.runtime (auto)
  org.sweble.wikitext:swc-parser-lazy:jar:3.1.9:compile -- module
  swc.parser.lazy (auto) oro:oro:jar:2.0.8:compile -- module oro (auto)
  rhino:js:jar:1.7R2:compile -- module js (auto)
  velocity:velocity:jar:1.5:compile -- module velocity (auto)
  xerces:xercesImpl:jar:2.12.0:compile -- module xercesImpl (auto)
  xml-apis:xml-apis:jar:1.4.01:compile -- module xml.apis (auto)
  xtc:rats-runtime:jar:1.15.0:compile -- module rats.runtime (auto)
  org.odftoolkit:odfdom-java:jar:0.9.0-RC1:compile -- module odfdom.java (auto)
  org.openrefine.dependencies:arithcode:jar:1.2:compile -- module arithcode
     (auto)
  org.openrefine.dependencies:butterfly:jar:1.0.4:compile -- module
  butterfly (auto)
  org.openrefine.dependencies:opencsv-multichar:jar:2.4:compile -- module
  opencsv.multichar (auto)
  org.openrefine.dependencies:vicino:jar:1.2:compile -- module vicino (auto)

  Test
 ========

 aopalliance:aopalliance:jar:1.0:test -- module aopalliance (auto)
 com.beust:jcommander:jar:1.78:test -- module jcommander (auto)
 com.google.inject:guice:jar:no_aop:4.2.2:test -- module com.google.guice
 [auto] com.squareup.okhttp3:mockwebserver:jar:4.9.0:test -- module
 okhttp3.mockwebserver [auto] com.squareup.okhttp3:okhttp:jar:4.9.0:test --
 module okhttp3 [auto] com.squareup.okio:okio:jar:2.8.0:test -- module okio
 (auto) javax.inject:javax.inject:jar:1:test -- module javax.inject (auto)
 junit:junit:jar:4.12:test -- module junit (auto)
 net.bytebuddy:byte-buddy-agent:jar:1.10.14:test -- module net.bytebuddy.agent
 net.bytebuddy:byte-buddy:jar:1.10.14:test -- module net.bytebuddy
 org.apache.ant:ant:jar:1.10.3:test -- module ant (auto)
 org.apache.ant:ant-launcher:jar:1.10.3:test -- module ant.launcher (auto)
 org.apache.httpcomponents:httpmime:jar:4.5.13:test -- module
 org.apache.httpcomponents.httpmime [auto]
 org.hamcrest:hamcrest-core:jar:1.3:test -- module hamcrest.core (auto)
 org.javassist:javassist:jar:3.27.0-GA:test -- module javassist (auto)
 org.jetbrains:annotations:jar:13.0:test -- module annotations (auto)
 org.jetbrains.kotlin:kotlin-stdlib-common:jar:1.4.0:test -- module
 kotlin.stdlib.common (auto) org.jetbrains.kotlin:kotlin-stdlib:jar:1.4.10:test
 -- module kotlin.stdlib
 org.jetbrains.kotlin:kotlin-stdlib-jdk7:jar:1.4.10:test -- module
 kotlin.stdlib.jdk7 org.jetbrains.kotlin:kotlin-stdlib-jdk8:jar:1.4.10:test --
 module kotlin.stdlib.jdk8 org.mockito:mockito-core:jar:3.3.3:test -- module
 org.mockito [auto] org.objenesis:objenesis:jar:2.6:test -- module objenesis
 (auto)
 org.powermock:powermock-api-mockito2:jar:2.0.9:test -- module
 powermock.api.mockito2 (auto)
 org.powermock:powermock-api-support:jar:2.0.9:test -- module
 powermock.api.support (auto) org.powermock:powermock-core:jar:2.0.9:test --
 module powermock.core (auto)
 org.powermock:powermock-module-testng-common:jar:2.0.9:test -- module
 powermock.module.testng.common (auto)
 org.powermock:powermock-module-testng:jar:2.0.9:test -- module
 powermock.module.testng (auto) org.powermock:powermock-reflect:jar:2.0.9:test
 -- module powermock.reflect (auto) org.testng:testng:jar:7.3.0:test -- module
 org.testng [auto] org.yaml:snakeyaml:jar:1.21:test -- module snakeyaml (auto)


 javax.servlet:servlet-api:jar:2.5:provided -- module servlet.api (auto)

 org.apache.jena:apache-jena-libs:pom:3.9.0

















Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: