I'm also interested in configuring a Designer_ViewOnly user. I've thought about using project inheritance to protect against making changes to projects, the major hole in this is that projects are connected to live OPC tags that are not protected by inheritance.
If I went the development server route I see a similar issue... How are folks handling live machine/controller connections that may be needed in the development or test environment, while also guarding against unwanted production interruption e.g. writing out to live PLCs while in test? Just using simulation of some kind?
I think I have my answer (simulation). I'm not a PLC expert but I'll look into the Ethernet/IP Module. It would be great to have the most real time outputs as possible on startup, while still simulating I/O. A 'ghost' controller? Anyway, if anyone else has more examples of how they configure their development env I'd be happy to hear.