Model view matrix stack and multiple programs

I’m building a framework where each object has an associated program and each object has a ‘draw’ method.

What is the best choice, to have a single modelview stack handled by a Renderer class or to have a modelview stack for each program? In both cases how can I handle optimally a “world” transformation that affects all the objects independently by the program (i.e. moving the camera)

Thanks and sorry if is a stupid question, but I’m fairly new to such kind of development