en ru

Какое расширение выбрать для пакетов (опрос)

Продолжаю разработку проектов AiKernel и AReason.

Напомню, что проект AiKernel разрабатывается как универсальное ядро для построения ИИ систем. AiKernel на данный момент представляет из себя библиотеку (.dll) с зачатками реализованного API для работы с онтологиями (OwlApi). AiKernel реализуется на чистом Си.

Проект AReason - это подборка программ и библиотек с функционалом, который, вероятно, потребуется для реализации ИР. AReason состоит из нескольких самописных программ, утилит и библиотек, а так же сторонних программ и библиотек. Одной из основных библиотек в AReason будет AiKernel.

Почти два года я занимался подготовкой, сборкой и "причесыванием" моих старых проектиков, которые реализовывал с 2003 года. Сейчас эта работа почти завершена. Скачать Alpha версию можно со страничке проекта AReason на SourceForge. На данный момент последняя версия areason-0.0.5-alpha2.7z (9.5 MB).

Планирую добавить в сборку AReason дополнительно такие программы как Proteje и другие. Projege требует для своей работы установленного Java. Другие программы требуют дополнительно Qt, Gtk и другие фреймворки. Каждый из этих дополнительных фреймворков может быть представлен как portable (то есть не требующий установки в систему, а достаточно просто распаковать файлы и положить рядом с основной программой). Возникла мысль сделать для удобного добавления, обновления и удаления некоторое подобие пакетной системы (как в Debian/Ubuntu).

Рассмотрев разные варианты (Assebmly в DotNet, Deb пакеты Debian/Ubuntu, Jar в Java и другие) я пришел к выводу, что самое простое - это создавать пакет в виде архивного файла с некоторой вложенной мета информацией. Вариантов архивов очень много. Я потестировал и сравнил несколько и решил остановится на методе сжатия lzma и контейнере 7-Zip. Преимущество 7-Zip в том, что при необходимости можно будет поменять метод сжатия без изменения структуры контейнера (пакета). То есть обеспечивается будущая обратная совместимость.

Собрал несколько тестовых "пакетов":
AiAddressBook-0.0.5-13-Win32
AiKernel-0.0.1-0-Win32
Gtk-2.28.8-0-Win32
Java-1.7.5-0-Win32
Protege-4.2.0-276-All
SevenZip-9.22.0-Win32

Каждый "пакет" (package) представляет из себя обычный архив 7-Zip. Внутри каждого пакета располагаются файлы с мета-информацией.

Структура содержимого пакета:
./AReason - текстовый файл с версией системы (дистрибутива) AReason для которой предназначен текущий пакет (текущая версия 12)
./Control - директория файлов с информацией о пакете, о зависимостях и пр. Пока в этой директории располагается только один файл.
./Control/Control.xml - информация о пакете и зависимостях в XML виде
./Data - директория с файлами, которые будут извлечены при установке
./Version - текстовый файл с версией пакета (например 0.0.1-0)

Я задумываю систему пакетов, как универсальную, не привязанную именно к AReason. Для управления пакетами задумывается программа - пакетный менеджер (APackageManager). Можно предложить использование этой пакетной системы для других проектов (в частности AINIX). Для безпроблемной работы можно предложить в содержимое пакета добавлять файл (например ./ainix) с некоторой мета-информацией (просто версия или что-то дополнительное).

Пакеты задумываются для передачи не только ИИ программ и библиотек, но и обычных (не ИИ) программ, документации, дополнительной отладочной информации и пр, а так же "знаний" в виде онтологий.

Возник вопрос какое расширение файла лучше использовать. Мне на ум приходят следующие варианты
.apk - APackage (лучше не использовать, т.к. .apk используется для пакетов Android)
.arpk - AReason package
.aipk - AI package
.apack - APackage
.apkg - APackage
.pack - Package (лучше не использовать, т.к. используется в каком-то архиваторе в Linux)
.pkg - Package (лучше не использовать, т.к. используется много где)

10.07.2012

Ну чтож. Подведем итоги.
Один голос за arpk и один голос за apack.
Лично мне больше нравится вариант apack, поэтому я пока буду применять это расширение для заархивированных пакетов.
Хотя это сейчас не имеет смысла, т.к. пакетная система еще не создана, но на будущее будем иметь в виду.

Обсуждение: project-ai.org/forum/viewtopic.php?t=808












© AiKernel 2010-2013
21.06.2012 - 17.01.2013