Hi Vincent,
If I understand the context of the question correctly, the behavior you are seeing is due to the behavior of branching in Bonsai, and not because of the PropertySource. To clarify, if you need to initialize the FileName of multiple CsvWriters and other nodes, you need to provide the name right at the beginning when they are initialized. By branching, propagation gets delayed until everyone is subscribed to the source, which is already too late for some of the inputs.
Using the ReplaySubject or AsyncSubject is fine for this, and even allows you to transform file names as they get propagated to their multiple targets.
The reason for the PropertySource is really to have a way to explicitly construct values that would fit into specific properties, while deciding exactly when / if they will be propagated. To explain, when you externalize a property, the only thing you can do is you either write to it or not. You can feed multiple inputs to create an ROI for the Crop node for example, but you can't just create the Rect structure somehow, hold on to it, and then propagate it later.
The PropertySource was created to solve this problem. Basically it allows you to feed input to it exactly as you would do to an externalized property, but then you actually have a value, which you can use to do whatever you want. The applications are quite broad, and it gets very useful in situations where for example you would need to create an ROI for Crop, but then also send it somewhere for further processing.
Let me know if the explanation makes sense. I'm hoping to write all these new features down in the near future.