I'm happy to announce that my barebones ActivityPub server, implemented in Node.js/Express, is now open source! I intend for it to be a reference implementation for developers who are adding ActivityPub to their own services, but also it is an application server that you can build on if you want.
In other words, t's a few hundred lines of code that lets you create Mastodon-compatible accounts that can accept follow requests and post stuff to their followers.
I actually built a little toy service (that I will also eventually open source) which converts any RSS feed to an ActivityPub actor that you can subscribe to in Mastodon (or any other AP-compatible client).
Play with it if you like! It is SUPER rough and most feeds end up horribly rendered in Mastodon but it's still kinda cool to see it work: https://bots.tinysubversions.com/convert/
@darius this is exactly the service I intended to start building in a few weeks. Please alert me when you share the source! I have a project in mind that this would be a huge leg up for.
@darius I just tested this on my local machine and it works great. I still need to understand the basics of ActivityPub and what I could do with this. But what sprung to mind: If it is that easy to create accounts and automate stuff with it, isn't this just another spam-flood waiting to happen?
@frank Yup. I think that's inevitable in any decentralized open system like email. I imagine what's going to have to happen is some kind of group anti spam solution (formal shared server blocks specifically for spam behavior that admins can subscribe to).
@darius Great idea!
@Algot Did you follow the account? Its updates will only appear in your notifications feed because there is no persistence for a "profile" page with a list of posts (yet)
@Algot if you update again with a new post, let me know, I'm following it now too
I'll go do that next.
Does it matter how many items are in the feed?
@Algot No, it shouldn't. It just does a diff every time it polls the feed and then posts any new items.
@Algot I'll check my server logs when I get a chance, too
@Algot when you follow an account you send it a "Follow" message, and then that account adds your account to a local database. Then when it makes a post you're in the list of accounts to notify.
Just did a site update to the RSS file with a timestamp of
Sat Sep 15 2018 16:20:00 GMT
now I wait.
@Algot Something seems not working, I'll try and figure it out!
Glad to serve as a code-test guinea pig!
Nothing has shown up here yet.
Should I see a notification with a message including my .art account name?
Or will the bot's toot only appear in my home timeline...where it might go by sometimes without being seen.
@Algot It simply appears in your home timeline. It's not a notification.
As I sit thinking about it, I'll probably not use this tool as-is (or ask others to follow the account) if the bot doesn't send a notification.
That's not actually a complaint. I understand the idea it is just doing a standard toot and that that is what most bots should do.
But as a way to be sure I know about updates to a very intermittent RSS feed like mine, someone would too often miss that a new post had occurred.
@Algot It only appears in your timeline, not as a notification. If you want to prioritize it you could always make a list for RSS feeds. But it's essentially like following the feed for any website or company or person -- most updates do not get addressed directly to you.
I remain very impressed with the concept of making RSS accessible using ActivityPub.
I am a fan of the RSS feed concept, and your work clearly shows that it can have legs in the fediverse, too.
@Algot Thanks! What I actually hope happens is that clients begin to support things like "notify me in my notifications column every time this account posts even if it's not directed at me". My hope is that by providing these kinds of tools, client implementors will be incentivized to support them.
Have you reached out to the main Mastodon/Pleroma/PixelFed/etc.
I would expect that they would be interested in your ideas.
@Algot Yes! I even know some people involved in ActivityPub itself.
I'll be interested to see how this whole federation thing continues to develop.
Accessory projects like your bot have real potential to enrich the system.
I do follow a lot of people, probably more than I should, but I like to be able to catch onto new ideas like yours as random people I follow boost posts like yours.
I see the profile page but have had no notifications.
I did follow the account and can see the account (with a nice avatar image built from my RSS header graphic - COOL!)
@darius nice, that’s exactly the use case I want this for. I’m also tempted to port this to Python/Flask for better integration into Publ.
@fluffy please do!! It's exactly why I made this
@fluffy I haven't tested it but it seems like it works! I am relying on a very very small subset of RSS that is probably in every atom feed
@darius the Atom DTD is completely different than the RSS DTD though. Atom is a strict functionality superset at least. Are you using an existing feed parsing library? Most of those do a good job of working with both.
@darius I need to finish my Bridgy Fed set up but I was able to turn my blog into a Fediverse instance at email@example.com
@darius it didn't work. :( It only took me to /u/test instead of the user page for the bot I tried making, and when I manually changed the URL, it said no bot was found.
@darius also it appears to have changed the test profile to the RSS feed I chose, or we both had the same weird idea for what feed to try... (your Mastodon profile's own RSS feed...)
@dave that is what happened! It redirected you because the feed already exists as "test", heh
@dave I should make that clearer
@darius oh man, the ol' "it's not a bug, it's a feature" except legit this time! 😃
@darius hey! i was thinking of running a mastodon instance on my server for posting stuff, but i don't want to incur the massive bandwidth usage. would this use less bandwidth than a standard mastodon install? thanks so much!
@lynnesbian Absolutely. You could run this on a very very underpowered machine. It doesn't cache media or even understand anything except "people are following me". It would require some extension -- for example it doesn't render profile pages right now, but you could add views for that kind of thing! (Also my RSS-to-AP converter DOES render these and I will open source it soon, example: https://bots.tinysubversions.com/u/boingboing )
@darius wow, that's amazing! great job with all this!
@darius yay! So excited to check it out!
@darius Question about licensing: the readme says MIT at the end, but there's no normal slightly tweaked MIT LICENSE file, and the package.json says ISC. What's it under?
@bb010g I meant for it to be MIT, will fix
@bb010g Okay, all fixed!
@darius You're rock, thank you !
@darius reckon we can host these on glitch?
@darius Can’t wait to check it out; thank you for making and sharing this :)
@darius 🤔 this is nice! Can it be run standalone and controlled via command line?
@brandon no, it's a reference implementation so it's not really designed to be useful as-is
@darius alright :)