Git Product home page Git Product logo

Comments (7)

vmassol avatar vmassol commented on July 20, 2024

IMO it's better as separate artifacts since not everyone need all of them. For example the xwiki project doesn't need nor want to have css4j-awt classes in its distribution.

from css4j.

carlosame avatar carlosame commented on July 20, 2024

it's better as separate artifacts since not everyone need all of them.

I should have worded it more clearly than it is: in any case, the artifacts would be kept separate. The alternatives are the following:

  1. The css4j git repository contains a multi-module build that produces separate artifacts for css4j, css4j-agent, css4j-awt and css4j-dom4j. That's a single-step build.
  2. Each repository (css4j, css4j-agent, css4j-awt and css4j-dom4j) contains a stand-alone build for its own module/artifact. That's a separate single-step build for each repository.
  3. Leave things as they are now (multi-step build).

Consequences of each approach for distribution:

  1. Simultaneous distribution of 4 artifacts.
  2. Independent distribution of artifacts, each with its own release cycle. That makes sense as I expect that the non-core modules are very rarely going to be modified: the AWT module may never change in the future!
  3. The current distribution through css4j-dist, which confuses people.

from css4j.

vmassol avatar vmassol commented on July 20, 2024

ok, provided you keep generating multiple artifacts, I don't have any problem! A single build sounds ok but it means releasing new versions of the different artifacts even when there are no changes to them. It's fine for xwiki. Thanks for asking Carlos.

from css4j.

carlosame avatar carlosame commented on July 20, 2024

I did not mention an important argument to favour 2): css4j-dom4j depends on the dom4j project which lacks a declared module name (see dom4j/dom4j/issues/67). Maven repositories are reluctant to accept modular artifacts that have non-modular dependencies, you only have to see the warning that Maven emitted when it was building css4j-dom4j:

[WARNING] **********************************************************************************************************************************************************
[WARNING] * Required filename-based automodules detected: [htmlparser-1.4.jar, dom4j-2.1.3.jar]. Please don't publish this project to a public artifact repository! *
[WARNING] **********************************************************************************************************************************************************

There is a similar issue with htmlparser and css4j-agent, and while I still hope that dom4j may perhaps be fixed in the long term, unfortunately do not have the same expectation about htmlparser.

from css4j.

vmassol avatar vmassol commented on July 20, 2024

ok I thought you wanted 1) :) (since a single step build means 1) for me as it's in the same repo: one repo = one build = one release cycle). I agree that 2) is cleaner.

from css4j.

carlosame avatar carlosame commented on July 20, 2024

I thought you wanted 1)

The initial idea was 2) ("The idea has always been to promote them to independent projects"), but I fear that quite a few people may miss css4j-awt or even css4j-dom4j if I do that. No final decision yet.

from css4j.

carlosame avatar carlosame commented on July 20, 2024

Commit [ca6bea9] makes this project autonomous from css4j-dist. Tomorrow I'll commit similar changes to the other sub-projects, then close this issue (unless there are additional comments).

The basic idea is that, starting with 3.6.0, any module with a 3.x major version can be combined, same with 4.x once it comes out etc. For example, you'll be able to combine css4j-dom4j 3.6.0 with css4j 3.7.0 and css4j-agent 3.6.1, but not with css4j 4.0.0.

The most likely reasons to bump the major version to 4.x would be:

  • A new selector requires specific support in css4j-dom4j (breaking backwards compatibility).
  • A new method is added to the StyleDatabase interface (if that causes incompatibility with the current css4j-awt).

The main reasons to keep the other modules as separate projects: css4j-agent needs relatively frequent updates (to keep the public suffix list up to date) while css4j-awt could potentially be unchanged for a while. css4j-dom4j appears to be pretty stable as well.

from css4j.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.