1308265SgjbContributing to the tz code and data 2308265Sgjb 3308265SgjbThe time zone database is by no means authoritative: governments 4308265Sgjbchange timekeeping rules erratically and sometimes with little 5308265Sgjbwarning, the data entries do not cover all of civil time before 6308265Sgjb1970, and undoubtedly errors remain in the code and data. Feel 7308265Sgjbfree to fill gaps or fix mistakes, and please email improvements 8325160Sphilipto tz@iana.org for use in the future. In your email, please give 9325160Sphilipreliable sources that reviewers can check. 10308265Sgjb 11325160Sphilip----- 12325160Sphilip 13325160SphilipDevelopers can contribute technical changes to the source code and 14325160Sphilipdata as follows. 15325160Sphilip 16308265SgjbTo email small changes, please run a POSIX shell command like 17308265Sgjb'diff -u old/europe new/europe >myfix.patch', and attach 18308265Sgjbmyfix.patch to the email. 19308265Sgjb 20339631SphilipFor more-elaborate or possibly-controversial changes, 21339631Sphilipsuch as renaming, adding or removing zones, please read 22339631Sphilip<https://www.iana.org/time-zones/repository/theory.html> or the file 23339631Sphiliptheory.html. It is also good to browse the mailing list archives 24339631Sphilip<https://mm.icann.org/pipermail/tz/> for examples of patches that tend 25339631Sphilipto work well. Additions to data should contain commentary citing 26339631Sphilipreliable sources as justification. Citations should use https: URLs 27339631Sphilipif available. 28308265Sgjb 29308265SgjbPlease submit changes against either the latest release in 30325160Sphilip<https://www.iana.org/time-zones> or the master branch of the development 31331663Sphiliprepository. The latter is preferred. If you use Git the following 32331663Sphilipworkflow may be helpful: 33308265Sgjb 34309793Sbapt * Copy the development repository. 35308265Sgjb 36308265Sgjb git clone https://github.com/eggert/tz.git 37308265Sgjb cd tz 38308265Sgjb 39308265Sgjb * Get current with the master branch. 40308265Sgjb 41308265Sgjb git checkout master 42308265Sgjb git pull 43308265Sgjb 44308265Sgjb * Switch to a new branch for the changes. Choose a different 45308265Sgjb branch name for each change set. 46308265Sgjb 47308265Sgjb git checkout -b mybranch 48308265Sgjb 49331663Sphilip * Sleuth by using 'git blame'. For example, when fixing data for 50331663Sphilip Africa/Sao_Tome, if the command 'git blame africa' outputs a line 51331663Sphilip '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone 52331663Sphilip Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should 53331663Sphilip provide some justification for the 'Zone Africa/Sao_Tome' line. 54331663Sphilip 55308265Sgjb * Edit source files. Include commentary that justifies the 56308265Sgjb changes by citing reliable sources. 57308265Sgjb 58308265Sgjb * Debug the changes, e.g.: 59308265Sgjb 60308265Sgjb make check 61308265Sgjb make install 62308265Sgjb ./zdump -v America/Los_Angeles 63308265Sgjb 64308265Sgjb * For each separable change, commit it in the new branch, e.g.: 65308265Sgjb 66308265Sgjb git add northamerica 67308265Sgjb git commit 68308265Sgjb 69308265Sgjb See recent 'git log' output for the commit-message style. 70308265Sgjb 71308265Sgjb * Create patch files 0001-*, 0002-*, ... 72308265Sgjb 73308265Sgjb git format-patch master 74308265Sgjb 75308265Sgjb * After reviewing the patch files, send the patches to tz@iana.org 76308265Sgjb for others to review. 77308265Sgjb 78308265Sgjb git send-email master 79308265Sgjb 80331663Sphilip For an archived example of such an email, see 81331663Sphilip <https://mm.icann.org/pipermail/tz/2018-February/026122.html>. 82331663Sphilip 83308265Sgjb * Start anew by getting current with the master branch again 84308265Sgjb (the second step above). 85308265Sgjb 86308265SgjbPlease do not create issues or pull requests on GitHub, as the 87308265Sgjbproper procedure for proposing and distributing patches is via 88308265Sgjbemail as illustrated above. 89308265Sgjb 90308265Sgjb----- 91308265Sgjb 92308265SgjbThis file is in the public domain. 93