CONTRIBUTING revision 331663
1235368SgnnContributing to the tz code and data 2235368Sgnn 3235368SgnnThe time zone database is by no means authoritative: governments 4235368Sgnnchange timekeeping rules erratically and sometimes with little 5235368Sgnnwarning, the data entries do not cover all of civil time before 6235368Sgnn1970, and undoubtedly errors remain in the code and data. Feel 7235368Sgnnfree to fill gaps or fix mistakes, and please email improvements 8235368Sgnnto tz@iana.org for use in the future. In your email, please give 9235368Sgnnreliable sources that reviewers can check. 10235368Sgnn 11235368Sgnn----- 12235368Sgnn 13235368SgnnDevelopers can contribute technical changes to the source code and 14235368Sgnndata as follows. 15235368Sgnn 16235368SgnnTo email small changes, please run a POSIX shell command like 17235368Sgnn'diff -u old/europe new/europe >myfix.patch', and attach 18235368Sgnnmyfix.patch to the email. 19235368Sgnn 20235368SgnnFor more-elaborate changes, please read the theory.html file and browse 21235368Sgnnthe mailing list archives <https://mm.icann.org/pipermail/tz/> for 22235368Sgnnexamples of patches that tend to work well. Additions to 23235368Sgnndata should contain commentary citing reliable sources as 24235368Sgnnjustification. Citations should use https: URLs if available. 25235368Sgnn 26235368SgnnPlease submit changes against either the latest release in 27235368Sgnn<https://www.iana.org/time-zones> or the master branch of the development 28235368Sgnnrepository. The latter is preferred. If you use Git the following 29235368Sgnnworkflow may be helpful: 30235368Sgnn 31235368Sgnn * Copy the development repository. 32235368Sgnn 33235368Sgnn git clone https://github.com/eggert/tz.git 34235368Sgnn cd tz 35235368Sgnn 36235368Sgnn * Get current with the master branch. 37235368Sgnn 38235368Sgnn git checkout master 39235368Sgnn git pull 40235368Sgnn 41235368Sgnn * Switch to a new branch for the changes. Choose a different 42235368Sgnn branch name for each change set. 43235368Sgnn 44235368Sgnn git checkout -b mybranch 45235368Sgnn 46235368Sgnn * Sleuth by using 'git blame'. For example, when fixing data for 47235368Sgnn Africa/Sao_Tome, if the command 'git blame africa' outputs a line 48235368Sgnn '2951fa3b (Paul Eggert 2018-01-08 09:03:13 -0800 1068) Zone 49235368Sgnn Africa/Sao_Tome 0:26:56 - LMT 1884', commit 2951fa3b should 50235368Sgnn provide some justification for the 'Zone Africa/Sao_Tome' line. 51235368Sgnn 52235368Sgnn * Edit source files. Include commentary that justifies the 53235368Sgnn changes by citing reliable sources. 54235368Sgnn 55235368Sgnn * Debug the changes, e.g.: 56235368Sgnn 57235368Sgnn make check 58235368Sgnn make install 59235368Sgnn ./zdump -v America/Los_Angeles 60235368Sgnn 61235368Sgnn * For each separable change, commit it in the new branch, e.g.: 62235368Sgnn 63235368Sgnn git add northamerica 64235368Sgnn git commit 65235368Sgnn 66235368Sgnn See recent 'git log' output for the commit-message style. 67235368Sgnn 68235368Sgnn * Create patch files 0001-*, 0002-*, ... 69235368Sgnn 70235368Sgnn git format-patch master 71235368Sgnn 72235368Sgnn * After reviewing the patch files, send the patches to tz@iana.org 73235368Sgnn for others to review. 74235368Sgnn 75235368Sgnn git send-email master 76235368Sgnn 77235368Sgnn For an archived example of such an email, see 78235368Sgnn <https://mm.icann.org/pipermail/tz/2018-February/026122.html>. 79235368Sgnn 80235368Sgnn * Start anew by getting current with the master branch again 81235368Sgnn (the second step above). 82235368Sgnn 83235368SgnnPlease do not create issues or pull requests on GitHub, as the 84235368Sgnnproper procedure for proposing and distributing patches is via 85235368Sgnnemail as illustrated above. 86235368Sgnn 87235368Sgnn----- 88235368Sgnn 89235368SgnnThis file is in the public domain. 90