On Sat, Mar 24, 2018 at 12:27 PM, Thomas Broyer <[email protected]> wrote:

>
>
> On Saturday, March 24, 2018 at 10:30:10 AM UTC+1, Mincong Huang wrote:
>>
>> Hi,
>>
>> I'd like to have a clarification about the naming convention for ported
>> GWT modules. Because I'm porting the module `gwt-safecss` and
>> `gwt-animation`. When I go to Vertispan repository [1], the available
>> modules do not use the same rule for the group ID and artifact ID. This is
>> a pain when you reference them as dependencies. Here're 5 rules that I
>> found.
>>
>
> This is a subject we briefly discussed last week in our steering committee
> meeting, acknowledging the issue.
>
>
>> *Rule 1:*
>> Use "org.gwtproject" + module name as group id; module name with "gwt-"
>> prefix as artifact id. This rule is used by `gwt-http`:
>>
>>     GROUP_ID:    org.gwtproject.$MODULE
>>     ARTIFACT_ID: gwt-$MODULE
>>
>> *Rule 2:*
>> Use "org.gwtproject" + module name as group id; module name without
>> "gwt-" prefix as artifact id. This rule is used by `gwt-event`,
>> `gwt-place`, `gwt-safehtml`, `gwt-storage`, `gwt-timer`:
>>
>>     GROUP_ID:    org.gwtproject.$MODULE
>>     ARTIFACT_ID: $MODULE
>>
>
> gwt-events actually falls in rule 1.
>

Yes, indeed. You're right.


>
>
>> *Rule 3:*
>> Use "org.gwtproject" as group id; module name with "gwt-" prefix as
>> artifact id. This rule is used by `gwt-xhr`:
>>
>>     GROUP_ID:    org.gwtproject
>>     ARTIFACT_ID: gwt-$MODULE
>>
>> *Rule 4:*
>> Use "org.gwtproject" as group id; module name without "gwt-" prefix as
>> artifact id. This rule is used by `gwt-json`, `gwt-typedarrays`, `gwt-xml`,
>> `gwt-xhr`:
>>
>>     GROUP_ID:    org.gwtproject
>>     ARTIFACT_ID: $MODULE
>>
>> *Rule 5:*
>> Other rules: `gwt-window`, `gwt-history`.
>>
>
> Those fall (almost) in rule 1, with an additional "user" in groupId:
> org.gwtproject.user.$MODULE:gwt-$MODULE
>
>
>> I suggest we apply rule 4 to all the modules. It means always using
>> "org.gwtproject` as group id, and use `gwt-` + module name as artifact id.
>> There're several benefits. It helps people to find all the artifacts via
>> the same group id. It also keeps consistency for the generated JAR files:
>> each of them contains a "gwt-" prefix, thus they are GWT artifacts.
>>
>
> My rule of thumb was to use a "subgroup" of "org.gwtproject" when there
> was several artifacts, as can be seen in gwt-events and gwt-places. For
> other cases, I'm always hesitating between bare "org.gwtproject" and a
> subgroup.
>
> Fwiw, we settled on always using a subgroup (IIRC; Colin, please correct
> me if I misremember). This means rule 1 or 2 rather than 3 or 4. And I
> would tend to agree with using a "gwt-" prefix for artifact IDs, though if
> you read the artifact name as being groupId+artifactId, then that prefix
> would be redundant with the "org.gwtproject" prefix of the groupId.
>

Using the same group ID for every artifact is easier for searching. For
instance, you can use query `g:"com.google.gwt"`
<https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.google.gwt%22> to
search all the GWT artifacts in Maven central repository. You must do a
wildcard search if group ID contain a subgroup. However, I understand that
a sub group contains multiple modules, so rule 1 and 2 have their interest.
Another way could be:

*Rule 6:*
Using "org.gwtproject" as group id; "gwt-" prefix with optional subgroup
and module name as artifact ID:

    GROUP_ID:     org.gwtproject
    ARTIFACT_ID:  gwt-$SUBGP-$MODULE

Therefore, subgroup becomes the first order in artifact listing. And the
"gwt-" prefix is useful for identifying GWT jar—an counter-example is
`json-1.0-20180116.161204-1.jar`, without the group ID, I can't tell it
belong to GWT.


> Compare, for example
>
>    - org.gwtproject:http vs org.gwtproject:gwt-http vs
>    org.gwtproject.http:http vs org.gwtproject.http:gwt-http
>    - org.gwtproject:logical-event vs org.gwtproject:gwt-logical-event vs
>    org.gwtproject.event:logical vs org.gwtproject.event:logical-event vs
>    org.gwtproject.event.gwt-logical-event (this goes with "event" and
>    "compat" artifacts)
>
>
Thanks for these examples. I formatted it for those who want a vertical
comparison.

org.gwtproject:http
org.gwtproject:gwt-http
org.gwtproject.http:http
org.gwtproject.http:gwt-http

org.gwtproject:logical-event
org.gwtproject:gwt-logical-event
org.gwtproject.event:logical
org.gwtproject.event:logical-event
org.gwtproject.event.gwt-logical-event
---
org.gwtproject:gwt-event-logical (rule 6)

There're two other questions:

- Why not using `org.gwt` instead of `org.gwtproject`?
- We're discussing sub groups here. But all the sub groups are under
gwt-user. What about gwt-dev and other parts? Is `user` and `dev` are
considered as subgroup? (Thus Rule 5 makes sens)

Mincong


> --
> You received this message because you are subscribed to the Google Groups
> "GWT Contributors" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/google-web-toolkit-contributors/ac6913ab-7240-
> 4fcb-8d5b-4a48085089b6%40googlegroups.com
> <https://groups.google.com/d/msgid/google-web-toolkit-contributors/ac6913ab-7240-4fcb-8d5b-4a48085089b6%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-web-toolkit-contributors/CACWxqgD8RS8i646xN26_m4uHx9XHT8vRLrPqQnj2_R-sEH%3DeRg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to