Поставил TightBlog
by aary
Posted on суббота марта 28, 2026 at 01:40AM in ЖЖ
1. Технические достижения
Запуск TightBlog 4.2.0 на Java 25, PostgreSQL с SSL, исправлены проблемы:
Десериализация пароля:
@JsonPropertyперенесены на сеттеры вUserCredentials.java.Схема БД:
password_hashвweblogger_userснятNOT NULL(двухэтапное сохранение: INSERT с NULL → UPDATE с хешем). Также исправленыdate_updatedиpublish_timeвweblog_entry.Фиды (Atom): исправлен шаблон
entries-atom.html:37(заменаupdateTimeнаdateUpdated).Добавлен заголовок
Content-Disposition: inlineдля отображения в браузере.
Роутинг работает:
/aary/feedперенаправляется на/tb-ui/rendering/feed/aaryчерезRequestMappingFilter.Feedbro (расширение Firefox) успешно читает локальный фид, решая проблему внешней валидации.
2. Понимание архитектуры TightBlog
Таблица
user_weblog_roleбыла переименована изroller_permissionв 2015 году, семантика изменена с «права» на «роль». Это наследие Roller, но TightBlog упростил модель.Миграции БД перешли от Velocity-генерации к прямым SQL-файлам (Flyway). Это снизило универсальность (только PostgreSQL), но повысило прозрачность и управляемость.
В TightBlog несколько блогов на пользователя поддерживаются, хотя в UI Roller эта функция могла отсутствовать.
3. Ключевые концепции, выработанные в диалоге
Плоские категории vs теги: категории — рубрикация, теги — кросс-тематический поиск. В TightBlog категории не иерархичны.
Фиды: Atom 1.0 + JSON Feed + ActivityPub (последние — для гибкости). Обнаружение фидов через
<link rel="alternate">.Мультиязычность в фидах возможна через отдельные фиды по языкам или через атрибут
xml:lang.Поиск: без ИИ — использовать обратный индекс, ранжирование по доверенному кругу (организации, подписки), группировку по источникам, уточняющие вопросы.
Приватность и обнаружение: нужен баланс между «кругами доверия» и шлюзами наружу. Организация как единица доверия может сертифицировать ключи, управлять доступом, модерацией.
Теги как сообщества: теги становятся точками входа, имеют свои фиды, модерацию, могут быть scoped по организациям.
4. Уроки из истории
«Мой Круг» показал, что неявные круги друзей сложны в UX и не обеспечивают рост. Ваша модель «Планет» с явным членством и уставом может быть понятнее.
Провалы XMPP, Matrix, RetroShare связаны с тем, что они решали технические задачи, забывая о массовом пользователе: сложный старт, отсутствие обнаружения, привязка к серверу, метаданные открыты.
Успешные системы (Email, DNS) работают потому, что владельцы идентичностей заинтересованы поддерживать свои записи.
5. Предложения для будущего движка
Прогрессивная децентрализация: начать с централизованного приложения, затем добавить свой домен, федерацию, P2P.
Организация как КА (центр сертификации): выдаёт сертификаты участникам, публикует каталог, управляет модерацией.
Теги как службы: каждый тег может иметь правила модерации, фид, уровень доступа (публичный/только для участников).
Идентичность:
did:web:org:user— портативная, с возможностью миграции.Поиск: контекстный, с приоритетом доверенного круга, группировкой по источникам, опциональными шлюзами наружу.