First, some history
First, there was rails s
, and then there was sidekiq
, and then gulp
, or webpack-dev-server
, or whatever else needed to use your app in the development environment. Rarely in the jungle of the modern web can a programmer get away by running one single process in the shell.
Next came the Procfile
—a format to specify the types of processes an application provides and the commands to run those services. It became a standard for Heroku and other Platforms-as-a-Service.
After that came Foreman. It allowed developers to launch all these processes with a single command. Everyone rejoiced, and David Dollar, who created it, got over 4k stars at GitHub. More similar tools would soon appear, and with it, a freedom of choice.
Sergey Aleksandrovich noticed something wrong with these options. Here’s how he explains it:
The problem with most of those tools is that the processes you want to manage start to think they are logging their output into a file, and that can lead to all sorts of problems: severe lag, losing or breaking colored output. Tools can also add vanity information (unneeded timestamps in logs).
In an attempt to solve this problem (that might have been bugging you, too) Sergey turned his attention towards pseudoterminals.
TLC for the PTY
Pseudoterminals (pseudotty, or PTY) have been around since 1967. They’ve existed in the UNIX world since the 80’s and 2010’s The Linux Programming Interface contains an entire chapter explaining them.