среда, 13 ноября 2013 г.

[prog.c++] Тег so_sysconf-4.2.0 как важная промежуточная веха

Сегодня зафиксирована в виде тега версия 4.2.0 одного из SObjectizer-проектов, so_sysconf. Веха эта, хоть и совершенно промежуточная, но для меня очень важная. Она означает, что закончился непростой и не быстрый процесс перевода комментариев с русского на английский язык. Который, плюс ко всему, вылился еще и трудоемкий первичный code review, на который у меня не было времени с 2012-го года.

Говоря о SObjectizer я, как правило, говорю сразу о двух вещах:

Во-первых, есть ядро SObjectizer, которое, собственно и называется SObjectizer (код ядра в пятой версии принадлежит пространству имен so_5, ранее это было пространство имен so_4). Ядро -- это минимум, который позволяет создавать агентов, диспетчеров и запускать все это совместно. Если в каком-то проекте требуется лишь обмен информацией между объектами-агентами посредством сообщений, то достаточно только ядра SObjectizer.

Во-вторых, над ядром SObjectizer создано несколько проектов, которые облегчают прикладное программирование с использованием SObjectizer. По привычке мы называем их "подпроекты", истоки этого термина можно найти в старой статье про Subversion и Mxx_ru. Таких подпроектов на базе SObjectizer сейчас четыре:

  • so_log, небольшая обертка над ACE_Logging Framework, предназначенная для операций логирования именно из SO-агентов (включая и небольшой Ruby DSL для упрощения логирования);
  • so_5_transport, библиотека для представления транспортных каналов в виде агентов. Используется при разработке сетевых приложений с применением агентного подхода. На данный момент поддерживаются потоковые TCP/IP сокеты (в качестве "подложки" задействован коммуникационный слой ACE с его реакторами и ACE_Event_Handler-ами);
  • mbapi_4, библиотека для обмена прикладными сообщениями. Обеспечивает более высокий уровень абстракции, чем ядро SObjectizer. Так же позволяет распределенным приложениям прозрачным образом обмениваться информацией между собой (для транспорта используется so_5_transport);
  • so_sysconf, библиотека для сборки SO-приложений "из кубиков". Те или иные прикладные агенты (кооперации агентов) формляются в виде DLL, а so_sysconf позволяет собирать приложение из набора таких DLL, подгружая DLL-ки и регистрируя коперации из них (в ACE есть что-то подобное под названием ACE Service Configurator Framework).

Так же для четвертого SObjectizer был еще один подпроект - gemont - для распространения мониторинговой информации, но под SO-5 он еще не адаптирован.

Так вот, очень часто говоря о SObjectizer я имел в виду и ядро, и все описанные выше подпроекты. А завершение работ над версией 4.2.0 подпроекта so_sysconf означает, что следующим шагом будет подготовка "релиза" на SourceForge.

Скорее всего мы сделаем три архива. Первый будет содержать только исходные тексты ядра SO и его подпроектов. Второй в дополнение к ним будет так же содержать внутри и архив с исходниками ACE (т.к. без них SO не собрать). Третий архив будет содержать сгенерированный посредством Doxygen набор html-файлов (что-то, что может быть названо API Reference Manual).

Ну и в дальнейшем мы планируем поступать именно так. Раз в несколько месяцев будут собираться все актуальные последние стабильные версии SO и его подпроектов и оформляться в виде архивов для загрузки с SourceForge. Промежуточные стабильные и нестабильные версии SO можно будет брать из SVN-репозитория на SourceForge.

Сразу скажу, что сейчас SO -- это OpenSource-проект со всеми вытекающими ;) Т.е. мы делаем то, что мы считаем нужным и важным. Используя то, что удобно нам. В первую очередь это касается системы сборки. Ну вот так сложилось, что мы сидим на Mxx_ru, поэтому SO собирается Mxx_ru. Понятно, что неудобно для тех, кто Mxx_ru не пользуется. Но у нас нет времени добавлять в SO поддержку каких-то других систем (CMake, SCons, MSBuild или еще чего-то). Как и в любом другом OpenSource-проекте, это может появится, если найдутся желающие такими вещами заниматься :) Мы же пока точно этого делать не будем, т.к. есть более актуальные для проекта вещи, на наш взгляд. Например, наполнение Wiki-проекта на SourceForge. С тем, чтобы информация о проекте, какие-то обучающие материалы, документация на английском языка таки появилась и была доступна широкому кругу потенциальных пользователей SObjectizer. И это не говоря о том, чтобы добавлять в SO новые фичи, исправлять ошибки, делать его еще лучше и быстрее...

В общем, SObjectizer живет и развивается! Stay tunned ;)

Комментариев нет: