Open JeffBelgum opened 7 years ago
Great to see a crate with these plans and some initial work!
May I ask if you are currently using this in a downstream project that is driving your work on this crate forward?
I am currently interested in contributing as I believe it could be part of a nice solution to synchronising realtime streams in creative coding applications. #4 would probably help a lot with this along with some sort of anticipated roadmap, but I know it's hard to find time for these things!
I don't currently have a downstream project driving the work, but having one would be great even if it is not a project I'm involved in directly.
I can start filling out the documentation and work on a roadmap. Look to see some of that being fleshed out in the near future and feel free to add any comments or open any new issues with questions or requests.
One resource that has shaped my thoughts on what a modern ntp design might look like is a talk from fosdem the Ntimed project and the code on github that goes along with it: https://archive.fosdem.org/2015/schedule/event/ntimed_ntpd_replacement/ I’m on mobile so I’ll just have to leave it at that for now, but it comes from an engineer that has put a lot of time and thought into the problem space and is familiar with the requirements and problems that can arise.
Thanks for the link! I'll watch it today :)
Also regarding there requirements of your project specifically, have you thought about whether you need a full client and server implementation in rust or just a client?
The specific use-case I have in mind is to synchronise the system clocks of many devices on a single LAN in a cross-platform manner so that we may synchronise the output of real-time data streams for creative installations/exhibitions (DACs for spatial audio, lasers, LED strips, etc). In many cases we may not have access to the WAN whatsoever, so I thought it might be necessary to run at least one master "secondary" server (if my understanding of the strata is correct) so that rest may be clients to it, or in some larger configurations run multiple servers in a sort of tree hierarchy to avoid swamping a single machine. I'd also like for all of this to:
I also had a look at PTP as a solution for this, however my understanding is that the protocol requires some dedicated hardware integrated into the network switches/routers which I'd prefer to avoid as I'd love to be able to run all of this on regular consumer devices.
The project is something I'm quite passionate about, as the current commercial solutions are quite expensive and normally are focused on delivering one specific protocol (e.g. dante just does audio and requires paid licenses, artnet just does DMX and requires licenses for each individual node, etc). I'd love to democratise this space and work on a open-source, general solution for hosting all kinds of real-time streams (which is also why I'm interested in implementing RTP at the moment as well).
Does this sound like a reasonable use-case for an NTP server implementation? Or do you think there might be a better alternative out there for what I'm going for? I'm definitely still new to this whole networked time syncing thing!
A long term goal of this project is to be able to replace ntpd as the method of synchronization on a system.