A TTY is a character device provided by the kernel that has certain configurable options such as baud rate, flow control, and parity. These options were necessary for the operation of early computer terminals and are still necessary for certain types of hardware (such as an RS-232 port or a USB-to-serial converter).
Because early computer terminals were represented as TTY devices, Unix-like operating systems usually use a TTY device as a primary way of communicating with the user. Shells typically run inside of terminal emulators, which are presented to the kernel and to userspace programs as a TTY (possibly via a P(seudo)TY interface); the stdin, stdout, and stderr of the shell and the programs it runs are all run through the TTY/PTY device.
Questions with this tag should relate in some way to a program's interaction with a PTY or TTY device, or to a physical TTY device or its drivers.