ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Stanislav Ievlev <inger@altlinux.org>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] Alterator non root access
Date: Wed, 30 May 2007 18:54:48 +0400
Message-ID: <20070530145448.GC9432@basalt.office.altlinux.org> (raw)
In-Reply-To: <465C43B8.10701@vzljot.ru>

On Tue, May 29, 2007 at 07:16:08PM +0400, Vitaly Ostanin wrote:
> Stanislav Ievlev wrote:
> > On Mon, May 28, 2007 at 06:34:04PM +0400, Vitaly Ostanin wrote:
> >> Здравствуйте.
> >>
> >> Скажите, можно ли выполнять какие-либо действия в alterator не
> >> под рутом?
> >>
> >> Некоторые действия можно доверить и оператору, например,
> >> инициирование процедуры backup, запись его на dvd и т.п.
> > Можно конечно, главное чтобы эти сами действия исполнялись из под пользователя.
> 
> Тема письма оказалась точнее содержимого :( Я имею в виду
> аутентификацию пользователей (не только root) в web-интерфейсе и
> доступ к модулям в зависимости от пользователя. Иногда
> администратору приходится делегировать часть действий.
> 
> Я уже понял, что такой возможности нет. Можно узнать, планируется
> ли она?
Вот именно на это я и отвечал ;)
Да, сейчас такой возможности нет, но она реальна, и если будем успевать -
сделаем это для десктопа ...
> 
> Вообще было бы очень интересно почитать (хотя бы вкратце) про
> историю развития alterator, какие технологии были испробованы, от
> каких отказались и почему, какие планируется использовать.
К сожалению все эти технологии обдумываются и реализуются одним человеком,
соотв. я не успеваю всё задокументировать.

Могу попытаться кратко перечислить основные вехи, ну а вы уж потом
спрашивайте дальше (и было бы неплохо чтобы это сразу появилось на
wiki.sisyphus.ru/Alterator, а то иногда бывают такие вопросы - типа почему
это тут так, а не эдак).

Вот первый слой истории:
1. Эпоха "voins" и "george"- alterator для SOHO сервер.
  Имел только http-интерфейс, свой маленький web-сервер.
  Написан целиком и полностью на C++ (+ boost).
  Были зачатки модульности, но вцелом оставался монолитом.
  Даже html-ные интерфейсы вкомпиливались в бинарник.
2. Эпоха "voins" и "inger" #1 - alterator начала проекта Compact 3.0.
  Разрабатывался только для GUI, но с запасом на http.
  Самая первая версия была чудовищно модульная. Фактически это было
  множество процессов, общающихся через stdin-stdout.
  Интерфейс описывался на xml, похожим на XUL. Динамика на простейшем
  lisp-подобном языке (собственного разлива).

  Однако описание интерфейса оказалось крайне неудачным.
  Поэтому была предпринята идея использовать libguile, ибо оно
  встраивается и на подобном синтаксисе показалось описывать динамические
  интерфейсы проще чем на xml + наше изобретение.

  Где-то в это же время отказались и от красивой идеи admfs - то есть
  хотелось запузырить всё в файловую систему, чтобы потом была красивая
  возможность работать с ней вручную, загонять в CVS и даже бекапить
  конфигурацию. Причина - низкая производительность и сложность сделать
  аккуратную реализацию в многопоточном режиме.

  Вот тогда так называемый backend1 перекочевал из под fuse
  непосредственно под alterator. Отсюда и его странный протокол - был
  сделан для других целей ;) (однако ценные бакенды уже были написаны и их
  не хотелось терять).

  
3. Эпоха "voins" и "inger" #2 - середина проекта Compact 3.0
  Примерно в тоже время выяснилось что производительность оной системы
  оставляет желать лучшего. Килобайты данных бегущих по десятку процессов
  делали своё грязное дело.

  В результате началось переворачивание c++ + libguile в guile + c++ ;)
  Идеальная шина (главный процесс на который крепились все другие
  модули-процессы), была переписана на scheme и стала центром вселенной
  alterator. Наряду с бакендами внешними (backend1) появились бакенды
  нативные (backend2).

  Процесс переворачивания был хорошо растянут во времени, но где-то к
  выпуску Compact 3.0 был победоносно завершён.

  В это время был сделан модуль packages - один из самых навороченных на
  тот момент, что потребовало определённых изменений в идеальной модели
  описания интерфейсов ...

4. Эпоха "inger" #1 - после выпуска Compact 3.0

  Всё более менее утряслось. Язык описания интерфейсов получился
  достаточно гибким (кажется он в этом месте истории существенно
  изменился, о чём было радостно рассказано на очередной протве) - штуки
  типа packages уже легко на это ложились.

  Но тут все вспомнили про http. И тут началось ... GUI был гораздо гибче
  и требовал гораздо более активного общения между отображателем и
  отображаемым.

  В результате от alterator отделился браузер интерфейса (qt-browser).
  Ну и соотв. возник эдаки x-протокол между ними.

  Была предпринята попытка воспользоваться сладким миром AJAX. и для http
  была сооружен тоже эдакий браузер. Сначала использовался qooxdoo. Штука
  мощная, но всё-таки она не могла переварить GUI сделанные под QT -
  иногда firefox заявлял что скрипт исполняется слишком медленно ;)

  Однако что-то более менее интересное всё-таки нарисовалось и попало в
  мир в виде терминальной прошивки (с двумя интерфейсами одновременно).
  
  Потом был опробован вариант с quix (часть проекта porcupine). Он был
  более быстр, более прост - но более глючен ;)

  Где-то в тоже время возник и backend3 - замена устаревшему backend1.
  Там были учтены все недостатки, которые мешали сильно работать. В том
  числе появились состояния и снялось ограничение на возможные операции.

  Для x-протокола был сделан асинхроный протокол по принципу "генерить не
  парсить". Для браузеров шёл xml, а для alterator - родные и близкие ему
  sexp'ы.

  backend3 - унаследовал эту идею (за что я недавно получил критику).
  В сторону бакенда протокол остался от backend1 - то есть достаточно
  простой чтобы обработать можно было даже на shell, а обратно идут
  sexp'ы. Последние сделаны максимально простыми. Заодно снялся ряд
  ограничений на возможные ответы от бакенда.

  Кроме того там появилось понятие сообщение. Раньше бакенд мог обработать
  только часть сообщения, даже если оно не пришло полностью (например
  из-за падения alterator).

5. Эпоха "inger" #2 - выпуск серверного

  Однако время не стояло на месте. На горизонте засветил серверный, а
  ничего простого и надёжного для http не было.
  Кроме того пользователи (особенно сисадмины) с большим трудом понимали
  как писать интерфейсы на guile.

  В какой-то момент support@ запросил модуль, чтобы они просто писали
  бакенд, А он тут же и рисовался в http.

  В результате этих экспериментов и возник первый вариант fbi.
  Потом возника идея. А что если соединить опыт Ajax + кондовость простых
  форм. В результате этого симбиоза и возник нынешний fbi, где:
  1. бакенды рисуются быстро
  2. автоматически приклеиваются к html-ному шаблону и работают.
  3. свистелки, которые так любят пользователи - делаются через Javascript и AJAX.

  Получилось идеально - пользователи полноценных браузеров получали
  почти-что GUI, а пользователи elinks (или пользователи консоли) -
  вариант из простых форм.

  В какой-то момент мне показалось - а зачем тащить тогда на себе этот
  старый GUI, если http к этому времени дорос до него ...
  Но это уже из будущего ;)

> 
> Почему, например, description пакета alterator-fbi содержит
> манящее "alterator on rails", и не следы ли это экспериментов с
> Ruby in Rails :) Чтобы не повторять пройденные этапы.
Думаю, ответ был выше ;))

Нет, я не экспериментировал с рельсами, только читал про них ... у нас с
ними несколько разные цели. Просто получилось вот такое рекламное название ;)



  reply	other threads:[~2007-05-30 14:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-28 14:34 Vitaly Ostanin
2007-05-28 17:59 ` Hihin Ruslan
2007-05-28 21:56 ` Konstantin A. Lepikhov
2007-05-29  5:14 ` Stanislav Ievlev
2007-05-29  5:46   ` Anton Farygin
2007-05-29  7:09     ` Anton V. Boyarshinov
2007-05-29 14:05     ` Stanislav Ievlev
2007-05-29 18:09       ` Anton Farygin
2007-05-30 14:22         ` Stanislav Ievlev
2007-05-30 15:41           ` Anton Farygin
2007-05-30 15:53             ` Stanislav Ievlev
2007-05-29 15:16   ` Vitaly Ostanin
2007-05-30 14:54     ` Stanislav Ievlev [this message]
2007-05-31  9:39       ` Michael Shigorin
2007-05-31 14:58         ` Stanislav Ievlev
2007-05-31  9:46       ` [devel] [wiki] Alterator/history (was: Alterator non root access) Michael Shigorin
2007-05-31 15:00         ` Stanislav Ievlev
2007-05-31 10:47       ` [devel] Alterator non root access Sergey V Turchin
2007-05-31 14:59         ` Stanislav Ievlev
2007-05-31 18:40           ` Anton Farygin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070530145448.GC9432@basalt.office.altlinux.org \
    --to=inger@altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git