Синдикация с аггрегацией

Авторы: Борис Богданов, Илья Щуров
Опубликовано в журнале "Компьютерра" №30 от 24 августа 2006 года

Термин "Web 2.0", появившийся с легкой руки Тима О’Рейли около года назад и породивший моду на "вторые версии" буквально всех известных понятий, до сих пор вызывает споры. Что именно стоит за этим словосочетанием? И стоит ли за ним вообще что-нибудь, или это лишь buzzword, "модное слово", помогающее выкачивать из инвесторов деньги? Мы не будем вступать в терминологический спор. Лучше постараемся рассказать о технологиях, обычно связываемых со "вторым вебом", - их истории, принципах работы и практических применениях. - И.Щ.

Когда говоришь о технологиях, которые являются неотъемлемыми элементами Web 2.0, складывается парадоксальная ситуация: ирония в том, что большинство из них появилось задолго до того, как О’Рейли провозгласил наступление новой эры.
В этой статье речь пойдет о решении одной древней проблемы. Разработчики долго бились над задачей быстрой доставки информации заинтересованным читателям и ее ретрансляции во всевозможных клиентах. Поиск одновременно простого, функционального и унифицированного решения шел несколько лет. Что только за это время не появилось - от глобальной концепции Semantic Web до многочисленных прикладных решений и технологий. Так были разработаны Channel Definition Format (CDF) от Microsoft, PointCast, поддерживавшийся Netscape, Marimba Castanet и многие другие. Практически все решения сгинули в безвестности, и даже среди специалистов лишь единицы вспомнят сейчас хотя бы название этих технологий.

Из множества конкурирующих стандартов до наших дней благополучно дожили лишь два: RSS и Atom. При этом RSS является действительно "народным" форматом, практически синонимичным для многих самому понятию синдикация. И RSS, и Atom - основанные на XML форматы, предназначенные для сбора информации, то есть аггрегирования. Эти стандарты, как, впрочем, и все основанные на XML, реализуют давнюю идею разделения оформления и содержания и лишены одного из главных недостатков HTML - запутанности и перегруженности служебными и "оформительскими" элементами, которые сильно затрудняют автоматическое унифицированное получение и обработку информации: в данном случае транслируется только полезное содержание без каких-либо элементов дизайна, навигации и т. д.

RSS - это семейство стандартов формирования XML-документа, в который сохраняется информация об обновлениях. (Этот документ называется потоком или фидом - от англ. feed - питание, кормить.) В подавляющем большинстве случаев речь идет об обновлении в новостной ленте, но в принципе это могут быть любые изменения. Впрочем, об этом мы поговорим чуть позже. Взаимоотношения между отдельными версиями RSS довольно запутаны. Представители семейства частично несовместимы друг с другом, но для конечного пользователя это практически не имеет значения - любая современная программа для работы с RSS понимает все его версии.

Формат Atom тоже предназначен для аггрегирования информации об обновлениях, в первую очередь с веб-сайтов.

История синдикации

Идея стандартизировать процесс оповещения о появлении новых данных и изменении существующих, а также ретрансляцию информации появилась давно. Прообразы современных стандартов синдикации начали разрабатывать еще в 1997 году.
Первым на сцену вышел RSS, разработанный легендарной компанией Netscape, которая использовала его для наполнения своего портала Netcenter. Вскоре RSS-ленты уже активно использовались для трансляции новостей на многих сайтах - в том числе таких крупных и авторитетных, как CNN, BBC, ZDNet, CNET, Forbes, Slashdot и многих других.

Дебютной версии RSS был присвоен номер 0.90. Однако стандарт, как сочли и пользователи, и эксперты, оказался слишком сложным и запутанным. Так что вскоре Netscape выпустила следующую, упрощенную версию RSS 0.91. Затем корпорация потеряла интерес к своему детищу. Разработку формата продолжила компания UserLand Software. К тому моменту у UserLand в активе была собственная схожая по задачам технология ScriptingNews, наработки из которой были включены в выпущенные вскоре версии RSS 0.92, 0.93, 0.94 и в итоге 2.0. Параллельно RSS-DEV Working Group развивала свою версию RSS и выпустила RSS 1.0, а затем и 1.1. В результате на сегодня существуют семь (!) версий RSS. Наиболее популярны 0.91, 1.0 и, конечно же, 2.0.

RSS Bandit — весьма популярный свободный RSS-аггрегатор под Windows (.NET). Кстати, с помощью сайта GMane.org можно читать через RSS публичные списки рассылки

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

Как ни странно, войны форматов не получилось: практически все аггрегаторы (программы для чтения фидов) поддерживают и Atom, и все версии RSS, так что пользователю все равно, в каком формате сайт умеет экспортировать данные [Конечно, это верно лишь отчасти: возможности форматов все-таки несколько различаются. - И.Щ.].

Бурное развитие RSS, больше похожее на триумфальное шествие, началось в 2003 году. Появлялось все больше сайтов, поддерживавших RSS и другие форматы синдикации, все привычнее становились блоги - а почти все блог-движки, будь то хостинговый LiveJournal или персональный WordPress, поддерживали RSS. Таким образом, рост числа блогов означал и рост числа фидов, дальнейшее развитие синдикации, появление программ для работы с потоками.

Успех, основы которого были заложены в 2003-м, стал очевиден уже на следующий год - количество фидов выросло многократно. Взгляните на график, он отчетливо показывает, как стремительно росла популярность формата. Его распространению способствовало и то, что появились программы, в которых функция чтения потоков RSS и Atom была необязательным, но очень интересным дополнением. RSS-аггрегаторы (в том или ином виде) были добавлены в Mozilla Firefox, Opera и Safari. Теперь можно было познакомиться с новой технологией, не ставя каких-либо дополнительных программ. Да и появление первых онлайновых аггрегаторов позволило создавать на сайтах свою персональную новостную ленту, показывающую автоматически обновляемые новости из интересующих именно вас источников.

Вышло так, что самым ярым сторонником Atom стал Google, Microsoft же поддерживает RSS. Именно Atom используется в Blogger.com, Google News, Gmail и других сервисах поисковика. Google также развивает стандарт и вводит дополнения к нему. Так появился GData, формат, основанный на Atom. Именно GData используется в последних сервисах компании, таких как Google Calendar.

Microsoft стала далеко не первым, но, пожалуй, самым полезным сторонником RSS. Сначала корпорация завела фиды у себя на сайтах, потом ее разработчики решили расширить RSS. В 2005 году Microsoft представила расширение Simple Sharing Extensions, призванное превратить RSS в средство двусторонней синхронизации данных, то есть добавить в RSS функционал, уже присутствовавший в Atom. Правда, это расширение так и осталось бумажным тигром - приложений, использующих этот формат, я назвать не могу.

aKregator — стандартный RSS-аггрегатор рабочего стола KDE (Linux). Удобное клавиатурное управление, корректное отображение записей со всем оформлением — что еще нужно для счастья?

Поддержка RSS включена в готовящиеся Internet Explorer 7.0, Outlook и Windows Vista. RSS становится стандартом де-факто для автоматизированного обмена информацией.

Важным плюсом синдикации для разработчиков является тот факт, что потоки не накладывают ограничение на характер передаваемой информации и ее адресата. Через фиды вы можете информировать пользователей о чем угодно - о публикации новостей и статей, о появлении на ftp-сервере нового файла, об изменении страницы в wiki… да мало ли о чем еще! Главное, что произошло изменение, информация о котором вносится в фид.

Использование XML, формата гибкого и расширяемого, позволяет легко приспосабливать RSS и Atom под самые разнообразные задачи. Так, появление подкастов и видкастов поставило ту же проблему, что уже была решена для текстовой информации, - быстрая и максимально автоматизированная передача информации заинтересованному пользователю. Использование опционального элемента enclosure, описывающего подключаемый объект (аудиозапись, видеофайл, картинка), позволило распространять через RSS любой медиа-контент. Поддержка этого тега в программном обеспечении может сделать работу и вовсе прозрачной - пользователь может даже не догадываться, что данные передаются через RSS. Скажем, iTunes позволяет подписаться на RSS-фид с подкастом, просто перетащив ссылку в соответствующий раздел, и затем автоматически закачивать новые аудиозаписи на iPod.

Как же это работает?

XML-файл обновляется в тот же момент, когда появляется новая информация. При этом в фид записываются заголовок, описание и дата изменения (набор полей может варьироваться в зависимости от используемого стандарта и задачи, это лишь основные). Затем специальная программа или сервис, с заданной периодичностью проверяющие содержание потока, показывают пользователю, что же изменилось.

Информация об обновлении может использоваться как угодно - пользователь может прочесть эти данные на персонализированной "домашней странице" или в своем любимом аггрегаторе, будь то сервис в онлайне (скажем, BlogLines или "Яндекс.Лента"), на настольном компьютере (например, с помощью NewsGator или популярного открытого RSS Bandit) или на КПК (PocketRSS, PocketFeed и т. д.).

Kanban.Ru: простой онлайновый RSS-аггрегатор без особых изысков

В качестве клиента для RSS-потока может выступать не только программа-аггрегатор конечного пользователя, но и специальный сервис, занимающийся публикацией информации на сайте. Если вы хотите разместить на своей странице, скажем, последние новости, курсы валют или сводки погоды, то RSS может оказаться самым подходящим решением, гораздо более мощным и гибким, нежели традиционные и давно привычные информеры. Для разработчиков особенно ценным может оказаться то, что информацию, полученную через фид, можно обработать как угодно и вывести именно в том виде, в каком вам необходимо. Посмотрите, например, на сайт FeedBurner.com: одна из его задач - показ RSS-фидов в удобном для конечного пользователя виде, так, чтобы RSS было легко прочесть без каких-либо дополнительных ухищрений непосредственно в браузере.

Оценить возможности автоматического сбора, анализа и публикации фидов можно на примере новостных порталов, аггрегирующих данные с сотен и тысяч сайтов. Самые яркие примеры - Google News (четыре с половиной тысячи источников) и "Яндекс.Новости" (почти 1400 источников).

Эти маленькие окошки-виджеты в «Опере» тоже являются RSS-аггрегаторами. Только очень маленькими и заточенными под конкретный поток

Приятно, что "Яндекс" интенсивно развивает разнообразные сервисы, связанные с RSS. Отметим, например, недавно появившийся индекс популярности темы в блогах. Сейчас вы легко можете получить список наиболее обсуждаемых в блогосфере новостей и прочесть мнения блоггеров.

Синдикация и реклама

Очень долго RSS и Atom имели еще один огромный плюс, который, впрочем, был и их минусом: в потоках не было рекламы. На подавляющем большинстве блогов и форумов вы увидите контекстную рекламу, не важно, будет это AdSense или, скажем, "Бегун". Зачастую это основной источник финансирования проекта. До прошлого года в RSS нельзя было показывать контекстную рекламу: размещением ее просто-напросто никто не занимался. Так что многие сайты использовали, да и сейчас используют RSS и Atom лишь как средство извещения о появлении новых материалов на сайте, а не как средство для их передачи пользователю. Подписчик в таком случае получает только вводную часть материала или, что еще хуже, несколько первых символов и вынужден за полным текстом отправляться на сайт.

Со временем ситуация изменилась, и сейчас несколько западных компаний занимаются размещением рекламы в фидах. Это и Google (правда, его программа пока находится в стадии закрытого бета-тестирования), и уже упоминавшийся FeedBurner, и Kanoodle… Российские компании, занимающиеся контекстной рекламой, пока эту нишу игнорируют [На самом деле, не совсем игнорируют: в компании "Бегун" нам ответили, что соответствующая технология уже разработана и ждет лишь критической массы спроса со стороны рынка. - И.Щ.].

Мы искали, мы искали…

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

Поиском по RSS занимаются очень многие. Назовем лишь нескольких - Feedster, BlogPulse, Technorati, Google Blog Search и "Яндекс". Интересной возможностью, предоставляемой некоторыми из таких сервисов, является подписка на RSS-фид с результатами поиска. Например, вы подписываетесь на канал с результатами поиска по запросу "Компьютерра". Теперь каждый раз, когда кто-то упоминает журнал в своем блоге или форуме, вы получаете сообщение об этом.

Онлайновые аггрегаторы

Рассказать обо всех существующих на сегодня аггрегаторах невозможно. Они многочисленны и многообразны. Аггрегатор может скрываться в вашем любимом браузере, работать на КПК или настольном компьютере, открываться в качестве домашней страницы… Открытость стандартов синдикации и их популярность привели к появлению огромного числа приложений, работающих с потоками на различных платформах.

Google Reader: It's a google: стильный, эффектный и удобный Ajax-интерфейс, своеобразное клавиатурное и мышиное управление. Изображен поток последних изменений в русскоязычной Википедии

Сейчас RSS стремительно превращается из экзотики в привычную технологию. Вы можете использовать RSS и даже не знать об этом. Скажем, список новостей при загрузке VisualStudio 2005 поставляется именно через RSS. Практически все скрипты для создания блогов и CMS поддерживают этот стандарт.

Также вполне возможно, что у вас на компьютере уже есть аггрегатор, который входит в состав какой-нибудь программы. Вы можете увидеть RSS-ленты на панельке Google Desktop, в "живых закладках" Mozilla Firefox, виджетах Opera…

В этом разделе мы упомянем наиболее популярные аггрегаторы и расскажем об онлайновых русскоязычных сервисах по работе с фидами. Желающие посмотреть огромную таблицу со сравнением англоязычных офлайновых аггрегаторов могут посетить сайт www.aggcompare.com.

Первым российским онлайновым аггрегатором является Kanban.ru, которому недавно исполнился год. Его возможности стандартны для подобных приложений: сортировка и отображение фидов по категориям, импорт и экспорт списков фидов через OPML. К сожалению, содержание сообщений выводится только в сокращенном виде, с удаленными картинками и форматированием. Зато Kanban прост, быстр, понятен и не показывает рекламы. В составе сервиса работает огромный каталог русскоязычных фидов, разбитый на категории. Кроме того, есть дочерний сервис rss2email, позволяющий получать фиды в виде электронных писем.
Проект RSSReader.ru стартовал в конце прошлого года. Схема приложения напоминает обычный почтовый клиент - слева выводится список подписок, которые можно распределять на категории, справа - сообщения выбранной ленты. Сообщения, как и в Kanban, показываются без форматирования и графики. Имеется возможность импорта и экспорта OPML-файлов. Конечно же, есть и свой каталог фидов, ленты в котором можно фильтровать по категории, популярности и новизне.

"Закладки" - русскоязычная "домашняя страница", позволяющая собрать на экране сразу несколько фидов. Ленты выводятся в независимых блоках. В настройках ленты можно указать режим отображения - только заголовки или же заголовки и сокращенный текст, а также указать количество выводимых сообщений. Правда, текст и тут передается без графики и форматирования. Из дополнительных возможностей есть блок поиска в "Яндексе", Yahoo и Google, блок закладок для вывода ссылок, которыми вы часто пользуетесь; кроме того, на страницу можно добавить модуль "электропочта", который выводит заголовки новых сообщений практически из любого сервиса e-mail (поддерживаются POP3 и IMAP4).

"Яндекс.Лента" - пожалуй, самый функциональный и удобный русскоязычный аггрегатор. Его главное и очень важное преимущество - он позволяет читать полный текст сообщения. При большом количестве фидов сервис может немного притормаживать, но все равно остается довольно удобным. Очень функциональна форма добавления нового фида. Вы можете не только непосредственно ввести адрес ленты, но и просто ввести имя пользователя LiveJournal, поисковый запрос к blog.yandex.ru или "Яндекс.Новости".

За последний год даже в Рунете RSS перестал быть диковинкой. Оранжевая кнопка и надпись RSS/Atom появились на многих сайтах. Сейчас редко встретишь свежезапущенный проект, который не использовал бы эти технологии. Появление поддержки RSS в Windows и Internet Explorer лишь еще больше увеличит популярность синдикации.

RSS и спам

Это может показаться странным, но одним из факторов, способствующих распространению RSS, стал спам. Действительно, об обновлениях на сайте можно сообщать и по e-mail — и многие ресурсы предоставляли и до сих пор предоставляют такую возможность. Но чтобы получать уведомления по почте, нужно сначала сообщить свой адрес — а делать это по понятным причинам хочется не всегда. Даже если компания, стоящая за веб-ресурсом, дорожит своей репутацией и не будет отправлять непрошеную рекламу, нет гарантии, что база адресов случайно не «уплывет» не в те руки. И вообще, раскрытие своего адреса — операция необратимая.

В случае с RSS эта проблема не возникает — ведь здесь не сайт отправляет пользователю письмо, а сам пользователь (точнее, его аггрегатор) скачивает обновленный поток. Если хочет. А если не хочет — то и не скачивает. Никакого раскрытия личных данных не происходит, и контроль за подписками остается целиком в руках пользователя.

Впрочем, если вдруг спамеры захватят контроль над популярной RSS-лентой, взломав соответствующий сайт, проблем тоже будет предостаточно. Как говорилось на конференции Black Hat, многие онлайновые RSS-аггрегаторы полагаются на чистоплотность источника и не проверяют html-код, включенный в поток на предмет потенциально опасного содержимого типа Java-скриптов.

Так что будьте бдительны: когда дело касается безопасности, лучше считать, что враг повсюду.

Илья Щуров [ischurov@computerra.ru]


<<Тригонометрия
Все материалы номера
Cофтерринки >>