scripting / blue.feedland

A place to discuss and develop an app that connects social media apps via feeds.
MIT License
5 stars 0 forks source link

Questions re the feed format we're using for Bluesky #10

Open scripting opened 1 year ago

scripting commented 1 year ago

If you have any questions about the RSS format we're using for Bluesky, I opened this thread for questions and hopefully answers.

Pointers

  1. An example feed, my most recent Bluesky posts.
  2. The thread where we worked on some of the details of the format.
  3. The new element of the source namespace that's used to point to the user's feed list on Bluesky.
  4. An example list, the list of feeds of people I follow on Bluesky. This is dynamic, when I subscribe to a new feed it automatically appears in this list.
  5. A prototype app I put up to read the list and feeds, to get an idea how it works. The source for the app is in this repo.
scripting commented 1 year ago

@johnspurlock -- here's a change that's worth making when you get a chance, no rush.

In an OPML subscription list, change the category attribute on each <outline> to "all,bluesky".

That will make it possible to have a tab on the news page in FeedLand just for Bluesky feeds.

<outline type="rss" text="@kimkelly.bsky.social on Bluesky" xmlUrl="https:\//rss.firesky.tv?filter=from%3Akimkelly.bsky.social" htmlUrl="https:\//firesky.tv?filter=from%3Akimkelly.bsky.social" category="all,bluesky"/>

scripting commented 1 year ago

@johnspurlock -- another thing I'd like to see in the RSS feed for each user is their avatar.

Assuming you can get this info via the API.

Mastodon's RSS feeds have this feature. An example.

How they do it, using the RSS 2.0 image element.

<image>
  <url>https://files.mastodon.social/accounts/avatars/000/040/242/original/de91b33cdcab3ac2.png/url>
  <title>Dave Winer ☕️/title>
  <link>https://mastodon.social/@davew/link>
</image>
johnspurlock commented 1 year ago

alright, back in the saddle

both of these should be doable with minimal effort, which is the best kind of effort

scripting commented 1 year ago

@johnspurlock -- great! another thing we could use is the user's name and description on the OPML outline element for the user. Saves us from having to read the RSS feed to get that info.

johnspurlock commented 1 year ago

Alright, just deployed some changes to the https://firesky.tv generator:

Hope that helps!

scripting commented 1 year ago

@johnspurlock -- first thanks for picking up the ball here.

A concern -- even though the spec calls for text being the text that's displayed for the outline element, it's common for people to use title in its place. But we stick to the spec, of course. :-)

Here's an example to work with --

<outline type="rss" text="@anamariecox.bsky.social on Bluesky" title="Ana Marie Cox" description="Troublemaker"/>

I omitted the other fields for brevity.

I think that we should shuffle things a little.

  1. text should be what we're now calling title.
  2. description should stay as it is.
  3. the text that's currently in text needs to be given a whole different name, let's call it id and drop the @ and drop the " on Bluesky" bit, it's not helpful (I strip it in my code).

So we end up with something like this:

<outline type="rss" id="anamariecox.bsky.social" text="Ana Marie Cox" description="Troublemaker"/>

scripting commented 1 year ago

I updated the reader app to use the new atts in the OPML files. Here's a screen shot.

image
scripting commented 1 year ago

btw -- the more i think about it, the more i'm sure that the use of "title" as the attribute is a mistake. i probably have the best view of how OPML is used, and this is going to cause problems if it's used (obviously if it's not used, no problem).

i'm pretty sure the changes i asked for above are as easy as changing a couple of strings in the code. it's worth doing. i give you my word on that.

johnspurlock commented 1 year ago

Sounds good to me - those new tweaks are now live!

👉 https://firesky.tv/lists/scripting.com/follows.opml

scripting commented 1 year ago

@johnspurlock -- thanks for making this change. I had just started working on "real" code based on the OPML files, and could clearly foresee problems when we ask other people to do this. This is all part of the process..

I have updated the blueskyreader demo app, and uploaded the new source.

scripting commented 1 year ago

@johnspurlock and anyone who is listening -- I want to tell the story of how I'm using this wonderful new facility in Bluesky in FeedLand. This is production code, not test code.

Feed lists for users

FeedLand has the concept of a user feed list. All feed lists are public. I can see your feed list, you can see mine.

There's a checkbox next to every feed, if you're subscribed to it, it's checked.

So if I'm looking at your list and see a feed that's interesting I can subscribe to it right there, by just clicking the checkbox.

There's also a wedge next to every feed, if I click the wedge I see the five most recent items in the feed.

A feed list from the outside world

Now we have a new idea, browsing a feed list that comes from outside of FeedLand.

It works the same way as above.

But the feeds do not have to already be in the database.

When you click the checkbox for a feed that isn't in the database, we add it, and you are subscribed to it. This is exactly the process of subscribing to a new feed. Something FeedLand does every day.

If you click the wedge next to a feed that we don't have in the database, we read the feed and otherwise everything works exactly the same.

Why this is nice

What's absolutely beautiful about this is the we have a great source of new subscription lists and feeds, coming from Bluesky. We've completely bridged the world of Bluesky to the world of FeedLand.

It should work FeedLand's competitors too. They all know how to read OPML subscription lists, it's a standard, and of course they all read RSS 2.0 feeds as well.

Feed readers are envelopes for the social media world. Right now only Bluesky has the necessary interfaces, but it didn't take long for @johnspurlock to implement the lists and feeds, it won't be a lot of work for the others. From here's it's a matter of finishing development, exciting users, and having them request the feature of the platforms. No small task of course. :-)

Screen shot

image

scripting commented 1 year ago

BTW, the screen shot suggests the title could be shorter and the description should explain.

This way we can flow the title and description right into the UI, pretty sure this is how all feed readers will do it.

scripting commented 1 year ago

I have all this running on a test server locally, next I'll deploy it to blue.feedland.org so we can begin using it immediately.

I want to see if it works! At a technical level it appears to, but I want to see if it's useful in any way.

scotthansonde commented 1 year ago

@johnspurlock and anyone who is listening -- I want to tell the story of how I'm using this wonderful new facility in Bluesky in FeedLand. This is production code, not test code.

I'm not on Bluesky yet, but the idea of browsing outside feed lists in FeedLand sounds exciting. This should also work between instances of FeedLand, so I could use my own instance as my main reader and get suggestions from feed lists feedland.org.

Maybe I could maybe keep my feed list synchronized on both instances to make my feeds easier to find.

scripting commented 1 year ago

Milestone -- blue.feedland.org, a server I deployed just for this project, has the new version of feedlanddatabase that supports viewing social media subscription lists in OPML like the ones we get for Bluesky.

I've subscribed to all the feeds I follow on Bluesky. This is my feed list.

This is my timeline, with no special provisions for Bluesky content. I can see some things aren't working, like interpreting double-linefeeds.

If you want go ahead and create an account on blue.feedland.org, and start subscribing and reading.

scripting commented 1 year ago

That's the normal stuff. Here's the new thing:

https://blue.feedland.org/?subscriptionlist=https://firesky.tv/lists/@danielpunkass.punkitup.com/follows.opml

That opens a page entitled Everyone Daniel Jalkut follows on Bluesky.

If you're logged in, you can subscribe to any of those feeds by clicking the checkbox. Unsub by clicking again.

I chose his feed at random but he's an interesting guy, he makes a popular text editing tool that works with social media apps and blogging tools. It builds on something I created a long time ago, the Metaweblog API, so it's dear to my heart. ;-)

Also I consider many of the people he follows influential and know a few of them. So I've been using his subscription list as a test case as I developed this stuff.

BTW, it went in really easily. The code is well-structured for exactly this kind of adaptation.

Anyway, so the next step in the grand experiment is to make a very simple app that just works with Bluesky stuff, but of course is a front-end for the full FeedLand. I have a developer API I've been working on and this will be the second app I've built for it. In theory it should just snap together. But you never know until it's working. :smile:

PS: Screen shot of the page.

johnspurlock commented 1 year ago

Interesting! Noticed that if you expand the wedge for some of the accounts, it will show no items.

like on: https://blue.feedland.org/?subscriptionlist=https://firesky.tv/lists/@pfrazee/follows.opml

I tried expanding a few of the names (like "Solana legend") and there were no items - is that because the underlying rss feed doesn't have items? Info sometimes reports "The feed is not in the database."

scripting commented 1 year ago

@johnspurlock -- glad you find it interesting.

this is new territory. first time we've hooked up feedland to a social network (or been able to) thanks to your work!

How it should work...

if you click on a wedge for a feed with no items it should say "This feed has no items" where the items would go.

Anything else is an error, so please report as a bug, with reproducible steps. ;-)

scripting commented 1 year ago

A feed with no items behaving correctly.

image