не съм съгласен напълно с твърдението, че графичният интерфейс е 100% необходим. Според мен това си е просто още един вид интерфейс, освен стандартия текстов. За някои приложения е немислимо да няма графичен интерфейс, за други е безполезно, а за трети - според вкуса на потребителя

'>
Ще дам пример с един mp3 плейър - за някои може е е удобно да цъкат с мишката по разни бутони и менюта, но за други, особенно ако компютъра им е по-слаб, е много по-добре да си пускат музиката просто с една команда
Мнението ми е че в повечето случаи е напълно погрешно функционалността на една програма да се обвърза с интерфейса. За съжеление повечето програмисти са придобили този вреден навик от програмирането под windows.
Начина за програмиране под linux е различен (поне според мойте наблюдения

'> ) - програмата си работи независимо от интерфейса, а в допълнение към нея после се добавая и самия интерфейс (или интерфейси). Така самата програма е доста по-гъвкава - може лесно да се нагоди към предпочитания от потребителя интерфейс.
Добър пример за това е mplayer - това е медиа плеър, на който оригиналния интерфейс е CLI

'> Чак след време друг програмист решава да добави поддръжка и за графичен интерфейс.
Този начин на програмиране следва и логиката на linuxa за "малките инструменти"

'> - ако ти трябва някаква функционалност за твоето приложение, първо гледаш дали някой вече не е направил нещо подобно, което да използваш. Например - трябва ти "търсене на файл". Логично е вместо да седнеш да пишеш свой код са търсене, просто да използваш командата "find" но линукса и да визуализираш резултата. Но това трудно можеше да стане, ако find беше свързан с някакъв графичен интерфейс.
При windows това е компенсирано с използването на OLE, по-късно и на COM моделите, но за съжаление аналога в *nix - CORBA не се използва толкова масово.