Proposal: JDK-8231640 - (prop) Canonical property storage

Jaikiran Pai jai.forums2013 at gmail.com
Tue Aug 31 13:39:00 UTC 2021


Hello Magnus,

On 30/08/21 5:29 pm, Magnus Ihse Bursie wrote:
>
>
> On 2021-08-28 17:16, Alan Bateman wrote:
>> On 28/08/2021 05:45, Jaikiran Pai wrote:
>>> I hadn't considered the system property approach to switch to old 
>>> behaviour in my proposals, so this is a very good input and I 
>>> personally think the most logical proposals so far.
>>
>> Roger may be right that few would care but it would be changing 
>> behavior that goes back to JDK 1.0. In your list (and thanks for 
>> writing down the options with pros/cons) then your 1a where 
>> SOURCE_DATE_EPOCH changes to write the epoch date rather than the 
>> current date seems to be most consistent with other tools and the 
>> wider eco system. It seems the least disruptive in that it doesn't 
>> change existing behavior and would be opt-in when reproducibility is 
>> required. Previous discussion was leading towards your option 2 (or 
>> variants of) but isn't option doesn't help the cases where build 
>> tools use libraries that rely on the older methods.
>
> If I understood the numbering and alternatives correctly, I don't 
> think there is a conflict between 1a and 2, and I think both should be 
> implemented, for different reasons.
>
> This is my understanding of the options, with the rationale I see for 
> choosing them:
>
> * 1a says that we change the store() method to write the date from 
> SOURCE_DATE_EPOCH, if it is set -- otherwise it keeps the old 
> behavior. This allows users who want to use old Java code (or code 
> they can't modify) to produce output in a reproducible way to do so 
> without changing the source code of the product.
>
> * 2 says that we add a new override to store() which also takes an 
> Instant. This way programmers who write new code and want to make sure 
> it is always reproducible can send in Instant.EPOCH, and not rely on 
> the user to configure SOURCE_DATE_EPOCH.
>
> (In fact, when thinking of it, this seems overly complex. There is no 
> real need to send in a generic Instant, just an override with a 
> boolean skipTimestamp, or something like that. Basically, any solution 
> which allows programmers who write new code to get property files 
> without timestamps easily, is what's needed to fulfill this spot.
>
I do agree that it would be good to just get rid of the date comment and 
let callers control what exact comments (if any) get written out. 
However, I think that having both - a new method (overloaded or named 
differently) and at the same time changing the implementation of the 
existing store(...) methods to make the date comment reproducible is a 
bit of a overkill for a comment that doesn't even play a functional role 
in that API. I listed that option of a new overloaded API and would have 
been in favour of it, if that was the only addition/change that we did 
to support the date comment disabling/reproducibility.

Having said that, I will gladly go ahead and include/work on that 
additional new API, if there is some general agreement on doing so.

-Jaikiran




More information about the core-libs-dev mailing list