CONTRIBUTING revision 1.3
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.2Schristosrepository.  If you use Git the following workflow may be helpful:
291.1Schristos
301.2Schristos  * Copy the development repository.
311.1Schristos
321.1Schristos      git clone https://github.com/eggert/tz.git
331.1Schristos      cd tz
341.1Schristos
351.1Schristos  * Get current with the master branch.
361.1Schristos
371.1Schristos      git checkout master
381.1Schristos      git pull
391.1Schristos
401.1Schristos  * Switch to a new branch for the changes.  Choose a different
411.1Schristos    branch name for each change set.
421.1Schristos
431.1Schristos      git checkout -b mybranch
441.1Schristos
451.1Schristos  * Edit source files.  Include commentary that justifies the
461.1Schristos    changes by citing reliable sources.
471.1Schristos
481.1Schristos  * Debug the changes, e.g.:
491.1Schristos
501.1Schristos      make check
511.1Schristos      make install
521.1Schristos      ./zdump -v America/Los_Angeles
531.1Schristos
541.1Schristos  * For each separable change, commit it in the new branch, e.g.:
551.1Schristos
561.1Schristos      git add northamerica
571.1Schristos      git commit
581.1Schristos
591.1Schristos    See recent 'git log' output for the commit-message style.
601.1Schristos
611.1Schristos  * Create patch files 0001-*, 0002-*, ...
621.1Schristos
631.1Schristos      git format-patch master
641.1Schristos
651.1Schristos  * After reviewing the patch files, send the patches to tz@iana.org
661.1Schristos    for others to review.
671.1Schristos
681.1Schristos      git send-email master
691.1Schristos
701.1Schristos  * Start anew by getting current with the master branch again
711.1Schristos    (the second step above).
721.1Schristos
731.1SchristosPlease do not create issues or pull requests on GitHub, as the
741.1Schristosproper procedure for proposing and distributing patches is via
751.1Schristosemail as illustrated above.
76