On related topics ...
Data scrubbing should be the primary responsibility of the OCR tool.
Data scrubbing should be the secondary responsibility of the receiving client.
Allowing a client or even a special client to rebroadcast data seems like a bad idea architecturally. It's begging for "email bomb" sort of problems where 2 scrubbers keep sending each other scrubbed data back and forth which piles up as more POST come through until the pipe is full and behind the capacity of any end-client-node.
I pretty much agree with you there. As you say later: SEP.
I can't speak to the C# implementations, but (barring some cross-version incompatibility) the Python one seems robust. Indeed, 0MQ is the foundation of a similar network for another internet spaceship game and currently handles some 200 messages/minute with a large number of uploaders and subscribers... For reference, I just did a count and there are currently around 450 subscribers connected to EDDN.I am not impressed with 0MQ. It's a massive load of complexity to solve a rather simple problem and at best the C# implementations are buggy, at worst the underlying architecture is invalid.
Making the commodity the first order object is a design flaw that needs to be corrected to improve EDDN services. I think the first-order object should be the station. A complete set of commodities is expected and this allows additional station information to be included. Right now there's a ton of redundant data sent with the station name, dates, et. al. sent over and over again for each commodity.
Completely agree on this - the only thinking in the v1 schema design was to remain close to the EMDN format to try and preserve as much client compatibility as we could. Someone else has already suggested a more normalised schema for v2 that addresses the points you raise. At some point, I might have time to work on it!
Each station update sent out should be accompanied by a generated GUID (or UUID) that can be used to track that transaction. Another message on the EDDN should be to declare that GUID of data no-good. Broadcast that data to the clients and if the client gets enough votes it can purge the bad data associated with that GUID.
That's actually a pretty nice idea. Clients who don't care about message quality can simply ignore the "no-good" messages, those that want to keep track can. Would there be anything to prevent someone flooding the network with malicious "no-good" messages? (I mean, any more than they could already flood bad market data messages...)
Last edited: