Ncurses
ncurses is a library used to create textual user interface applications (tui's). It is widely used for terminal applications such as neovim and sc-im.
ncurses is written in c, however there are language bindings for various programming languages such as ada, common lisp, python, gambas, ruby, php, javascript, perl, object rexx and rust.
History
Before ncurses, there were some other curses-libraries. those libraries were all for building text interfaces for computers.
The first of those libraries was just called curses and was developed at the University of California, Berkley. It was developed for the BSD operating system, to make it easier to programm Rouge, a text-based adventure game.
curses itself used the termcap library, which was used in other programs, such as the vi text editor. Termcap is short for terminal capability. This library just simplified the process of writing applications for various terminals.
After the success of the curses library, Bell Labs released an enhanced versin of the curses library for their System V Release 2. This library didn't use termcap anymore but rather terminfo. This enhanced version, however, didn't have the success of the original curses library due to the policy of distributing the source code.
In a brief time around 1982 until 1986 there was pcurses. This was a freeware clone of the Bell Labs curses.
In 1991 a new person, Zeyd Ben-Halim, took over the development of pcurses. He further developed it and in 1993 he released the library under the name ncurses. Later on the form and menu libraries were added into the ncurses library. Since 1996 the project is being maintained by Thomas E. Dickey.