linuxptp is an implementation of the Precision Time Protocol (PTP) according to IEEE standard 1588 for Linux. The dual design goals are to provide a robust implementation of the standard and to use the most relevant and modern Application Programming Interfaces (API) offered by the Linux kernel. Supporting legacy APIs and other platforms is not a goal.
OmniSync is a driver for NTPd for people who are firewall-challenged. It enables systems to synchronize time when port 123 (UDP) is blocked. It allows you to sync against the daytime service, time, SNTS, IRC, ICMP, SNMP, precision time protocol (PTP -- IEEE 1588), HTTP, HTTPS (both also via proxy server), and (S)NTP via a Socks(5) proxy server. It doesn't directly set the clock, but uses NTPd for this, as this enables you to have multiple time sources as well as bad-chimer detection, etc.
ntpdate is a simple and small replacement for the homonymous and obsolete tool from the NTP Project's (www.ntp.org) reference implementation. ntpdate sets the local date and time by polling the Network Time Protocol (NTP) server(s) given as the server argument to determine the correct time. It must be run as root on the local host. It is not meant for real time synchronization.
libmsntp is a full-featured, compact, portable SNTP library. libmsntp provides SNTP client and server functionality in a shared library with a simple API. SNTP (RFC 2030) is a simplified version of NTP, which allows precise synchronization of system clocks over a best-effort network.
HTTP Time Protocol is a time synchronization tool that uses Web server responses (HTTP headers) instead of the NTP protocol. If you are behind a corporate firewall, NAT device, or proxy server, HTP will still be able to synchronize the time. For high precision time synchronization, use ntpd.