Work plan prpoosal for the next year

Hal Murray halmurray at sonic.net
Sun Jun 27 03:02:18 UTC 2021


I don't like it much.


> Our major objective for this year will be to move the NTPsec codebase from C
> and Python to a single memory-safe language. 

I think that restructuring is as important, maybe more, than switching 
languages.


> There is now a better alternative: the Go language.

What happened to Rust?

If you are claiming Go is better than Rust, I'd like to know more.

If they are the same but we have to pick one now and you are picking Go 
because you are more familiar with it then you should say so.  (and also 
justify why we have to pick one now)

I haven't used either Go or Rust.  I'm starting to learn Rust.  I've read the 
first half or third of The Book.  A while ago, you grumbled about stability 
(or lack thereof).  There were several sections discussing stability.  It 
looked good, but I don't know how well it works in reality.

My near term goal is to learn enough about Rust to write a multi threaded Echo 
Server that I can use to measure performance.  That involves a lot of grubby 
networking details, things like getting the recv timestamp.

My current C code works on Linux and FreeBSD.  418 lines.  It has a few rough 
edges, but it does what I need to measure performance.

If you want to write the Go version of the Echo Server, that would be a good 
exploratory exercise.  If so, I'll put cleaning up my C code higher on my list.

----------

I think we should also explore support for TLS before making a Go/Rust 
decision.

Also how to translate from internal variables to/from wire format data.

----------

> Milestone NTPSHM:  This is the most important clock driver for production
> use. Estimate: 1 month.

> Milestone LEGACY: Port the legacy clock drivers to Go. ...

I think we should figure out how to split out refclocks.

-------

Your milestones don't say anything about NTS.

Another good milestone would be to patch the current C code to hand off data 
to a server via shared memory then make a (multithreaded) Go/Rust server that 
uses that data.  That's not hard to do, ballpark of a week if we have a 
working Echo Server.  I'll say more if you want.

Note that gives us a server where the part exposed to the net is written is a 
safe language.  (but doesn't support ntpq or NTS)



-- 
These are my opinions.  I hate spam.





More information about the devel mailing list