google / gson

A Java serialization/deserialization library to convert Java Objects into JSON and back
Apache License 2.0
23.16k stars 4.27k forks source link

Add jackson-databind license header to `ISO8601Utils` and `UtcDateTypeAdapter` #2615

Closed Marcono1234 closed 5 months ago

Marcono1234 commented 5 months ago

Problem solved by the feature

The code of ISO8601Utils and UtcDateTypeAdapter is in large parts based on jackson-databind code, see the comments in these files referring to jackson-databind. Currently these files only have Gson license headers, which might be confusing and might violate the jackson-databind license?

Feature description

Even though the original jackson-databind code does not have a license header comment, maybe we should add a jackson-databind license header to these Gson files, in addition to the Gson license header.

Inspired by https://github.com/getsentry/sentry-java/pull/3003/files#diff-1ab6fa42a5d8d69c258374fba82f5486467bf693873e223a8f1a44490c86108f

eamonnmcmanus commented 5 months ago

I don't think we have anything to do here, except one small thing noted below. While it perhaps a bit surprising that a file that is mostly copied from Jackson has a Google copyright header, the file does clearly state its origin. The Jackson license is the same as the Gson one (Apache 2.0), and permits adding copyright notices. It says:

4. Redistribution. You may reproduce and distribute copies of the
  Work or Derivative Works thereof in any medium, with or without
  modifications, and in Source or Object form, provided that You
  meet the following conditions:

  (a) You must give any other recipients of the Work or
      Derivative Works a copy of this License; and

[It is the same license so we are doing this.]

  (b) You must cause any modified files to carry prominent notices
      stating that You changed the files; and

[We could perhaps state this a bit more clearly but it is certainly implied.]

  (c) You must retain, in the Source form of any Derivative Works
      that You distribute, all copyright, patent, trademark, and
      attribution notices from the Source form of the Work,
      excluding those notices that do not pertain to any part of
      the Derivative Works; and

[There are no such notices anywhere in the Jackson source code as far as I can see.]

  (d) If the Work includes a "NOTICE" text file as part of its
      distribution, then any Derivative Works that You distribute must
      include a readable copy of the attribution notices contained
      within such NOTICE file [...]

[There is no NOTICE file in the Jackson sources.]

  You may add Your own copyright statement to Your modifications and
  may provide additional or different license terms and conditions
  for use, reproduction, or distribution of Your modifications, or
  for any such Derivative Works as a whole, provided Your use,
  reproduction, and distribution of the Work otherwise complies with
  the conditions stated in this License.

[We have indeed added a copyright statement.]

Even though the original jackson-databind code does not have a license header comment, maybe we should add a jackson-databind license header to these Gson files, in addition to the Gson license header.

As far as I can tell there is no such thing as a jackson-databind license header, and I don't think it's up to us to invent one.

I would be happy to accept a PR that modifies this source code so that it says even more prominently that ISO8601Utils comes from jackson-databind, and says explicitly that the code in Gson is modified from the original. But I don't see a problem with the status quo.

Marcono1234 commented 5 months ago

Thanks for checking this in such detail! This feature request was really more supposed to be a question whether we have to do it, so thanks for answering that.

[There is no NOTICE file in the Jackson sources.]

There is one under src/main/resources/META-INF: https://github.com/FasterXML/jackson-databind/blob/2.17/src/main/resources/META-INF/NOTICE

Do you think we would have to include it?