CONTRIBUTING revision 1.4
11.1SchristosContributing to the tz code and data 21.1Schristos 31.1SchristosThe time zone database is by no means authoritative: governments 41.1Schristoschange timekeeping rules erratically and sometimes with little 51.1Schristoswarning, the data entries do not cover all of civil time before 61.1Schristos1970, and undoubtedly errors remain in the code and data. Feel 71.1Schristosfree to fill gaps or fix mistakes, and please email improvements 81.3Schristosto tz@iana.org for use in the future. In your email, please give 91.3Schristosreliable sources that reviewers can check. 101.3Schristos 111.3Schristos----- 121.3Schristos 131.3SchristosDevelopers can contribute technical changes to the source code and 141.3Schristosdata as follows. 151.1Schristos 161.1SchristosTo email small changes, please run a POSIX shell command like 171.1Schristos'diff -u old/europe new/europe >myfix.patch', and attach 181.1Schristosmyfix.patch to the email. 191.1Schristos 201.3SchristosFor more-elaborate changes, please read the theory.html file and browse 211.3Schristosthe mailing list archives <https://mm.icann.org/pipermail/tz/> for 221.3Schristosexamples of patches that tend to work well. Additions to 231.1Schristosdata should contain commentary citing reliable sources as 241.3Schristosjustification. Citations should use https: URLs if available. 251.1Schristos 261.1SchristosPlease submit changes against either the latest release in 271.3Schristos<https://www.iana.org/time-zones> or the master branch of the development 281.4Schristosrepository. The latter is preferred. If you use Git the following 291.4Schristosworkflow may be helpful: 301.1Schristos 311.2Schristos * Copy the development repository. 321.1Schristos 331.1Schristos git clone https://github.com/eggert/tz.git 341.1Schristos cd tz 351.1Schristos 361.1Schristos * Get current with the master branch. 371.1Schristos 381.1Schristos git checkout master 391.1Schristos git pull 401.1Schristos 411.1Schristos * Switch to a new branch for the changes. Choose a different 421.1Schristos branch name for each change set. 431.1Schristos 441.1Schristos git checkout -b mybranch 451.1Schristos 461.4Schristos * Sleuth by using 'git blame'. For example, when fixing data for 471.4Schristos Africa/Sao_Tome, if the command 'git blame africa' outputs a line 481.4Schristos '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone 491.4Schristos Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should 501.4Schristos provide some justification for the 'Zone Africa/Sao_Tome' line. 511.4Schristos 521.1Schristos * Edit source files. Include commentary that justifies the 531.1Schristos changes by citing reliable sources. 541.1Schristos 551.1Schristos * Debug the changes, e.g.: 561.1Schristos 571.1Schristos make check 581.1Schristos make install 591.1Schristos ./zdump -v America/Los_Angeles 601.1Schristos 611.1Schristos * For each separable change, commit it in the new branch, e.g.: 621.1Schristos 631.1Schristos git add northamerica 641.1Schristos git commit 651.1Schristos 661.1Schristos See recent 'git log' output for the commit-message style. 671.1Schristos 681.1Schristos * Create patch files 0001-*, 0002-*, ... 691.1Schristos 701.1Schristos git format-patch master 711.1Schristos 721.1Schristos * After reviewing the patch files, send the patches to tz@iana.org 731.1Schristos for others to review. 741.1Schristos 751.1Schristos git send-email master 761.1Schristos 771.4Schristos For an archived example of such an email, see 781.4Schristos <https://mm.icann.org/pipermail/tz/2018-February/026122.html>. 791.4Schristos 801.1Schristos * Start anew by getting current with the master branch again 811.1Schristos (the second step above). 821.1Schristos 831.1SchristosPlease do not create issues or pull requests on GitHub, as the 841.1Schristosproper procedure for proposing and distributing patches is via 851.1Schristosemail as illustrated above. 86