Рассмотрел ещё один генератор френдленты, написанный mtve - rssagr
Проект существенно менее зрелый, чем rawdog, но несколько приятных особенностей есть.
Плюсы:
- Компактный скрипт с минимумом внешних зависимостей. Легко модифицировать и развивать
- Ротирует старые записи в отдельные HTML-файлы (у rawdog аналогичная функциональность достигается плагином)
- Держит список фидов отдельно от прочей конфигурации (каковой пока вообще не имеет)
Минусы:
- Не имеет никакого шаблонизатора. Не генерирует ссылку на css.
- Ссылки на предыдущие куски ленты генерируются независимо от их наличия
- Как и rawdog при добавлении большого количества фидов одновременно, не располагает свежескачанные записи в порядке написания
- Не имеет никакого интерфейса добавления, который бы избавлял пользователя от ручного поиска ссылки на фид (rawdog хоть из командной строки умеет скачивать html и парсить его в поисках <link rel="alternate">
- Не разделяет публичные данные (сгенерированный html) и внутренние (кэш состояния потоков). Я, конечно, могу доступ к этому кэшу ограничить средствами файловой системы и web-сервера, но подход rawdog, у которого есть недоступная по web директория для локального состояния и конфигурации, мне чем-то нравится больше.
- Всё-таки непонятно, чем автора не устроили имодуль XML::RSS, XML::RSSLite, XML::Feed и прочие несть им числа.
- При регулярном использовании ротирует страницу целиком, даже если с момента предыдущего апдайта появилось 1-2 новых сообщения.
Что бы можно сделать: 1. Прикрутить шаблонный движок (от HTML::Template, чтобы использовать общий шаблон страницы и css с блогом ikiwiki). 2. Для хранения списка фидов использовать не плоский текстовый файл, а foaf. Раз уж оно лежит там же где раздаваемые html. 3. Поправить алгоритм сортировки.
Но пока у меня rawdog работает, это имеет меньший приоритет чем древовидные комментарии и корректная работа почтовой нотификации.