<HTML><HEAD>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
+<META HTTP-EQUIV="Content-Type" "text/html; charset=utf-8">
<TITLE>True Unix GUI 2.0</TITLE>
-<META NAME="description" CONTENT="ðÒÏÅËÔ ÕÓÔÒÏÊÓÔ×Á GUI ÓÒÅÄÙ × ÓÔÉÌÅ
-Unix ÏÔÔÁÌËÉ×ÁÑÓØ ÏÔ ÒÅÁÌÉÊ 2009 ÇÏÄÁ">
+<META NAME="description" CONTENT="Проект устройства GUI среды в стиле
+Unix отталкиваясь от реалий 2009 года">
</HEAD><BODY>
<H1>True Unix GUI 2.0</H1>
-<p>ëÏÇÄÁ-ÔÏ ÄÁ×ÎÏ Ñ ÎÁÐÉÓÁÌ ÓÔÁÔØÀ <a href="true_unix_gui.html">True Unix
-GUI</a> ÐÏ ÐÏ×ÏÄÕ ÔÏÇÏ, ËÁË ÖÅ ÄÏÌÖÅÎ ÂÙÔØ ÕÓÔÒÏÅÎ ÉÎÔÅÒÆÅÊÓ
-ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÓÏÈÒÁÎÉÔØ ×ÓÅ ÄÏÓÔÏÉÎÓÔ×Á ËÏÍÁÎÄÎÏÊ ÓÔÒÏËÉ
-Unix, ÎÏ ÐÒÉ ÜÔÏÍ ÍÁËÓÉÍÁÌØÎÏ ÐÏÄÄÅÒÖÁÔØ ÒÅÛÅÎÉÅ ÔÅÈ ÚÁÄÁÞ, ËÏÔÏÒÙÅ
-ÓÔÏÑÔ ÐÅÒÅÄ ÓÏ×ÒÅÍÅÎÎÙÍ ÐÏÌØÚÏ×ÁÔÅÌÅÍ.</p>
-<p>éÄÅÉ, ÉÚÌÏÖÅÎÎÙÅ ÔÁÍ, ÐÏËÁ ÏÓÔÁÀÔÓÑ ÎÁ ÕÒÏ×ÎÅ ÂÌÁÇÉÈ ÐÏÖÅÌÁÎÉÊ.</p>
-<p>óÅÊÞÁÓ ÐÏÐÒÏÂÕÀ ÒÅÛÉÔØ ÂÏÌÅÅ ÐÒÏÓÔÕÀ ÚÁÄÁÞÕ - ÏÐÉÓÁÔØ, ËÁË ÍÏÖÅÔ ÂÙÔØ
-ÕÓÔÒÏÅÎÁ ËÏÎÓÉÓÔÅÎÔÎÁÑ ÐÏ ÉÎÔÅÒÆÅÊÓÕ ÓÉÓÔÅÍÁ ÐÒÉÌÏÖÅÎÉÊ ÄÌÑ unix,
-ÌÉÛÅÎÎÁÑ ÏÓÎÏ×ÎÙÈ ÎÅÄÏÓÔÁÔËÏ× ÓÕÝÅÓÔ×ÕÀÝÉÈ desktop environments -
-ÎÅÓÔÁÂÉÌØÎÏÓÔÉ, ÓÌÏÖÎÏÓÔÉ × ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÉ etc.
-<h2>âÜËÇÒÁÕÎÄ</h2>
+<p>Когда-то давно я написал статью <a href="true_unix_gui.html">True Unix
+GUI</a> по поводÑ\83 Ñ\82ого, как же должен бÑ\8bÑ\82Ñ\8c Ñ\83Ñ\81Ñ\82Ñ\80оен инÑ\82еÑ\80Ñ\84ейÑ\81
+полÑ\8cзоваÑ\82елÑ\8f длÑ\8f Ñ\82ого, Ñ\87Ñ\82обÑ\8b Ñ\81оÑ\85Ñ\80аниÑ\82Ñ\8c вÑ\81е доÑ\81Ñ\82оинÑ\81Ñ\82ва командной Ñ\81Ñ\82Ñ\80оки
+Unix, но при этом максимально поддержать решение тех задач, которые
+стоят перед современным пользователем.</p>
+<p>Идеи, изложенные там, пока остаются на уровне благих пожеланий.</p>
+<p>Сейчас попробую решить более простую задачу - описать, как может быть
+устроена консистентная по интерфейсу система приложений для unix,
+лишенная основных недостатков существующих desktop environments -
+нестабильности, сложности в программировании etc.
+<h2>Бэкграунд</h2>
<p>
-þÅÇÏ ÈÏÞÅÔ ÏÔ ÉÎÔÅÒÆÅÊÓÁ ËÏÍÐØÀÔÅÒÎÏÊ ÓÉÓÔÅÍÙ ÐÏÌØÚÏ×ÁÔÅÌØ? îÁÓËÏÌØËÏ Ñ
-ÐÏÎÉÍÁÀ, ÐÒÅÖÄÅ ×ÓÅÇÏ ÏÎ ÈÏÞÅÔ, ÞÔÏÂÙ ÅÇÏ ÎÅ ÚÁÓÔÁ×ÌÑÌÉ ÄÕÍÁÔØ. åÓÌÉ
-ËÁËÉÅ-ÔÏ ÄÅÊÓÔ×ÉÑ ÐÏ×ÔÏÒÑÀÔÓÑ ÄÏÓÔÁÔÏÞÎÏ ÞÁÓÔÏ, ÞÔÏÂÙ ÏÎÉ ÐÒÅ×ÒÁÔÉÌÉÓØ ×
-ÐÁÌØÃÅ×ÙÅ ÐÒÉ×ÙÞËÉ, ÎÁÐÒÉÍÅÒ, ÏÔËÒÙÔÉÅ ÆÁÊÌÁ ÞÅÒÅÚ ÓÔÁÎÄÁÒÔÎÙÊ ÄÉÁÌÏÇ,
-ÉÌÉ ËÌÉË ÐÒÁ×ÏÊ ËÎÏÐËÏÊ, ÏÎÉ ÄÏÌÖÎÙ ÒÁÂÏÔÁÔØ ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, Ó ËÁËÉÍ
-ÐÒÉÌÏÖÅÎÉÅÍ ÐÏÌØÚÏ×ÁÔÅÌØ ÓÅÊÞÁÓ ÒÁÂÏÔÁÅÔ. ôÏ ÅÓÔØ ÉÎÔÅÒÆÅÊÓ ÄÏÌÖÅÎ ÂÙÔØ
-ËÏÎÓÉÓÔÅÎÔÎÙÍ. é ÈÏÔÉÍ ÍÙ ÜÔÏÇÏ ÉÌÉ ÎÅÔ, ÜÔÉ ÐÒÉ×ÙÞËÉ ÓÆÏÒÍÉÒÏ×ÁÎÙ ×
-ÒÁÍËÁÈ CUA-ÐÁÒÁÄÉÇÍÙ ÉÎÔÅÒÆÅÊÓÁ
+Чего хочет от интерфейса компьютерной системы пользователь? Насколько я
+понимаÑ\8e, пÑ\80ежде вÑ\81его он Ñ\85оÑ\87еÑ\82, Ñ\87Ñ\82обÑ\8b его не заÑ\81Ñ\82авлÑ\8fли дÑ\83маÑ\82Ñ\8c. Ð\95Ñ\81ли
+какие-то действия повторяются достаточно часто, чтобы они превратились в
+палÑ\8cÑ\86евÑ\8bе пÑ\80ивÑ\8bÑ\87ки, напÑ\80имеÑ\80, оÑ\82кÑ\80Ñ\8bÑ\82ие Ñ\84айла Ñ\87еÑ\80ез Ñ\81Ñ\82андаÑ\80Ñ\82нÑ\8bй диалог,
+или клик правой кнопкой, они должны работать независимо от того, с каким
+пÑ\80иложением полÑ\8cзоваÑ\82елÑ\8c Ñ\81ейÑ\87аÑ\81 Ñ\80абоÑ\82аеÑ\82. То еÑ\81Ñ\82Ñ\8c инÑ\82еÑ\80Ñ\84ейÑ\81 должен бÑ\8bÑ\82Ñ\8c
+консистентным. И хотим мы этого или нет, эти привычки сформированы в
+рамках CUA-парадигмы интерфейса
</p>
-<p>óÅÊÞÁÓ ÜÔÏ × ÏÓÎÏ×ÎÏÍ ÄÏÓÔÉÇÁÅÔÓÑ ÐÕÔÅÍ ÕÂÉÒÁÎÉÑ ÜÔÉÈ
-ÆÕÎËÃÉÊ × ÒÁÚ×ÅÓÉÓÔÙÅ ÂÉÂÌÉÏÔÅËÉ ÉÎÔÅÒÆÅÊÓÎÙÈ ÔÕÌËÉÔÏ×.
+<p>Сейчас это в основном достигается путем убирания этих
+функций в развесистые библиотеки интерфейсных тулкитов.
</p>
<p>
-ôÕÌËÉÔÙ ÐÏÌÕÞÁÀÔÓÑ ÂÏÌØÛÉÍÉ, API ÒÁÚ×ÅÓÉÓÔÙÍÉ, ÒÁÚ×ÉÔÉÅ ÐÒÉ×ÏÄÉÔ Ë
-ÎÁÒÕÛÅÎÉÀ ÏÂÒÁÔÎÏÊ ÓÏ×ÍÅÓÔÉÍÏÓÔÉ É Ô.Ä. âÏÌÅÅ-ÍÅÎÅÅ ÐÒÉÌÉÞÎÙÈ
-ÒÅÚÕÌØÔÁÔÏ× ÎÁ ÜÔÏÍ ÐÕÔÉ ÕÄÁÅÔÓÑ ÄÏÂÉÔØÓÑ ÔÏÌØËÏ ÂÏÌØÛÉÍ ËÏÍÍÅÒÞÅÓËÉÍ
-ÆÉÒÍÁÍ ×ÒÏÄÅ Apple É Microsoft, ËÏÔÏÒÙÅ ÍÏÇÕÔ ÓÅÂÅ ÐÏÚ×ÏÌÉÔØ ÚÁÔÒÁÔÙ ÎÁ
-Q&A, ÐÒÅ×ÙÛÁÀÝÉÅ ÚÁÔÒÁÔÙ ÎÁ ÒÁÚÒÁÂÏÔËÕ, ÍÏÇÕÔ ×ÙÓÔÁ×ÌÑÔØ ÖÅÓÔËÉÅ
-ÔÒÅÂÏ×ÁÎÉÑ Ë 3-rd party ÒÁÚÒÁÂÏÔÞÉËÁÍ É Ô.Ä. é ×ÓÅ ÒÁ×ÎÏ ÐÏÌÕÞÁÅÔÓÑ
-ÐÌÏÈÏ.
-<p>÷ ÍÉÒÅ OpenSource ×ÓÅ ÅÝÅ ÈÕÖÅ. îÅÌØÚÑ ÚÁÓÔÁ×ÉÔØ ÎÅÚÁ×ÉÓÉÍÏÇÏ
-ÒÁÚÒÁÂÏÔÞÉËÁ ÓÏÂÌÀÄÁÔØ HIG, ÅÓÌÉ ÜÔÏÔ HIG ÅÍÕ ÎÅ ÎÒÁ×ÉÔÓÑ.</p>
-<P>îÅÚÁ×ÉÓÉÍÙÅ ÒÁÚÒÁÂÏÔÞÉËÉ, ÜÔÏ ËÁË ÐÒÁ×ÉÌÏ, ÌÀÄÉ Ó ÂÏÌÅÅ ÓÌÏÖÎÙÍÉ
-ÐÒÉ×ÙÞËÁÍÉ, ÞÅÍ ÐÒÏÓÔÙÅ ÐÏÌØÚÏ×ÁÔÅÌÉ. óÅÒØÅÚÎÏÇÏ ÒÁÚÒÁÂÏÔÞÉËÁ ÎÅ ÕÓÔÒÏÉÔ
-× ËÁÞÅÓÔ×Å ÒÅÄÁËÔÏÒÁ pico ÉÌÉ mcedit - ÅÍÕ ÐÏÄÁ×ÁÊ vim ÉÌÉ emacs Ó
-ÓÏ×ÅÒÛÅÎÎÏ ÕÖÁÓÎÙÍÉ ÄÌÑ ÐÒÏÓÔÏÇÏ ÐÏÌØÚÏ×ÁÔÅÌÑ ËÌÁ×ÉÛÎÙÍÉ ËÏÍÁÎÄÁÍÉ. úÁÔÏ
-ÍÏÝÎÙÊ É ÕÄÏÂÎÙÊ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÐÒÉ×ÙÞÎÏÇÏ.</p>
-<p>åÝÅ ÈÏÒÏÛÅÍÕ ÒÁÚÒÁÂÏÔÞÉËÕ ÎÕÖÎÏ ÐÏÎÉÍÁÔØ, ÞÔÏ ÄÅÌÁÅÔ ÔÏÔ ËÕÓÏË ÓÏÆÔÁ,
-ËÏÔÏÒÙÊ ÏÎ ÒÁÚÒÁÂÁÔÙ×ÁÅÔ. á ËÏÇÄÁ ÜÔÏÔ ËÕÓÏË ÓÏÆÔÁ ÚÁ×ÉÓÉÔ ÏÔ ËÕÞÉ
-ÂÉÂÌÉÏÔÅË, ÄÁ ÜÔÉ ÂÉÂÌÉÏÔÅËÉ ÐÏ ÓÏÂÓÔ×ÅÎÎÏÊ ÉÎÉÃÉÁÔÉ×Å ÐÌÏÄÑÔ ÐÏÔÏËÉ
-×ÙÐÏÌÎÅÎÉÑ, ÄÁ ×ÚÁÉÍÏÄÅÊÓÔ×ÕÀÔ ÎÅ ÓÌÉÛËÏÍ ÄÏËÕÍÅÎÔÉÒÏ×ÁÎÎÙÍ ÏÂÒÁÚÏÍ Ó
-ÐÒÏÞÉÍÉ ËÏÍÐÏÎÅÎÔÁÍÉ ÓÉÓÔÅÍÙ, ËÁÒÔÉÎÕ ÍÉÒÁ ÐÒÉÈÏÄÉÔÓÑ ÏÇÒÁÎÉÞÉ×ÁÔØ
-ÉÓËÕÓÓÔ×ÅÎÎÏ. ÷ ÒÅÚÕÌØÔÁÔÅ ×ÏÚÎÉËÁÀÔ ÔÁËÉÅ ×ÅÝÉ ËÁË "Ñ ÔÕÔ ÎÁÛÅÌ
-ÚÁÍÅÞÁÔÅÌØÎÙÊ framework, Ñ ÐÒÁ×ÄÁ × ÎÅÍ ÎÉÆÉÇÁ ÎÅ ÒÁÚÏÂÒÁÌÓÑ, ÎÏ
-ÓÍÏÔÒÉÔÅ ËÁË ÚÄÏÒÏ×Ï ÐÏÌÕÞÉÌÏÓØ". äÌÑ ÍÅÎÑ ÐÏÄÏÂÎÏÅ ÚÁÑ×ÌÅÎÉÅ
-ÒÁÚÒÁÂÏÔÞÉËÁ - ÏÄÎÏÚÎÁÞÎÙÊ show-stopper. éÓÐÏÌØÚÏ×ÁÔØ ÔÁËÕÀ ÐÒÏÇÒÁÍÍÕ
-ÎÅÌØÚÑ. îÏ ÄÒÕÇÉÈ-ÔÏ ÎÅÔ. ðÉÓÁÔØ ÎÁÄÅÖÎÙÅ ÐÒÏÇÒÁÍÍÙ ÐÏÞÔÉ ÞÔÏ
-ÒÁÚÕÞÉÌÉÓØ. á ÐÏÌØÚÏ×ÁÔÅÌØ ÈÏÞÅÔ ÆÉÞ. </p>
-<p>ðÏ-ÍÏÅÍÕ, × ËÏÎÃÅ ÐÅÒ×ÏÇÏ ÄÅÓÑÔÉÌÅÔÉÑ XXI ×ÅËÁ ÓÔÒÅÍÌÅÎÉÅ ËÏ
-ÍÎÏÖÅÓÔ×Õ ÆÉÞ - ÁÔÁ×ÉÚÍ, ÐÏÄÂÎÙÊ ÎÅËÏÎÔÒÏÌÉÒÕÅÍÏÊ ÌÀÂ×É ÎÅËÏÔÏÒÙÈ
-ÐÒÉÍÁÔÏ× Ë ÓÏÌÉ. ðÒÏÛÌÉ ÄÁ×ÎÏ ÔÅ ×ÒÅÍÅÎÁ, ËÏÇÄÁ × ÔÉÐÉÞÎÏÍ ÍÅÓÔÏÏÂÉÔÁÎÉÉ
-ÐÒÉÍÁÔÏ× ÓÏÌÉ ÂÙÌ ÄÅÆÉÃÉÔ. å£ ÄÁ×ÎÏ ÕÖÅ ÎÁÕÞÉÌÉÓØ ÄÏÂÙ×ÁÔØ É ÉÚ ÍÏÒÑ, É
-ÉÚ ÚÅÍÌÉ × ÌÀÂÙÈ ÔÒÅÂÕÅÍÙÈ ËÏÌÉÞÅÓÔ×ÁÈ. îÏ ×ÏÔ ÏÔ×ÙËÎÕÔØ ÓÏÌÉÔØ ×ÓÅ
-ÐÏÄÒÑÄ ÍÙ ÎÅ ÍÏÖÅÍ. âÉÏÌÏÇÉÑ ÔÁË ÂÙÓÔÒÏ ÎÅ ÐÅÒÅÓÔÒÁÉ×ÁÅÔÓÑ</p>
-<p>ôÁË ÖÅ É Ó ÆÉÞÁÍÉ. ëÁË ÐÒÁ×ÉÌÏ, ÔÉÐÉÞÎÙÊ ÐÏÌØÚÏ×ÁÔÅÌØ ÎÅ ÚÎÁÅÔ ×ÓÅÈ
-×ÏÚÍÏÖÎÏÓÔÅÊ ÔÅÈ ÐÒÏÇÒÁÍÍ, ËÏÔÏÒÙÍÉ ÏÎ ÐÏÌØÚÕÅÔÓÑ. ÷ÏÚÎÉËÁÅÔ ÎÏ×ÁÑ
-ÚÁÄÁÞÁ, ÓÔÁ×ÉÔÓÑ ×ÏÐÒÏÓ ÎÅ «ëÁË ÒÅÛÉÔØ ÜÔÕ ÚÁÄÁÞÕ ÕÖÅ ÚÎÁËÏÍÙÍÉ
-ÉÎÓÔÒÕÍÅÎÔÁÍÉ» (× ÂÏÌØÛÉÎÓÔ×Å ÓÌÕÞÁÅ× ÎÁ ÜÔÏÔ ×ÏÐÒÏÓ ÅÓÔØ
-ÏÓÍÙÓÌÅÎÎÙÊ ÏÔ×ÅÔ), Á «çÄÅ ÂÙ ÎÁÒÙÔØ ÔÁËÕÀ ÐÒÏÇÒÁÍÍÕ, ËÏÔÏÒÁÑ
-ÄÅÌÁÅÔ ×ÓÅ ÞÔÏ ÍÎÅ ÎÁÄÏ É ÅÝÅ ÎÅÍÎÏÖËÏ». ðÒÏÇÒÁÍÍÙ ÒÁÓÓÍÁÔÒÉ×ÁÀÔÓÑ
-ÎÅ ËÁË ÉÎÓÔÒÕÍÅÎÔÙ, Á ËÁË ÜÔÁËÉÅ ÍÁÇÉÞÅÓËÉÅ ÄÁÖÅ ÎÅ ÚÁËÌÉÎÁÎÉÑ, Á
-ÁÒÔÅÆÁËÔÙ, ×ÒÏÄÅ ÓËÁÔÅÒÔÉ-ÓÁÍÏÂÒÁÎËÉ.
+Тулкиты получаются большими, API развесистыми, развитие приводит к
+нарушению обратной совместимости и т.д. Более-менее приличных
+результатов на этом пути удается добиться только большим коммерческим
+фирмам вроде Apple и Microsoft, которые могут себе позволить затраты на
+Q&A, пÑ\80евÑ\8bÑ\88аÑ\8eÑ\89ие заÑ\82Ñ\80аÑ\82Ñ\8b на Ñ\80азÑ\80абоÑ\82кÑ\83, могÑ\83Ñ\82 вÑ\8bÑ\81Ñ\82авлÑ\8fÑ\82Ñ\8c жеÑ\81Ñ\82кие
+требования к 3-rd party разработчикам и т.д. И все равно получается
+плоÑ\85о.
+<p>В мире OpenSource все еще хуже. Нельзя заставить независимого
+разработчика соблюдать HIG, если этот HIG ему не нравится.</p>
+<P>Независимые разработчики, это как правило, люди с более сложными
+пÑ\80ивÑ\8bÑ\87ками, Ñ\87ем пÑ\80оÑ\81Ñ\82Ñ\8bе полÑ\8cзоваÑ\82ели. СеÑ\80Ñ\8cезного Ñ\80азÑ\80абоÑ\82Ñ\87ика не Ñ\83Ñ\81Ñ\82Ñ\80оиÑ\82
+в качестве редактора pico или mcedit - ему подавай vim или emacs с
+совершенно ужасными для простого пользователя клавишными командами. Зато
+мощный и удобный для пользователя привычного.</p>
+<p>Еще хорошему разработчику нужно понимать, что делает тот кусок софта,
+который он разрабатывает. А когда этот кусок софта зависит от кучи
+библиотек, да эти библиотеки по собственной инициативе плодят потоки
+выполнения, да взаимодействуют не слишком документированным образом с
+пÑ\80оÑ\87ими компоненÑ\82ами Ñ\81иÑ\81Ñ\82емÑ\8b, каÑ\80Ñ\82инÑ\83 миÑ\80а пÑ\80иÑ\85одиÑ\82Ñ\81Ñ\8f огÑ\80аниÑ\87иваÑ\82Ñ\8c
+искусственно. В результате возникают такие вещи как "я тут нашел
+замечательный framework, я правда в нем нифига не разобрался, но
+смотрите как здорово получилось". Для меня подобное заявление
+разработчика - однозначный show-stopper. Использовать такую программу
+нельзя. Но других-то нет. Писать надежные программы почти что
+разучились. А пользователь хочет фич. </p>
+<p>По-моему, в конце первого десятилетия XXI века стремление ко
+множеству фич - атавизм, подбный неконтролируемой любви некоторых
+пÑ\80имаÑ\82ов к Ñ\81оли. Ð\9fÑ\80оÑ\88ли давно Ñ\82е вÑ\80емена, когда в Ñ\82ипиÑ\87ном меÑ\81Ñ\82ообиÑ\82ании
+пÑ\80имаÑ\82ов Ñ\81оли бÑ\8bл деÑ\84иÑ\86иÑ\82. Ð\95Ñ\91 давно Ñ\83же наÑ\83Ñ\87илиÑ\81Ñ\8c добÑ\8bваÑ\82Ñ\8c и из моÑ\80Ñ\8f, и
+из земли в любых требуемых количествах. Но вот отвыкнуть солить все
+подÑ\80Ñ\8fд мÑ\8b не можем. Ð\91иологиÑ\8f Ñ\82ак бÑ\8bÑ\81Ñ\82Ñ\80о не пеÑ\80еÑ\81Ñ\82Ñ\80аиваеÑ\82Ñ\81Ñ\8f</p>
+<p>Так же и с фичами. Как правило, типичный пользователь не знает всех
+возможностей тех программ, которыми он пользуется. Возникает новая
+задача, ставится вопрос не «Как решить эту задачу уже знакомыми
+инструментами» (в большинстве случаев на этот вопрос есть
+осмысленный ответ), а «Где бы нарыть такую программу, которая
+делает все что мне надо и еще немножко». Программы рассматриваются
+не как инструменты, а как этакие магические даже не заклинания, а
+артефакты, вроде скатерти-самобранки.
</p>
-<p>á ×ÓÅ ÐÏÔÏÍÕ, ÞÔÏ ÎÁÐÉÓÁÔØ ÐÒÏÇÒÁÍÍÕ Ó ÂÏÌÅÅ-ÍÅÎÅÅ ÓÔÁÎÄÁÒÔÎÙÍ GUI -
-ÓÌÏÖÎÏ. üÔÏ ×ÁÍ ÎÅ Ä×ÕÈÓÔÒÏÞÎÙÊ shell-ÓËÒÉÐÔ. ÷ ÔÉÐÉÞÎÏÍ ÉÎÔÅÒÆÅÊÓÎÏÍ
-ÔÕÌËÉÔÅ ÄÁÖÅ ÔÒÉ×ÉÁÌØÎÏÅ ÏËÏÛËÏ Ó ÍÅÎÀÛËÏÊ ÉÚ ÐÑÔÉ ÐÏÚÉÃÉÊ É ÐÁÒÏÊ
-ÓÔÁÎÄÁÒÔÎÙÈ ÄÉÁÌÏÇÏ× ÓÄÅÌÁÔØ - ÎÁ ÜËÒÁÎ ÎÅ ×ÌÅÚÅÔ.
+<p>А все потому, что написать программу с более-менее стандартным GUI -
+сложно. Это вам не двухстрочный shell-скрипт. В типичном интерфейсном
+тулките даже тривиальное окошко с менюшкой из пяти позиций и парой
+стандартных диалогов сделать - на экран не влезет.
</p>
-<p>îÁÄÏ ËÁË-ÔÏ ÜÔÕ ÓÉÔÕÁÃÉÀ ÍÅÎÑÔØ</p>
-<h2>ôÒÅÂÏ×ÁÎÉÑ</h2>
+<p>Надо как-то эту ситуацию менять</p>
+<h2>Требования</h2>
<ol>
-<li>íÁËÓÉÍÁÌØÎÁÑ ÎÅÚÁ×ÉÓÉÍÏÓÔØ ×ÓÅÈ ËÏÍÐÏÎÅÎÔ. ó ÏÄÎÏÊ
-ÓÔÏÒÏÎÙ ÄÏÌÖÎÁ ÂÙÔØ ×ÏÚÍÏÖÎÏÓÔØ ÏÂÒÁÂÏÔÁÔØ ÐÒÁËÔÉÞÅÓËÉ ÌÀÂÕÀ ÏÛÉÂËÕ É ÎÅ
-ÐÏÔÅÒÑÔØ ÐÏÌØÚÏ×ÁÔÅÌØÓËÉÈ ÄÁÎÎÙÈ, Ó ÄÒÕÇÏÊ - ÅÓÌÉ ÍÎÅ ÎÅ ÎÒÁ×ÉÔÓÑ ÄÉÁÌÏÇ
-ÏÔËÒÙÔÉÑ ÆÁÊÌÏ×, Ñ ÄÏÌÖÅÎ ÉÍÅÔØ ×ÏÚÍÏÖÎÏÓÔØ ÚÁÍÅÎÉÔØ ÅÇÏ ÎÁ ÂÏÌÅÅ ÄÒÕÇÏÊ
-(ÂÌÁÇÏ × ÄÉÓÔÒÉÂÕÔÉ×Å ÉÈ ÐÏÌÎÏ ÒÁÚÎÙÈ) ÂÅÚ ÐÅÒÅËÏÍÐÉÌÑÃÉÉ (É ÔÅÍ ÂÏÌÅÅ,
-ÐÅÒÅÐÉÓÙ×ÁÎÉÑ) ×ÓÅÈ ÐÒÏÇÒÁÍÍ, ËÏÔÏÒÙÍÉ Ñ ÐÏÌØÚÕÀÓØ.
-<li>îÁÌÉÞÉÅ ÏÄÎÏÇÏ ÒÅÛÅÎÉÑ ÄÌÑ ËÁÖÄÏÊ ÚÁÄÁÞÉ. åÓÌÉ ÐÏÓÍÏÔÒÅÔØ ÓËÏÌØËÏ
-ÒÅÁÌÉÚÁÃÉÊ ÐÒÏÔÏËÏÌÁ HTTP ÅÓÔØ × ÔÉÐÉÞÎÏÊ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ ÓÉÓÔÅÍÅ -
-ÍÏÖÎÏ ÐÒÉÊÔÉ × ÕÖÁÓ. îÅÔ, Ñ ÎÅ ÐÒÏÔÉ× ÔÏÇÏ, ÞÔÏÂÙ × ÄÉÓÔÒÉÂÕÔÉ×Å ÂÙÌÉ
-ÎÅÓËÏÌØËÏ ÒÅÁÌÉÚÁÃÉÊ, ÞÔÏÂÙ Ñ ÍÏÇ ×ÙÂÒÁÔØ ÎÁÉÂÏÌÅÅ ÍÅÎÑ ÕÓÔÒÁÉ×ÁÀÝÕÀ,
-ÉÌÉ ÄÁÖÅ ÕÓÔÁÎÏ×ÌÅÎÎÙÈ ÏÄÎÏ×ÒÅÍÅÎÎÏ, ÞÔÏÂÙ ×ÙÂÉÒÁÔØ ÍÏÖÎÏ ÂÙÌÏ × ÍÏÍÅÎÔ
-ÉÓÐÏÌØÚÏ×ÁÎÉÑ. îÏ ×ÏÔ ÎÅÔ - ÔÁ ÉÌÉ ÉÎÁÑ ÒÅÁÌÉÚÁÃÉÑ ÎÁÍÅÒÔ×Ï ×ÓÔÒÏÅÎÁ ×
-ËÁÖÄÕÀ ÐÒÏÇÒÁÍÍÕ ÉÌÉ ÂÉÂÌÉÏÔÅËÕ ÑÚÙËÁ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ.
-<li>÷ÏÚÍÏÖÎÏÓÔØ ÐÉÓÁÔØ ÎÁ ÌÀÂÏÍ ÑÚÙËÅ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÑ. óÏ×ÒÅÍÅÎÎÙÊ
-ÐÏÄÈÏÄ ÐÒÉ×ÏÄÉÔ Ë ÔÏÍÕ, ÞÔÏ ÂÏÌØÛÁÑ ÞÁÓÔØ ÆÕÎËÃÉÏÎÁÌØÎÏÓÔÉ ÒÅÁÌÉÚÏ×ÁÎÁ ×
-×ÉÄÅ ÓÔÁÎÄÁÒÔÎÙÈ ÂÉÂÌÉÏÔÅË Ó ÉÎÔÅÒÆÅÊÓÏÍ ÑÚÙËÁ C ÉÌÉ C++. ÷ÓÔÒÏÉÔØ ÜÔÉ
-ÂÉÂÌÉÏÔÅËÉ × ÂÏÌÅÅ ×ÙÓÏËÏÕÒÏ×ÎÅ×ÙÊ ÑÚÙË ÎÅ ×ÓÅÇÄÁ ÔÒÉ×ÉÁÌØÎÏ, ÏÓÏÂÅÎÎÏ
-ÅÓÌÉ ÒÅÞØ ÉÄÅÔ Ï ÑÚÙËÅ, ÕÖÅ ÉÍÅÀÝÅÍ Ó×ÏÉ ÐÒÅÄÓÔÁ×ÌÅÎÉÑ Ï ÃÉËÌÅ ÏÂÒÁÂÏÔËÉ
-ÓÏÂÙÔÉÊ É ÍÅÎÅÄÖÍÅÔÅ ÐÁÍÑÔÉ.
-<li>óÅÔÅ×ÁÑ ÐÒÏÚÒÁÞÎÏÓÔØ. ëÁË ÐÒÁ×ÉÌÏ, × Unix ÉÓÐÏÌØÚÕÅÔÓÑ ËÁËÏÊ-ÎÉÂÕÄØ
-ÐÒÏÔÏËÏÌ ÕÄÁÌÅÎÎÏÇÏ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄ, ÎÁÐÒÉÍÅÒ ssh, ËÏÔÏÒÙÊ ÐÏÚ×ÏÌÑÅÔ
-×ÐÏÌÎÅ ÅÓÔÅÓÔ×ÅÎÎÙÍ ÏÂÒÁÚÏÍ ×ÙÐÏÌÎÑÔØ ÐÒÏÇÒÁÍÍÕ (× ÔÏÍ ÞÉÓÌÅ É ÉÍÅÀÝÕÀ
-GUI) ÎÁ ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÅ, ÐÏÌÕÞÁÑ Å£ ÒÅÚÕÌØÔÁÔÙ ÎÁ ÌÏËÁÌØÎÙÊ ÄÉÓÐÌÅÊ.
-ëÁË ÐÒÁ×ÉÌÏ, ÜÔÏÔ ÐÒÏÔÏËÏÌ ÉÍÅÅÔ ÅÝÅ É ÕÄÏÂÎÙÅ ×ÓÔÒÏÅÎÎÙÅ ÓÒÅÄÓÔ×Á
-Á×ÔÏÒÉÚÁÃÉÉ. ôÅÍ ÎÅ ÍÅÎÅÅ, ÐÏÞÔÉ ÎÉËÏÇÄÁ, ËÒÏÍÅ ÎÅËÏÔÏÒÙÈ ÐÒÏÄ×ÉÎÕÔÙÈ
-imap-ËÌÉÅÎÔÏ×, ÜÔÁ ×ÏÚÍÏÖÎÏÓÔØ ÎÅ ÉÓÐÏÌØÚÕÅÔÓÑ ÄÌÑ ÄÏÓÔÕÐÁ Ë ÄÁÎÎÙÍ
-ÈÒÁÎÑÝÉÍÓÑ ÎÁ ÕÄÁÌÅÎÎÏÊ ÍÁÛÉÎÅ - ÉÓÐÏÌØÚÕÅÔÓÑ ÐÒÑÍÏÅ TCP-ÓÏÅÄÉÎÅÎÉÅ, Õ
-ËÏÔÏÒÏÇÏ ÍÏÇÕÔ ÂÙÔØ ÐÒÏÂÌÅÍÙ Ó ÆÁÊÒ×ÏÌÌÁÍÉ, ÔÒÅÂÕÅÔÓÑ ÏÔÄÅÌØÎÁÑ
-Á×ÔÏÒÉÚÁÃÉÑ (Á ÐÒÏ ident-ÐÒÏÔÏËÏÌ × ÎÁÛÅ ×ÒÅÍÑ ÍÏÖÎÏ ÓÍÅÌÏ ÚÁÂÙÔØ).
-<li>÷ÉÒÔÕÁÌØÎÁÑ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ. ôÏ ÞÔÏ ÆÁÊÌÙ ÍÏÇÕÔ ÌÅÖÁÔØ ÎÅ ÔÏÌØËÏ ×
-ÌÏËÁÌØÎÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ, ÎÏ É × ÕÄÁÌÅÎÎÏÊ, ÄÏÓÔÕÐÎÏÊ ÌÉÂÏ ÐÏ
-ÐÒÏÔÏËÏÌÕ ×ÙÐÏÌÎÅÎÉÑ ËÏÍÁÎÄ, ÌÉÂÏ ÐÏ ÐÒÏÔÏËÏÌÕ ÓÅÔÅ×ÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ,
-ÎÁ ËÁËÏÍ-ÎÉÂÕÄØ ÍÏÂÉÌØÎÏÍ ÕÓÔÒÏÊÓÔ×Å, × ÁÒÈÉ×Å, ÎÁ ÓßÅÍÎÏÍ ÎÏÓÉÔÅÌÅ etc,
-ÚÎÁÀÔ ×ÓÅ. îÏ ÓÉÔÕÁÃÉÑ Ó VFS ÏÓÔÁ×ÌÑÅÔ ÖÅÌÁÔØ ÌÕÞÛÅÇÏ.
-<li>ðÏÎÑÔÉÅ ÌÏÇÉÞÅÓËÏÊ ËÏÎÓÏÌÉ. ëÏÇÄÁ-ÔÏ ÄÁ×ÎÏ, ×ÓÅ ÞÅÍ ÒÁÓÐÏÌÁÇÁÌ
-ÐÏÌØÚÏ×ÁÔÅÌØ ÄÌÑ ÏÂÍÅÎÁ ÉÎÆÏÒÍÁÃÉÅÊ Ó ËÏÍÐØÀÔÅÒÏÍ, ÂÙÌÏ ÄÉÓÐÌÅÊ,
-ËÌÁ×ÉÁÔÕÒÁ ÄÁ ÍÙÛØ. éÍÅÎÎÏ ÜÔÏÔ ÎÁÂÏÒ ÕÓÔÒÏÊÓÔ× ÐÏÄÄÅÒÖÉ×ÁÅÔ × ÎÏÒÍÅ
-ÐÒÏÔÏËÏÌ X11 (ÈÏÔÑ ÔÁÍ ÐÏÎÑÔÉÅ <i>ÐÏÚÉÃÉÏÎÉÒÕÀÝÅÇÏ ÕÓÔÒÏÊÓÔ×Á</i>
-ÎÅÓËÏÌØËÏ ÛÉÒÅ, ÞÅÍ «ÍÙÛØ»). ÷ ÓÏ×ÒÅÍÅÎÎÙÈ ÕÓÌÏ×ÉÑÈ ÜÔÏ
-ÄÁ×ÎÏ ÎÅ ÔÁË. ÷Ï-ÐÅÒ×ÙÈ, ÅÓÔØ ÍÉËÒÏÆÏÎ É ËÏÌÏÎËÉ. é ÇÄÅ ÂÙ ÐÏÌØÚÏ×ÁÔÅÌØ
-ÎÅ ÚÁÐÕÓÔÉÌ ÐÒÏÇÒÁÍÍÕ, ÒÁÂÏÔÁÔØ ÏÎÁ ÄÏÌÖÎÁ ÒÏ×ÎÏ Ó ÔÅÍÉ ËÏÌÏÎËÁÍÉ,
-ËÏÔÏÒÙÅ ÒÁÓÐÏÌÏÖÅÎÙ ÒÑÄÏÍ (ÉÌÉ ×ÏÏÂÝÅ ×ÍÏÎÔÉÒÏ×ÁÎÙ ×) ÄÉÓÐÌÅÅÍ ÜÔÏÇÏ
-ÐÏÌØÚÏ×ÁÔÅÌÑ. ÷Ï-×ÔÏÒÙÈ, ÅÓÔØ ÓËÁÎÅÒÙ, ÃÉÆÒÏ×ÙÅ ÆÏÔÏÁÐÐÁÒÁÔÙ,
-×ÅÂ-ËÁÍÅÒÙ, É ÐÒÏÞÉÅ ÉÓÔÏÞÎÉËÉ ÄÁÎÎÙÈ, ËÏÔÏÒÙÅ ËÁË-ÔÏ Ó×ÑÚÁÎÙ Ó
-ÆÉÚÉÞÅÓËÉÍ ÒÁÓÐÏÌÏÖÅÎÉÅÍ ÐÏÌØÚÏ×ÁÔÅÌÑ. åÓÔØ ÅÝÅ É ÓßÅÍÎÙÅ ÎÏÓÉÔÅÌÉ,
-ËÏÔÏÒÙÅ ÎÅ ÔÏÌØËÏ ÉÓÔÏÞÎÉË ÄÁÎÎÙÈ, É ÉÈ ÐÏÌÕÞÁÔÅÌØ. é ÔÏÖÅ ÎÁÈÏÄÑÔÓÑ ÔÁÍ
-ÖÅ, ÇÄÅ É ÐÏÌØÚÏ×ÁÔÅÌØ. ÷ÐÒÏÞÅÍ, ÓßÅÍÎÙÊ ÎÏÓÉÔÅÌØ - ÞÁÓÔÎÙÊ ÓÌÕÞÁÊ
-×ÉÒÔÕÁÌØÎÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ
+<li>Максимальная независимость всех компонент. С одной
+стороны должна быть возможность обработать практически любую ошибку и не
+поÑ\82еÑ\80Ñ\8fÑ\82Ñ\8c полÑ\8cзоваÑ\82елÑ\8cÑ\81киÑ\85 даннÑ\8bÑ\85, Ñ\81 дÑ\80Ñ\83гой - еÑ\81ли мне не нÑ\80авиÑ\82Ñ\81Ñ\8f диалог
+открытия файлов, я должен иметь возможность заменить его на более другой
+(благо в дистрибутиве их полно разных) без перекомпиляции (и тем более,
+пеÑ\80епиÑ\81Ñ\8bваниÑ\8f) вÑ\81еÑ\85 пÑ\80огÑ\80амм, коÑ\82оÑ\80Ñ\8bми Ñ\8f полÑ\8cзÑ\83Ñ\8eÑ\81Ñ\8c.
+<li>Наличие одного решения для каждой задачи. Если посмотреть сколько
+реализаций протокола HTTP есть в типичной пользовательской системе -
+можно прийти в ужас. Нет, я не против того, чтобы в дистрибутиве были
+несколько реализаций, чтобы я мог выбрать наиболее меня устраивающую,
+или даже установленных одновременно, чтобы выбирать можно было в момент
+использования. Но вот нет - та или иная реализация намертво встроена в
+каждую программу или библиотеку языка программирования.
+<li>Возможность писать на любом языке программирования. Современный
+подÑ\85од пÑ\80иводиÑ\82 к Ñ\82омÑ\83, Ñ\87Ñ\82о болÑ\8cÑ\88аÑ\8f Ñ\87аÑ\81Ñ\82Ñ\8c Ñ\84Ñ\83нкÑ\86ионалÑ\8cноÑ\81Ñ\82и Ñ\80еализована в
+виде стандартных библиотек с интерфейсом языка C или C++. Встроить эти
+библиотеки в более высокоуровневый язык не всегда тривиально, особенно
+если речь идет о языке, уже имеющем свои представления о цикле обработки
+событий и менеджмете памяти.
+<li>Сетевая прозрачность. Как правило, в Unix используется какой-нибудь
+пÑ\80оÑ\82окол Ñ\83даленного вÑ\8bполнениÑ\8f команд, напÑ\80имеÑ\80 ssh, коÑ\82оÑ\80Ñ\8bй позволÑ\8fеÑ\82
+вполне естественным образом выполнять программу (в том числе и имеющую
+GUI) на удаленной машине, получая её результаты на локальный дисплей.
+Как правило, этот протокол имеет еще и удобные встроенные средства
+авторизации. Тем не менее, почти никогда, кроме некоторых продвинутых
+imap-клиентов, эта возможность не используется для доступа к данным
+хранящимся на удаленной машине - используется прямое TCP-соединение, у
+которого могут быть проблемы с файрволлами, требуется отдельная
+авторизация (а про ident-протокол в наше время можно смело забыть).
+<li>Виртуальная файловая система. То что файлы могут лежать не только в
+локальной файловой системе, но и в удаленной, доступной либо по
+пÑ\80оÑ\82околÑ\83 вÑ\8bполнениÑ\8f команд, либо по пÑ\80оÑ\82околÑ\83 Ñ\81еÑ\82евой Ñ\84айловой Ñ\81иÑ\81Ñ\82емÑ\8b,
+на каком-нибудь мобильном устройстве, в архиве, на съемном носителе etc,
+знают все. Но ситуация с VFS оставляет желать лучшего.
+<li>Понятие логической консоли. Когда-то давно, все чем располагал
+полÑ\8cзоваÑ\82елÑ\8c длÑ\8f обмена инÑ\84оÑ\80маÑ\86ией Ñ\81 компÑ\8cÑ\8eÑ\82еÑ\80ом, бÑ\8bло диÑ\81плей,
+клавиатура да мышь. Именно этот набор устройств поддерживает в норме
+пÑ\80оÑ\82окол X11 (Ñ\85оÑ\82Ñ\8f Ñ\82ам понÑ\8fÑ\82ие <i>позиÑ\86иониÑ\80Ñ\83Ñ\8eÑ\89его Ñ\83Ñ\81Ñ\82Ñ\80ойÑ\81Ñ\82ва</i>
+несколько шире, чем «мышь»). В современных условиях это
+давно не так. Во-первых, есть микрофон и колонки. И где бы пользователь
+не запустил программу, работать она должна ровно с теми колонками,
+которые расположены рядом (или вообще вмонтированы в) дисплеем этого
+полÑ\8cзоваÑ\82елÑ\8f. Ð\92о-вÑ\82оÑ\80Ñ\8bÑ\85, еÑ\81Ñ\82Ñ\8c Ñ\81канеÑ\80Ñ\8b, Ñ\86иÑ\84Ñ\80овÑ\8bе Ñ\84оÑ\82оаппаÑ\80аÑ\82Ñ\8b,
+веб-камеры, и прочие источники данных, которые как-то связаны с
+физическим расположением пользователя. Есть еще и съемные носители,
+которые не только источник данных, и их получатель. И тоже находятся там
+же, где и пользователь. Впрочем, съемный носитель - частный случай
+виртуальной файловой системы
</li>
-<h2>áÒÈÉÔÅËÔÕÒÁ</h2>
+<h2>Архитектура</h2>
<p>
-ðÏÓËÏÌØËÕ ×ÎÉÚÕ Õ ÎÁÓ ÔÁËÉ Unix, ÁÒÈÉÔÅËÔÕÒÕ ÓÌÅÄÕÅÔ ÏÓÎÏ×Ù×ÁÔØ ÎÁ ÔÏÍ,
-ÞÔÏ Unix ÕÍÅÅÔ ÈÏÒÏÛÏ, ÎÁ ÔÏÍ ÞÔÏ ÏÐÉÓÁÎÏ ×Ï ×ÓÅÈ ËÎÉÖËÁÈ ÐÏ
-ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÀ. üÔÏ - ËÏÍÁÎÄÎÁÑ ÓÔÒÏËÁ É ÐÁÊÐÙ.
+Поскольку внизу у нас таки Unix, архитектуру следует основывать на том,
+что Unix умеет хорошо, на том что описано во всех книжках по
+пÑ\80огÑ\80аммиÑ\80ованиÑ\8e. ÐÑ\82о - команднаÑ\8f Ñ\81Ñ\82Ñ\80ока и пайпÑ\8b.
</p>
-<p>íÏÝÎÏÓÔØ ÓÏ×ÒÅÍÅÎÎÙÈ ËÏÍÐØÀÔÅÒÏ× ×ÅÓØÍÁ ×ÅÌÉËÁ. é ÚÁÞÁÓÔÕÀ ÚÁÐÕÓË
-ÏÔÄÅÌØÎÏÇÏ ÐÒÏÃÅÓÓÁ Ñ×ÌÑÅÔÓÑ ÄÏÐÕÓÔÉÍÙÍ Ï×ÅÒÈÅÄÏÍ ÄÌÑ ÌÀÂÏÊ
-ÉÎÔÅÒÁËÔÉ×ÎÏÊ ÏÐÅÒÁÃÉÉ. ÷ ËÏÎÃÅ ËÏÎÃÏ×, ÜÔÏ ÂÙÌÏ ÄÏÐÕÓÔÉÍÙÍ Ï×ÅÒÈÅÄÏÍ ×Ï
-×ÒÅÍÅÎÁ ëÅÒÎÉÇÁÎÁ É ðÁÊËÁ, ËÏÇÄÁ ËÏÍÐØÀÔÅÒÙ ÂÙÌÉ ÇÏÒÁÚÄÏ ÓÌÁÂÅÅ.
-ëÏÎÅÞÎÏ, ÚÁÐÕÓË ÓÏ×ÒÅÍÅÎÎÏÊ ÐÒÏÇÒÁÍÍÙ Ó ËÕÞÅÊ ÂÉÂÌÉÏÔÅË, ×ÓÔÒÏÅÎÎÙÍÉ
-ÉÎÔÅÒÐÒÅÔÁÔÏÒÁÍÉ et cetera, et cetera ÏÂÈÏÄÉÔÓÑ ÇÏÒÁÚÄÏ ÄÏÒÏÖÅ, ÞÅÍ
-ÚÁÐÕÓË ÕÔÉÌÉÔÙ cat, ÎÏ ËÔÏ ÓËÁÚÁÌ, ÞÔÏ ËÏÍÐÏÎÅÎÔÙ ×ÙÐÏÌÎÑÀÝÉÅ
-ÓÔÁÎÄÁÒÔÎÙÅ ÆÕÎÃÉÉ ÄÏÌÖÎÙ ÂÙÔØ «ÓÏ×ÒÅÍÅÎÎÙÍÉ ÐÒÏÇÒÁÍÍÁÍÉ» ×
-ÜÔÏÍ ÓÍÙÓÌÅ ÓÌÏ×Á?
+<p>Мощность современных компьютеров весьма велика. И зачастую запуск
+отдельного процесса является допустимым оверхедом для любой
+интерактивной операции. В конце концов, это было допустимым оверхедом во
+времена Кернигана и Пайка, когда компьютеры были гораздо слабее.
+Конечно, запуск современной программы с кучей библиотек, встроенными
+интерпретаторами et cetera, et cetera обходится гораздо дороже, чем
+запуск утилиты cat, но кто сказал, что компоненты выполняющие
+стандартные фунции должны быть «современными программами» в
+этом смысле слова?
</p>
<p>
-åÓÌÉ ÐÒÅÄÐÏÌÏÖÉÔØ, ÞÔÏ ÎÁÍ ÎÅ ÖÁÌËÏ ÐÏÒÏÄÉÔØ ÏÔÄÅÌØÎÙÊ GUI-ÐÒÏÃÅÓÓ ÄÌÑ
-ÏÐÅÒÁÃÉÉ ×ÙÂÏÒÁ ÏÔËÒÙ×ÁÅÍÏÇÏ ÆÁÊÌÁ, ÔÏ × ÐÒÏÇÒÁÍÍÅ ×ÙÚÏ× ÜÔÏÇÏ ÄÉÁÌÏÇÁ
-ÂÕÄÅÔ ×ÙÇÌÑÄÅÔØ ËÁË
+Если предположить, что нам не жалко породить отдельный GUI-процесс для
+операции выбора открываемого файла, то в программе вызов этого диалога
+будет выглядеть как
<pre>
f=popen("filedialog","r");
fgets(f,filename,sizeof(filename);
pclose(f);
</pre>
-éÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ filedialog ÍÏÖÅÔ ÂÙÔØ ÌÉÂÏ
+Исполняемый файл filedialog может быть либо
<pre>
#!/bin/sh
exec zenity --file-dialog
</pre>
-ÌÉÂÏ
+либо
<pre>
#!/usr/bin/wish
puts [tkGetOpenFile]
</pre>
-ÜÔÏ ÕÖ ËÁË ×ÁÍ ÂÏÌØÛÅ ÎÒÁ×ÉÔÓÑ. õÐÒÁ×ÌÑÔØ ÎÁÂÏÒÏÍ ÐÏÄÏÂÎÙÈ ÕÔÉÌÉÔ ÍÏÖÎÏ
-ÌÉÂÏ Ó ÐÏÍÏÝØÀ ÍÅÈÁÎÉÚÍÁ ÁÎÁÌÏÇÉÞÎÏÇÏ ÄÅÂÉÁÎÏ×ÓËÉÍ alternatives, ÌÉÂÏ
-Ó ÐÏÍÏÝØÀ ÓÐÅÃÉÁÌØÎÏÇÏ ËÁÔÁÌÏÇÁ × ${HOME}, ÎÁÐÒÉÍÅÒ ~/components, ÇÄÅ
-ÌÅÖÁÔ ÓÉÍÌÉÎËÉ ÉÌÉ ÓËÒÉÐÔÙ, ÄÅÌÁÀÝÉÅ ÔÏ, ÞÔÏ ÎÒÁ×ÉÔÓÑ ÔÅËÕÝÅÍÕ
-ÐÏÌØÚÏ×ÁÔÅÌÀ.
+это уж как вам больше нравится. Управлять набором подобных утилит можно
+либо с помощью механизма аналогичного дебиановским alternatives, либо
+с помощью специального каталога в ${HOME}, например ~/components, где
+лежат симлинки или скрипты, делающие то, что нравится текущему
+полÑ\8cзоваÑ\82елÑ\8e.
</p>
<p>
-÷ÏÔ ÐÏÍÅÎÑÌÉ ÏÄÎÕ ÓÉÍÌÉÎËÕ, É ÓÒÁÚÕ ÷ï ÷óåè ÐÒÏÇÒÁÍÍÁÈ ÉÚÍÅÎÉÌÓÑ ÄÉÁÌÏÇ
-ÏÔËÒÙÔÉÑ ÆÁÊÌÏ×. îÅÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, ËÁËÕÀ GUI-ÂÉÂÌÉÏÔÅËÕ ÉÓÐÏÌØÚÕÅÔ
-ÓÁÍÁ ÐÒÏÇÒÁÍÍÁ.
+Вот поменяли одну симлинку, и сразу ВО ВСЕХ программах изменился диалог
+открытия файлов. Независимо от того, какую GUI-библиотеку использует
+сама программа.
</p>
<p>
-á ÅÓÌÉ ×Ù ÐÏÌØÚÕÅÔÅÓØ ËÁËÉÍ-ÎÉÂÕÄØ ÐÒÏÄ×ÉÎÕÔÙÍ ÆÁÊÌ-ÍÅÎÅÄÖÅÒÏÍ, ËÏÔÏÒÙÊ
-ÍÎÏÇÏ ÞÅÇÏ ÕÍÅÅÔ, ×ÁÛ ÓËÒÉÐÔ filedialog ÍÏÖÅÔ ÐÏÏÂÝÁÔØÓÑ Ó ÜÔÉÍ
-ÆÁÊÌÍÅÎÅÄÖÅÒÏÍ (ÞÅÒÅÚ unix-domain socket, ÞÅÒÅÚ X-Ï×ÙÊ ICCCM, ËÁË
-ÕÇÏÄÎÏ) É ÏÔËÒÙÔØ ÅÇÏ ÐÁÎÅÌØ ÓÏ ×ÓÅÍÉ ÅÇÏ ×ÏÚÍÏÖÎÏÓÔÑÍÉ.
+А если вы пользуетесь каким-нибудь продвинутым файл-менеджером, который
+много чего умеет, ваш скрипт filedialog может пообщаться с этим
+файлменеджером (через unix-domain socket, через X-овый ICCCM, как
+угодно) и открыть его панель со всеми его возможностями.
</p>
-<p>ëÁË ÒÅÁÌÉÚÏ×ÁÔØ ÔÁËÉÍ ÖÅ ÏÂÒÁÚÏÍ progress-bar ÓÍ × ÔÏÊ ÖÅ zenity.
+<p>Как реализовать таким же образом progress-bar см в той же zenity.
</p>
-<p>á ×ÅÄØ ÍÏÖÎÏ ×ÙÎÅÓÔÉ × ÐÏÄÏÂÎÏÇÏ ÒÏÄÁ ËÏÍÐÏÎÅÎÔÙ É ÂÏÌÅÅ ÓÌÏÖÎÙÅ
-ÏÐÅÒÁÃÉÉ. ðÏÉÓË ÐÏ ÔÅËÓÔÕ, ÎÁÐÒÉÍÅÒ. ïÓÎÏ×ÎÁÑ ÐÒÏÇÒÁÍÍÁ ×ÙÄÉÒÁÅÔ ÉÚ
-Ó×ÏÅÇÏ ÆÏÒÍÁÔÁ ÄÁÎÎÙÈ ÉÓËÁÂÅÌØÎÙÊ ÔÅËÓÔ, É ÓËÁÒÍÌÉ×ÁÅÔ ËÏÍÐÏÎÅÎÔÕ,
-ËÏÔÏÒÙÊ ×ÏÚ×ÒÁÝÁÅÔ "ÎÁÊÄÅÎÏ/ÎÅ ÎÁÊÄÅÎÏ" (Á ÅÓÌÉ ÎÁÊÄÅÎÏ, ÔÏ ÓÍÅÝÅÎÉÅ ÏÔ
-ÐÏÓÌÅÄÎÅÇÏ ÂÌÏËÁ ÔÅËÓÔÁ). ÷ ÒÅÚÕÌØÔÁÔÅ, Ó ËÁËÉÍ ÂÙ ÆÏÒÍÁÔÏÍ ÄÁÎÎÙÈ ÍÙ ÎÅ
-ÒÁÂÏÔÁÌÉ, ÈÏÔØ Ó html, ÈÏÔØ postscript, ÄÉÁÌÏÇÏ×ÏÅ ÏËÎÏ ÐÏÉÓËÁ ÉÍÅÅÔ
-ÏÄÉÎÁËÏ×ÙÅ ÏÐÃÉÉ, ÐÏÄÄÅÒÖÉ×ÁÅÔ ÏÄÉÎÁËÏ×ÙÊ ÓÉÎÔÁËÓÉÓ ÒÅÇÕÌÑÒÎÙÈ ×ÙÒÁÖÅÎÉÊ
+<p>А ведь можно вынести в подобного рода компоненты и более сложные
+операции. Поиск по тексту, например. Основная программа выдирает из
+своего формата данных искабельный текст, и скармливает компоненту,
+который возвращает "найдено/не найдено" (а если найдено, то смещение от
+поÑ\81леднего блока Ñ\82екÑ\81Ñ\82а). Ð\92 Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82е, Ñ\81 каким бÑ\8b Ñ\84оÑ\80маÑ\82ом даннÑ\8bÑ\85 мÑ\8b не
+работали, хоть с html, хоть postscript, диалоговое окно поиска имеет
+одинаковые опции, поддерживает одинаковый синтаксис регулярных выражений
etc.
</p>
<p>
-åÝÅ ÍÏÖÎÏ ÏÔÏÒ×ÁÔØ ÏÔ ÐÒÉÌÏÖÅÎÉÊ ÓÉÓÔÅÍÕ ÇÌÁ×ÎÏÇÏ ÍÅÎÀ, ×ÙÎÅÓÑ Å£ ×
-ÏÔÄÅÌØÎÕÀ ÐÒÏÇÒÁÍÍÕ. úÄÅÓØ, ÐÏÖÁÌÕÊ, ÐÁÊÐÙ ÂÕÄÕÔ ÎÅ ÓÁÍÙÍ ÕÄÏÂÎÙÍ
-ÍÅÈÁÎÉÚÍÏÍ ÍÅÖÐÒÏÃÅÓÓÎÏÊ ËÏÍÍÕÎÉËÁÃÉÉ, ÌÕÞÛÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÐÅÒÅÄÁÞÕ
-ÓÏÂÙÔÉÊ X11, ÎÏ ÚÁÔÏ ÜÔÁ ËÏÎÓÔÒÕËÃÉÑ ÐÏÚ×ÏÌÑÅÔ ÐÏÌÎÏÃÅÎÎÏ ÒÅÁÌÉÚÏ×ÁÔØ
-ÉÎÔÅÒÆÅÊÓÎÕÀ ÐÁÒÁÄÉÇÍÕ íÁËïó, ÇÄÅ ÍÅÎÀ ÎÅ ××ÅÒÈÕ ÏËÎÁ, Á × ×ÅÒÈÕ ÜËÒÁÎÁ.
-üÔÏ ÏÞÅÎØ ÕÄÏÂÎÏ, ÐÏÔÏÍÕ ÞÔÏ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÐÁÓÔØ ÍÙÛØÀ × ×ÅÒÈÎÀÀ
-ÓÔÒÏÞËÕ ÜËÒÁÎ, ÎÅ ÎÁÄÏ ÐÒÉÃÅÌÉ×ÁÔØÓÑ. ðÒÏÓÔÏ ÒÅÚËÏ ÄÅÒÇÁÅÛØ ÒÕËÕ ××ÅÒÈ,
-ÍÉÍÏ ÇÒÁÎÉÃÙ ÜËÒÁÎÁ ÎÅ ÐÒÏÍÁÈÎÅÛØÓÑ. á ÍÏÖÎÏ ÎÅ ÒÅÁÌÉÚÏ×Ù×ÁÔØ. ÷ ÔÁËÏÊ
-ËÏÎÃÅÐÃÉÉ ÓÏÚÄÁÎÉÅ ÍÅÎÀ ÐÒÉÌÏÖÅÎÉÊ - ÆÕÎËÃÉÑ window manager-Á, Á ÔÏÔ ÕÖ
-ÍÏÖÅÔ ×ÙÂÉÒÁÔØ, ÒÉÓÏ×ÁÔØ ÍÅÎÀ × ×ÅÒÈÎÅÊ ÓÔÒÏËÅ ÉÌÉ × ÒÁÍËÅ ÔÅËÕÝÅÇÏ
-ÏËÎÁ. åÍÕ ÄÏÓÔÕÐÎÏ É ÔÏ, É ÄÒÕÇÏÅ.
+Еще можно оторвать от приложений систему главного меню, вынеся её в
+отдельную программу. Здесь, пожалуй, пайпы будут не самым удобным
+механизмом межпроцессной коммуникации, лучше использовать передачу
+событий X11, но зато эта конструкция позволяет полноценно реализовать
+интерфейсную парадигму МакОС, где меню не вверху окна, а в верху экрана.
+Это очень удобно, потому что для того, чтобы попасть мышью в верхнюю
+строчку экран, не надо прицеливаться. Просто резко дергаешь руку вверх,
+мимо границы экрана не промахнешься. А можно не реализовывать. В такой
+концепции создание меню приложений - функция window manager-а, а тот уж
+может выбирать, рисовать меню в верхней строке или в рамке текущего
+окна. Ему доступно и то, и другое.
</p>
-<p>÷ ÒÅÚÕÌØÔÁÔÅ ÐÏÌÕÞÁÅÔÓÑ, ÞÔÏ ÐÒÉÌÏÖÅÎÉÅ ÓÏÂÓÔ×ÅÎÎÏ, ÔÏÖÅ ÐÒÅ×ÒÁÝÁÅÔÓÑ
-× ËÏÍÐÏÎÅÎÔ. ïÎÏ ÒÁÓÐÏÒÑÖÁÅÔÓÑ ÔÏÌØËÏ ÏÓÎÏ×ÎÙÍ ÐÏÌÅÍ Ó×ÏÅÇÏ ÏËÎÁ,
-ÏÂÒÁÂÁÔÙ×ÁÅÔ ËÏÍÁÎÄÙ, ÐÒÉÈÏÄÑÝÉÅ × ×ÉÄÅ ÇÏÒÑÞÉÈ ËÌÁ×ÉÛ É ÓÏÂÙÔÉÊ,
-ÓÇÅÎÅÒÉÒÏ×ÁÎÎÙÈ ÍÅÎÅÄÖÅÒÏÍ ÍÅÎÀ. á ÔÁËÉÅ ÐÒÉÌÏÖÅÎÉÑ ÍÏÖÎÏ, ÉÓÐÏÌØÚÕÑ
-X-Ï×ÙÊ ÍÅÈÁÎÉÚÍ reparenting ×ÓÑÞÅÓËÉ ËÏÍÂÉÎÉÒÏ×ÁÔØ ÍÅÖÄÕ ÓÏÂÏÊ.
+<p>В результате получается, что приложение собственно, тоже превращается
+в компонент. Оно распоряжается только основным полем своего окна,
+обрабатывает команды, приходящие в виде горячих клавиш и событий,
+сгенерированных менеджером меню. А такие приложения можно, используя
+X-овый механизм reparenting всячески комбинировать между собой.
</p>
-<p>äÁÂÙ ÎÅ ÉÚÏÂÒÅÔØ ×ÅÌÏÓÉÐÅÄÏ×, ×ÓÐÏÍÎÉÍ, ÞÔÏ Õ Xt-ÐÒÉÌÏÖÅÎÉÊ ÅÓÔØ
-ÚÁÍÅÞÁÔÅÌØÎÙÊ ÒÅÓÕÒÓ translations, ËÏÔÏÒÙÊ ÐÏÚ×ÏÌÑÅÔ Ó×ÑÚÙ×ÁÔØ
-ÐÒÉËÌÁÄÎÙÅ ÆÕÎËÃÉÉ Ó ËÌÁ×ÉÁÔÕÒÎÙÍÉ ÓÏÂÙÔÉÑÍÉ. îÁ ÕÒÏ×ÎÅ
-ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÊ, per-display, per-site ÉÌÉ per-application
-ËÏÎÆÉÇÕÒÁÃÉÉ. áÎÁÌÏÇÉÞÎÙÍ ÏÂÒÁÚÏÍ ÄÏÌÖÎÙ ÏÂÒÁÂÁÔÙ×ÁÔØÓÑ É ÓÏÂÙÔÉÑ ÏÔ
-ÍÅÎÅÄÖÅÒÁ ÍÅÎÀ.
+<p>Дабы не изобреть велосипедов, вспомним, что у Xt-приложений есть
+замечательный ресурс translations, который позволяет связывать
+пÑ\80икладнÑ\8bе Ñ\84Ñ\83нкÑ\86ии Ñ\81 клавиаÑ\82Ñ\83Ñ\80нÑ\8bми Ñ\81обÑ\8bÑ\82иÑ\8fми. Ð\9dа Ñ\83Ñ\80овне
+полÑ\8cзоваÑ\82елÑ\8cÑ\81кой, per-display, per-site или per-application
+конфигурации. Аналогичным образом должны обрабатываться и события от
+менеджера меню.