После трёх лет разработки доступен первый стабильный релиз проекта SparkleShare, в рамках которого развивается свободное приложение для создания собственных online-хранилищ, похожих на Dropbox, а также для обеспечения синхронизации данных между несколькими системами и организации совместной работы с данными. SparkleShare оформлен в виде графического приложения, написанного на языке С# с использованием Mono и библиотеки GTK+. Исходные тексты распространяются под лицензией GPLv3. Готовые бинарные сборки подготовлены для Linux (Ubuntu, Fedora и т.п.), Mac OS X и Windows.
Ключевой особенностью SparkleShare является использование в качестве хранилища стандартных Git-репозиториев, не требуя запуска серверного ПО и развертывания специальной серверной инфраструктуры. SparkleShare позволяет задействовать в качестве хранилища любой поддерживающий Git внешний хостинг или сервис, например, GitHub, Bitbucket, Gitorious или любой сервер, к которому имеется доступ по SSH и на котором установлен git. Доступ к данным также можно получить при помощи обычных инструментов git, без установки SparkleShare. Для анализа истории работы с файлами и отката изменений можно использовать средства версионного контроля. Иными словами, SparkleShare можно рассматривать как специализированный Git-клиент, оптимизированный для хранения и обмена файлами. Тем не менее, SparkleShare предусматривает возможность создания бэкендов, позволяющих использовать другие типы хранилищ и протоколы для доступа к ним.
Несмотря на простоту и элегантность решения на базе Git, у подобного подхода есть отрицательные стороны. SparkleShare плохо подходит для работы с большими бинарными файлами и наиболее эффективен для относительно небольших текстовых данных. Программа также чувствительна к обрывам соединений в процессе передачи данных, при обрыве сессии уже загруженные данные потребует повторной загрузки. Кроме того, использование Git требует значительного дополнительного дискового пространства, что связано с необходимость хранения Git-репозитория на каждой клиентской системе, содержащего копию всех синхронизированных данных и историю их изменений. При этом, со временем, по мере накопления изменений, репозиторий может разрастись до значительных размеров, особенно если осуществляется работа с большими бинарными данными (например, при изменении бинарного файла в репозитории целиком будут сохранены прошлая и нынешняя версии файла).
Для обхода проблем с хранением бинарных данных, в конфигурациях связанных с хранением медиаконтента, предлагается использовать git-fs для монтирования удалённого репозитория без создания локальной копии (в такой конфигурации репозиторий монтируется только в режиме чтения, что накладывает существенные ограничения на его использование). Другим путём оптимизации работы с бинарными файлами, который планируется интегрировать в SparkleShare 2.0, является использование проекта git-bin, в котором Git-репозиторий содержит только метаданные, а содержимое файлов разбивается на небольшие блоки, которые размещаются в отдельном хранилище.
Из возможностей программы можно отметить средства для организации совместного доступа к файлам и обмена файлами с другими людьми. В том числе предусмотрен сервис отправки уведомлений между клиентами и возможность отправки инвайтов для автоматизации подключения к новым репозиториям. Для защиты информации, сохраняемой в публичных Git-репозиториях, может быть использовано шифрование (AES-256-CBC), применяемое на стороне клиента, перед отправкой данных на хост. Для расширения штатных возможностей программы предусмотрена система плагинов.
Управление и контроль за выполнением операций производится через графический интерфейс. Наборы обрабатываемых данных ассоциируются с определённой директорией в домашнем каталоге пользователя, содержимое которой автоматически синхронизируются с внешними Git-хранилищами и другими клиентами, для которых открыт доступ. При изменении файла участником группы, для других пользователей группы выводится всплывающее уведомление. В случае одновременного изменения одного и того же файла несколькими людьми запускается процесс разрешения конфликтов (создаются две копии).
|