Thin clients are computer programs that rely heavily on a server to fulfill computational roles rather than performing these roles independently like traditional fat clients. Thin clients have their roots in terminals used to access mainframe computers and evolved into graphical user interfaces powered by X server software running on the client. Thin client infrastructures allow computations to be shared across multiple clients connected to a single server, amortizing computing power for improved efficiency.