Many developers take the terminal for granted. If you've ever tried to integrate with the TTY, you've seen what a crazy mess it has become.

Linus Åkesson wrote an in-depth article about the TTY, it's history, and the components involved.

What you are about to see is not particularly elegant. In fact, the TTY subsystem — while quite functional from a user's point of view — is a twisty little mess of special cases. To understand how this came to be, we have to go back in time.

Programming Philosophy is now on Slack! Join at http://slack.programmingphilosophyweekly.com. You can also join the discussion on Facebook or subscribe to the newsletter.