« July 2006 | Main | September 2006 »

Summary support in Plagger 0.8

From my email sent to plagger-dev list:

I've been working on summary support in hackathon-summary branch at http://plagger.org/trac/browser/branches/hackathon-summary

The point of summary feature is:

  • summary, title, body and author has "is_html" or "is_text" method,
    to determine if the data it holds is HTML or plaintext.
  • Plagger::Util::strip_html($html) will render HTML into text using
    HTML::FormatText (Making it pluggable is left TODO)
  • $entry->summary->text and $entry->body->html does what you mean
  • summary is automatically extracted from feed metadata ala RSS description or Atom:summary field. If there's not one, Summary::Auto plugin will auto-generate using Plagger::Util::summarize($entry->body)
  • actually how to generate summary from body HTML is pluggable. There're couple of Summary::* plugins already checked in in the branch. http://plagger.org/trac/browser/branches/hackathon-summary/plagger/lib/Plagger/Plugin/Summary

The final thing left undone is how to declare which field to use in each Notify/Publish plugin without updating the templates. I'd like to say, "send full-content HTML mail to my gmail account, but plaintext of summary to my mobile. Use summary as HTML in Publish::Planet." with
a single config, not requiring to update the templates.

The syntax would be something like:

- module: Publish::Gmail
   config:
     mailto: ****@gmail.com
   override:
     body: $args->{entry}->body->html

- module: Publish::Gmail
   config:
     mailto: ****@mobile.example.com
   override:
     body: $args->{entry}->summary->text

- module: Publish::Planet
   config:
     mailto: ****@mobile.example.com
   override:
     body: $args->{entry}->summary->html

But not sure what would be the best syntax.

I'd like to apply the override/localize methodology to link(s) as well, ala:

- module: Notify::IM
   override:
     link: $args->{entry}->alternate_link('tinyurl')

to display link in TinyURLed (using WWW::Shorten), for instance.

Any feedbacks would be welcome on this.

Plagger Hackathon 2 in Cybozu Labs

This weekend we had our 2nd Hackathon dedicated to Plagger in Cybozu Labs, Akasaka Tokyo.

The biggest event during this Hackathon was TestAThon. Most of our committers have went wild to create unit test files for plugins without test. Now # of .t files jumped up from 32 to 102, which is amazing. Kudos to our testathoners team: youpy, takesako, 33rpm, tomi-ru, hakobe & charsbar (on-site) and mizzy, hsbt & drawnbody for off-site remote testing. Thank you ALL!

Thanks to the unit testing effort, I've been going far to merge the work done in Hackathon-MT branch, and do lots of core changes without worrying about the backward incompatiblity, since whenever I broke the code, those tests will notify me. Great.

So I've been working on: JSON dumper, Feed serializer, Notify::Audio and enclosure integration, decoding YAML config as UTF-8 by default, summary and pluggbale summarizer support, rewriting OPML parser using LibXML SAX, refactored XML::Feed parser into Plagger::FeedParser so plugins can use. Hmm there's a lot.

Summary and summarizer stuff is being done in hackathon-summary branch and will be merged to trunk soon.

Otsune has been working on document improvement and Nagayaman was doing the great website redesign, which will be online soon. Yappo was doing Senna hacking and per-plugin storage, and Search::Rast improvement.

Trac the changes during the Hackathon to be amazed more.

SAKK Plagger Hackathon #1: MT meets Plagger!

Mtplagger

Today we had a Plagger Hackathon in Six Apart KK. We had most of MT and TypePad engineers coming around the couch and hacked together to build a Movable Type plugin for Plagger and couple more search extensions. You're curious why Vox engineers are not there. Yeah, they are all in San Francisco now :)

今日は赤坂の Six Apart KK オフィスで Plagger Hackathon。MT/TypePad のエンジニアがカウチに集まって MT-Plagger プラグインと Search 系のエンハンスメントをハック。Vox エンジニアはいま San Francisco にいってるので不参加です :)

So let's see MT-Plagger demo. The basic idea of the plugin is so simple. When you create or update a new post on Movable Type CMS, new MT::Entry object will be transformed to Plagger::Feed (where MT::Blog corresponds to Feed and MT::Entry to Plagger::Entry) and it will bootstrap the Plagger context to run the later pharses than Filter.

まずは MT-Plagger のデモをどうぞ。このプラグインがやっていることはシンプルで、MT で新しいエントリをつくったり、更新したりしたときに、MT::Entry をベースに Plagger::Feed と Plagger::Entry をつくって Plagger プロセス(Filter:: 以降のフェーズ) を bootstrap します。

You can see in the demo how it works with Publish::Gmail to notify email, and Notify::IRC to do realtime notification to the IRC channel. Integration with Search::* to build a better search engine for MT would be a nice hack. Making it work with new Comment (rather than Entry) would be cool for pluggable Comment notification. Using Publish::Delicious and you'll always get your entry bookmarked on del.icio.us first :)

デモでは Publish::Gmail をつくってメールを送信したり、Notify::IRC をつかってリアルタイムに IRC アナウンスしたりしてます。Search::* と連動して MT 検索を改善してみたり、エントリだけでなくてコメントがきたときに Notify にとばすなんてのも面白そう。Publish::HatenaBookmark でつねにセルクマ 1 get とかもできますね。夢が広がりんぐ。

MT Plagger code is now in hackathon-mt branch and will be merged down to the trunk soon.

Plagger competitive services

Planet and newspipe are examples of the Plagger competitive "software". What about services? Well, there're a couple of competitive web 2.0 sites that do things pretty close to what Plagger does.

Feed Rinse: "Feed Rinse is an easy to use tool that lets you automatically filter out syndicated content that you aren't interested in. It's like a spam filter for your RSS subscriptions"

Touchstone: "Subscribe to changes on your favourite website. Set rules for what’s important. Have alerts appear on your desktop while you work." They call subscription/notify/publish plugins as Input/Output Adapters.

Dapper: "Dapper’s mission is to allow you to use any web based content in any way you can imagine. And by use, we mean going beyond just reading or viewing a webpage."

xFruits: "XFruits makes possible the Mashup RSS creation in a very simple way thanks to the Composer. You can assemble the bricks together so as to build your own feed-based service.
"xFruiter" service's users are referenced. "

My Photo

del.icio.us/miyagawa

Flickr

  • www.flickr.com

My Last FM

Blog powered by TypePad

Blog Search

Lingr