За выходные дописать до рабочего состояния не вышло, устал очень...

Идея состоит в том, чтобы сделать персональный PSHB-хаб, который можно использовать в Джанго-проекте в связке с блогом, форумом и вообще чем угодно, что генерит новые записи. Хочется попробовать повозиться с PSHB в реальности и заодно поймать кайф от мгновенного появления собственных записей в Гуглоридере (хотя я даже не знаю достоверно, поддерживает ли он PSHB :-) ).

Проект окрестил "SubHub".

Название SubHub намекает на то, что это хаб, который работает только с Subscriber'ами, но не с Publisher'ами: единственный его Publisher — это ваш собственный сайт. Это упрощает дело примерно в половину, потому что не нужно реализовывать ту часть, которая отвечает за пинги от Publisher'ов. Уведомление SubHub'а о том, что что-то изменилось, происходит просто вызовом его функции в коде.

Сегодня я успел написать:

И даже ещё ничего реально не тестировал. Осталось доделать:

Если кто хочет поучаствовать, проект открыт на Launchpad'е. Для тех, кто ни одной DVCS кроме git'а не видел, вот небольшая вводная:

  1. Регистрируетесь на launchpad, закидываете туда свой публичный ключик.
  2. Учите локальную машину, какой у вас логин на launchpad: bzr launchpad-login username.
  3. Код скачивается командой bzr branch lp:subhub.
  4. "hack-hack-hack"™.
  5. Закачиваете код к себе на launchpad: bzr push lp:~username/subhub/some_branch_name.
  6. Идёте на свою страницу с кодом https://code.launchpad.net/~username, выбираете бранч и жмёте там "Propose for merging".

Ещё можно вообще пропустить всё связанное с launchpad'ом (у многих на него аллергия), сделать bzr push куда-нибудь к себе на веб-сервер и опубликовать ссылку тут в комментах.

Комментарии: 13

  1. wiz

    Вот это здорово. Оно будет нормализовать в атом и отдавать только новое?

    В дальнейшем планируется довести дело до полноценного хаба?

  2. Ivan Sagalaev

    Вот это здорово. Оно будет нормализовать в атом и отдавать только новое?

    Я думаю, он не будет ничего нормализовать, а просто требовать от приложений, чтобы они генерировали именно атомные фиды. Мне это кажется резонным требованием, потому что я не вижу ни одной причины пользоваться конкретно RSS-форматами.

    Ну и да, будет выдавать новое и изменённое.

    В дальнейшем планируется довести дело до полноценного хаба?

    Нет. Я не вижу большого смысла всем, кому не лень, запускать у себя публичные хабы и обслуживать широкую публику. Это общественная нагрузка — дело больших ребят типа Гугла и Яндекса.

  3. wiz

    В мыслях были скорее не публичные, а приватные, но сразу на несколько своих сервисов. Исключительно исходя из эстетических побуждений (:

  4. Ivan Sagalaev

    Если это сервисы в одном Джанго-проекте, то это и так будет работать. Если в нескольких, то можно просто эту библиотечку во все повесить.

  5. Iakov Davydov

    Бегло ознакомился с сутью технологии: я правильно понимаю, что в таком виде (хаб на том же сервере, что и publisher) эта штука имеет смысл только при следующем сценарии:

    • Я пользуюсь Google Reader, для чтения Вашего блога.
    • При публикации контента, блог оповещает Reader, что появилась новая запись; обновление происходит мгновенно.
    • Впрочем, мне всё равно приходится поллить сам Google Reader, чтобы знать, когда там что-либо появилось.

    Ну и плюс, если я хочу вставлять Ваш RSS-фид на свой сайт; опять же, всё будет быстрее.

    P.S. Только что наблюдал странный глюк предпросмотра: текст "- Я пользуюсь Google Reader." был отображён шрифтом заголовка. При следующем обвнолении preview всё починилось.

  6. artreal

    GReader - publisher, но не subscriber (т.е. моментально там не появляется, но если в GReader нажать на share, то это моментально публикуется, например, в friendfeed)

  7. Ivan Sagalaev

    Iakov Davydov:

    Впрочем, мне всё равно приходится поллить сам Google Reader, чтобы знать, когда там что-либо появилось.

    Да. Но зато Google Reader (а точнее, некий отвлечённый агрегатор) уже может не поллить меня. Если все паблишеры перейдут на push, то это будет существенное снижение нагрузки на сеть в любом случае.

    Кстати, это никак не связано именно с тем, что хаб с паблишером завязан, вы описываете отношения только сабскрайбера и хаба.

    P.S. Только что наблюдал странный глюк предпросмотра: текст "- Я пользуюсь Google Reader." был отображён шрифтом заголовка.

    Это не глюк. Просто иногда недописанный markdown-текст даёт такие эффекты.

    artreal:

    GReader - publisher, но не subscriber

    Хм... Надо будет нашим ребятам из ППБ подкинуть идею, что это можно сделать раньше :-)

  8. arty

    GReader - publisher, но не subscriber

    ну это как сказать, мои посты в нём появляются моментально, хотя, честно говоря, так было ещё до того, как я добавил pubsubhubbub в свой блог — благодаря web pings

  9. Iakov Davydov

    Я тут ещё подумал, и пришёл к выводу, что PSHB не хватает одного очень важного элемента. А именно, XMPP.

    Subscriber в представлении PSHB — это не сам пользователь, а некий очередной (лишний?) посредник. В то же время у настоящего читателя есть приложение, которое заинтересовано в получении уведомления; и этому несчастному приложению приходится делать polling того, что называют subscriber'ом.

    Что же требуется сделать, чтобы счастье наступило?

    • Subscriber (на этот раз это человек; точнее RSS читалка, у которой нет и никогда не будет своего URL) говорит publisher'у: «Я хочу получать обновления».
    • Published: Обратись к этому хабу.
    • Hub: Вот тебе твой RDF, кстати посмотри, в нём есть мой JID; если хочешь получать обновления, просто добавь его в свой контакт лист.

    Далее всё, почти как в PSHB:

    • Publisher to hub: У меня есть апдейт.
    • Hub to subscriber JID: Фид обновился.
    • Subscriber (читалка являющаяся XMPP-клиентом): Юзер, юзер! Есть апдейт!

    Получаем все плюсы PSHB + моментальное уведомление пользователя. Сообщения hub шлёт только в том случае, если получил presence с определённым ресурсом (чтобы глупые сообщения не приходили в интерактивный im-клиент).

  10. Google user

    Идея проталкиваемых клиенту апдейтов хорошая, но хорошо бы иметь клиент, способный их получать. Какая-нибудь stand-alone читалка в линуксе это уже умеет? Вообще в PSHB как-то возможно организовать проталкивание на десктопные приложения? (Согласен с Яковом, что XMPP уведомления были бы кстати).

    Гуглоридером пользоваться перестал более года назад (из-за непрокручиваемой шапки http://twitpic.com/amm7s и отсутствия синхронизации с оффлайновыми читалками).

    Кстати, яндекс-лента про PSHB уже знает?

    (прошу прощения, первый раз без OpenID запостил)

  11. evilkost

    Кстати, яндекс-лента про PSHB уже знает?

    Вопрос скорее не к ленте, а к поиску по блогам. Сама Я.Лента маловероятно что станет хабом.

  12. Ivan Sagalaev

    Яков, я не понял, зачем тут XMPP в принципе? Того же самого можно достичь постоянно открытым HTTP-коннектом с конечного клиента к subscriber'у. Перевод потока апдейтов в XMPP, конечно, сама по себе интересная идея, но она не необходима для решения задачи.

  13. Commando

    Спасибо, утянул к себе в проект. А есть ли к этому коду тесты? А то без них править что-либо боязно.

Добавить комментарий