# ntpd-rs on FreeBSD
## Work items
1. setup FreeBSD machine
2. make code compile on FreeBSD
3. validate the ntp client on FreeBSD
4. setup an ntp cloud server running FreeBSD (optionally add it to the NTP pool)
5. validate the server
6. investigate whether we want this: packaging and distribution via FreeBSD channels
- Probably not. We can check with technical monitor if we find one.
7. Blog post with results or a report
Note: Google does not offer FreeBSD servers.
Based on https://www.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2, FreeBSD has the `SO_TIMESTAMP` socket option, and it looks like it is fairly similar to the `SO_TIMESTAMPING` that we use for linux.
Furthermore, FreeBSD supports `ntp_adjtime` https://www.freebsd.org/cgi/man.cgi?query=ntp_adjtime, the same libc function that we use on linux to control the clock. We will have to verify that our linux code behaves correctly, but it should be a good starting point.
## Estimate
TODO: Estimate work items 1-7
1. 8h
2. 16h
3. 16h
4. 20h
5. 8h (we expect 0h here but let's err on the safe side)
6. 0h (because we won't do it)
7. 12h (not sure what we typically spend on a blog post)
- David quick check
- Multiplier? => 1.25
- Total
## Hardware
- A machine dedicated to running FreeBSD
- laptop (portable better for remote workers)
- additional ssd for dual boot?
- Cost of running a server in the NTP pool for a while
## Deliverables
- NTPD-rs client en server version for FreeBSD
- Validation report
## Milestones
- NTPD-rs client en server op FreeBSD (implementatie en testing)
- Server in NTP pool running ntpd-rs in FreeBSD (Google cloud or other)
- Optional: packaging & distribution of NTPD-rs for FreeBSD