= TO DO =

== Checklist for a quality 1.0 release ==

== Build recipe ==

* After a fresh clone, it may take *two* ./waf builds to force the
  compiled versions of the Python libraries.

=== Code ===

* All the code relating to iteration over interfaces can and should be removed
  in favor of binding to wildcard addresses.

=== Testing ===

* We need to live-test various refclocks.  It would be nice
  to test the full matrix of refclock x platform, but that's too
  much work.  We should probably test as many refclocks as we can
  on at least one platform and test the NMEA, Atom, and SHM drivers
  on most platforms.

=== Packaging ===

* Package metadata for Debian, Ubuntu, Raspbian, Red Hat, Gentoo, and SuSe.

== After 1.0 release ==

=== Slow convergence ===

[quote, Gary Miller]
__________
ntpd takes way, way, way longer to converge than chronyd.  Which is
why on the fly reconfiguation in ntpd is SO important.  Last thing you
ever want to do is restart ntpd.

Right now, after 10 mins, ntpd has 2,000 times the jitter as chronyd had
when I turned it off.
__________

Also see https://gitlab.com/NTPsec/ntpsec/issues/68 where the dubiousness
of the current startup logic gets discussed.

== User interface ==

[quote, Gary Miller]
__________
'ntpq -p' is user hostile compared to 'chronyc sources'.  chronyc adds
units to the display, so you do not have to keep referring to the
manual, and it makes it easy to deal with jitter and delay that
varies by orders of magnitude.

So, instead of this:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
-india.colorado. .NIST.           1 u   33   64  377   79.023  -11.071  10.247
 140.142.16.34   .INIT.          16 u    -  256    0    0.000    0.000   0.000
+clepsydra.labs. .GPS.            1 u   28   64  377   26.473   15.307   4.261
+catbert.rellim. .GPS1.           1 u   31   64  377    0.200   22.061   6.440
-SHM(0)          .GPS.            0 l   45   64  377    0.000  151.500  15.858
*SHM(1)          .GPS1.           0 l   44   64  377    0.000   20.870   7.680
+131.107.13.100  .ACTS.           1 u   25   64  337   14.746   18.469   6.634

I see this:

dagwood ~ # chronyc sources
210 Number of sources = 11
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#- SHM0                          0   4   377    19   +119ms[ +119ms] +/-  501ms
#- SHM1                          0   4   377    21   +276us[ +276us] +/-   13us
#* SOC2                          0   4   377    22   +260us[ +291us] +/-   24us
#? SOC3                          0   4     0  247d  +7275ms[  +99us] +/-  230ms
^x catbert.rellim.com            1   8   377     0  -1566us[-1566us] +/- 1564us
^- spidey.rellim.com             1   6   377    54    +18ms[  +18ms] +/-   27ms
^- kong.rellim.com               2  10   377   177   -722us[ -735us] +/- 2004us
^- ha2.smatwebdesign.com         2  10   177   492  -2890us[-2905us] +/-  103ms
^- soft-sea-01.servers.octos     2  10   377   775  -5897us[-5843us] +/-   83ms
^- gw-kila-wl0.ipv6.avioc.or     2  10   377   17m   -519us[ -640us] +/-   64ms
^- 66.241.101.63                 2  10   377   449  +7966us[+7973us] +/-   52ms

Neither is ideal, easy pickings for someone to code on.

=== Future plans ===

* ntpd is remarkably bad at standalone Stratum 1 - requires multiple chimers
  (and multiple inbound NTP connections, and a hole in your firewall) even when
  it has a known-good local timesource like a GPS.  This should be fixed.

* The code used for asynchronous DNS lookup is more general, more complex,
  and more bug-prone than it should be.  Either our version should be
  rewritten and simplified or (better idea!) it should be replaced by
  a well-maintained third-party library like c_ares.

* Hal says "We need a way to inspect/debug bits on the wire. `ntpdate
  -du' is the traditional approach."  Hal's straw man is a new program
  rather than trying to make ntpdig do this.  Eric's proposed answer:
  ntpshark, a command interpreter written around the ntp Python module and
  loosely modeled on wireshark.

* We might be able to eliminate a lot of the Linux runtime
  droproot code by using file capabilities.

* Use the snprintb in ntptime/ntptime.c for flag words like flash
  codes and use it systematically to make reports more readable.

* Timer events need, as much as possible, to be eliminated - they eat
  power on laptops and mobile devices, usually unnecessarily.

* Richer signal semantics: HUP for close/reopen of any files (logrotate…),
  USR1 for re-read of config and maybe USR2 for re-read of an alternate
  config file (so you can go back pre ante by just sending USR1 if you
  messed up). Open for discussion.

* Take another look at SHM.  Hal thinks we can make a version that is
  read-only and solid.  Maybe write a support package that does all the
  work if you call it with the date/time.

[quote, Hal]
__________
I think there is some interaction between when the ACTS driver calls and the
state of other stuff, like the connection to the net.  This is probably a
good candidate to get cleaned up.

There is another possible tangle in this area.  If you set "noselect" on the
server line in the config file, ntpd goes through all the action of
collecting the data and writing log files, but then drops the clock.  I don't
know things well enough to be sure that this sort of logic won't pick one
back up.
__________


== Potential device removals ==

* Modes 9 and 10 in the parse driver support hardware that was discontinued
  before 2003.

== Old, sometime ancient stuff ==

970318: in hourly_stats(?), squawk if the magnitude of the drift is,
	say, >400.

== Simple tasks for an intern ==

[quote, ESR 2015-09-30]

* In the docs subdirectory, include/command.txt is an HTML passthrough
  in a not entirely successful attempt to emulate the look of the
  Mills HTML documentation this directory was made from. It should be
  cleaned up or replaced.  Requires HTML and CSS skills; intern must
  be willing to learn asciidoc.

* Similarly, includes/footer.txt is a tabular hack made to resemble
  the old HTML and should be cleaned up.  Requires HTML and CSS
  skills; intern must be willing to learn asciidoc

// end
