Sojolicious is a toolkit for the federated social web, containing plugins for the powerful web framework Mojolicious written in Perl.
use Mojolicious::Lite;
# Load Plugins
plugin 'Webfinger';
plugin 'PubSubHubbub';
plugin 'Salmon';
# Esablish Salmon Endpoints:
group {
under '/salmon';
(any '/:acct/mentioned')->salmon('mentioned');
(any '/:acct/all-replies')->salmon('all-replies');
(any '/signer')->salmon('signer');
};
# Add pubsubhubbub callback url
(any '/pubsub')->pubsub;
hook on_salmon_follow => sub {
# ... You received a follow request
};
hook on_pubsub_content => sub {
my ($c, $type, $dom) = @_;
# ... You receive feed information you subscribed to
};
app->start;
Sojolicious mainly focus on support for the OStatus meta protocol and aims for a straight forward implementation of all surrounding specifications.
Due to the success of Mastodon it is unlikely this path will be followed in the future.
The design goal was to make all plugins useful on their own, as separated building blocks of OStatus, while playing well with each other. All plugins are application (despite the fact that they are Mojolicious plugins) and storage agnostic, providing event driven hooks for usage.
See nils-diewald.de for recent updates.
- ActivityStreams via XML::Loy::ActivityStreams
- Atom via XML::Loy::Atom
- Atom-Threading-Extension via XML::Loy::Atom::Threading
- HostMeta via Mojolicious-Plugin-HostMeta
- MagicSignatures via Crypt::MagicSignatures::Envelope and Crypt::MagicSignatures::Key
- OStatus
- PortableContacts
- PubSubHubbub via Mojolicious::Plugin::PubSubHubbub
- Salmon
- XRD via Mojolicious::Plugin::XRD
- Webfinger via Mojolicious::Plugin::WebFinger
There were plans to expand the scope to other social protocols later, for example OExchange.
- ActivityStreams was developed by Martin Atkins, Will Norris, Chris Messina, Monica Wilkinson, and Rob Dolin.
- Atom was developed by Mark Nottingham and Robert Sayre.
- Atom Threading Extensions> was developed by James M. Snell.
- HostMeta was developed by Eran Hammer-Lahav and Blaine Cook.
- MagicSignatures was developed by John Panzer, Ben Laurie, and Dirk Balfanz.
- Mojolicious is written by Sebastian Riedel.
- OStatus was developed by Evan Prodromou, Brion Vibber, James Walker, and Zach Copley.
- PortableContacts was developed by Joseph Smarr.
- PubSubHubbub was developed by Brad Fitzpatrick, Brett Slatkin, and Martin Atkins.
- Salmon was developed by John Panzer.
- Webfinger was developed by Brad Fitzpatrick, Eran Hammer-Lahav, Blaine Cook, John Panzer, and Joe Gregorio.
- XRD was developed by Eran Hammer-Lahav and Will Norris.
... just to name the persons officially responsible for maintaining the code and the specifications. Thanks to all contributors of these projects as well!
And thanks to all implementors of these specifications for inspiring code (which is referenced in the sourcecode).
Participation on conferences was supported by the BMBF-project Linguistic Networks.
http://mojolicio.us,http://ostatus.org/.
Copyright (C) 2011-2013, Nils Diewald.
This program is free software, you can redistribute it and/or modify it under the same terms as Perl.