A web service that implements the Salmon distributed comment protocol for Facebook, Twitter, and Google+.
Python CSS
Latest commit 3b1553f Sep 30, 2013 @snarfed fix typo
Permalink
Failed to load latest commit information.
django-salmon @ f8faf7f catch up to django-salmon Jun 17, 2012
feedparser @ 24e0e27 add feedparser submodule Jun 17, 2012
google-api-python-client @ 481c80d add new google-api-python-client submodule Aug 12, 2013
httplib2 @ 7c173e6 add httplib2 submodule Jun 12, 2012
python-gflags @ fc365af add google-api-python-client and python-gflags submodules Jun 12, 2012
static fix adding facebook user, tweak front page, switch trash can icon for… Jun 11, 2012
templates misc tweaks for publishing and interop Jul 14, 2012
webutil @ 9817e9c remove votizen/google-api-python-client repo; it disappeared from github Aug 12, 2013
.gitignore rename googleplus_* oauth files to google_* Feb 11, 2013
.gitmodules add new google-api-python-client submodule Aug 12, 2013
README.md fix typo Sep 30, 2013
alltests.py add webutil Apr 5, 2012
app.py *** empty log message *** Jun 11, 2012
app.yaml misc tweaks for publishing and interop Jul 14, 2012
app_test.py rename Domain to TwitterSearch and start to add fb/g+/twitter UI to f… Jun 11, 2012
appengine_config.py add feedparser submodule Jun 17, 2012
facebook.py fix fb bug getting name from profile json Jun 17, 2012
facebook_test.py fix fb bug getting name from profile json Jun 17, 2012
fakes.py reimplement task polling and start on sending slaps Jun 15, 2012
googleplus.py move from googleplus_* oauth files to google_* Feb 12, 2013
googleplus_test.py only grab activities with 'article' attachments that have valid links… Jun 17, 2012
models.py reimplement task polling and start on sending slaps Jun 15, 2012
models_test.py add facebook oauth dance, remove Site class Jun 11, 2012
notes misc tweaks for publishing and interop Jul 14, 2012
queue.yaml add models.py with base Site and Source models Jun 10, 2012
salmon.py misc tweaks for publishing and interop Jul 14, 2012
salmon_test.py misc tweaks for publishing and interop Jul 14, 2012
tasks.py reimplement task polling and start on sending slaps Jun 15, 2012
tasks_test.py fixed send_slap unit test Jun 17, 2012
twitter.py move code for normalizing link to domain into util.domain_from_link() Jun 17, 2012
twitter_test.py remove outdated comment Jun 14, 2012

README.md

salmon-unofficial Salmon

About

This is a web service that implements the Salmon distributed comment protocol for Facebook, Twitter, and Google+. It's deployed at https://salmon-unofficial.appspot.com/ .

It's part of a suite of projects that implement the OStatus federation protocols for the major social networks. The other projects include portablecontacts-, activitystreams-, webfinger-, and ostatus-unofficial.

There are many related projects. sockethub is a similar "polyglot" approach, but more focused on writing than reading. IndieWeb Comments are a bottom-up, decentralized approach where each user posts their comments to their own site first.

License: This project is placed in the public domain.

Using

Just head over to https://salmon-unofficial.appspot.com/ and connect your Facebook, Twitter, or Google+ account!

Future work

We're not at all confident in the interoperability and robustness. We've only done a very limited amount of testing. We should test against more Salmon-capable endpoints and fix the bugs we find.

We should probably also separate the Salmon conversion logic out of this so it can be used as a library as well as a service.

  • Allow passing OAuth tokens as keyword args.
  • Expose the initial OAuth permission flow. The hard work is already done, we just need to let users trigger it programmatically.
  • ...

We'd also love to add more sites! Off the top of my head, YouTube, Tumblr, WordPress.com, Sina Weibo, Qzone, and RenRen would be good candidates. If you're looking to get started, implementing a new site is a good place to start. It's pretty self contained and the existing sites are good examples to follow, but it's a decent amount of work, so you'll be familiar with the whole project by the end.

Development

Pull requests are welcome! Feel free to ping me with any questions.

Most dependencies are included as git submodules. Be sure to run git submodule init after cloning this repo.

You can run the unit tests with ./alltests.py. They depend on the App Engine SDK and mox, both of which you'll need to install yourself.

Deploy command: ~/google_appengine/appcfg.py --oauth2 update .