Read variables from other programs

Hi,
I’m coming from Bachmann PLC development, where would structure the PLC program so that many different POU programs handled their own „business“, but had full read rights to all other programs.
This was very convenient as there was no need for global variables and that programs could read all variables from other programs without the dangers of writing to them.
For instance, the program PRG_StateMachine, could read all internal variables from PRG_Faults by simply refering to them as PRG_Faults.SomeFault and use that as a start interlock.

In plcnext, it seems as if you want programs to communicate with each other, you have to put all variables (or a struct) to a GDS out-port and assign a corresponding in-port to the other program. This is a manual job which can be very tedious when you have many programs and they all want to read a lot of data from each other.

Is there a solution to achieve this without a lot of manual extra work ?