It’s important to note:
Mastodon =/= Fediverse;
Fediverse == #Mastodon, #Pixelfed, #Write.as, #Micro.blog, #Pleroma, #Peertube, #Lemmy etc.
There’s a whole breadth of components that plug into this ecosystem and each one has its own strengths and weaknesses. Its pretty easy to imagine journalists using more than one tool that can get the job done here; Right now I’m doing just that – putting my longer form posts and series on a test blog instance at @jlg@micro.blog (which is neat – see #indieweb for more); keeping a pure Mastodon official presence at @jlgatewood and also being able to talk to #Diaspora networks (the “other” fediverse) over with my #Friendica instance @starrwulfe.
Unlike #birdsite, there’s no one-size-fits-all here; this is an ecosystem– a protocol like email, not just one app/one site. In order to completely understand how it works, it’s important to understand that analogy– Just as there’s some people who will use Gmail; there’s others who use Outlook, Thunderbird, or even Pine in a terminal window. But they can still talk to each other no matter what because the apps still use SMTP/IMAP/POP. The same could be said about the underlying protocol, ActivityWeb, that underpins Mastodon. Therefore, it’s important to make the distinction:
Mastodon is not a social network; it’s a service/app/component within ActivityWeb/Fediverse/OpenSNS*
Let it be known that for the sake of easier explanation in layman’s terms that I’m coining a new term “OpenSNS - Open Social Network Service” as a way of defining what up until now has been called the ActivityWeb protocol powered flavor of the “Fediverse” in order to help those more used to “Big SocialNets” way of doing things in a centralized silo manner. The use of OpenSNS when used as a protocol/underpinning discription is meant to be used in manner of how one would define Apple Homekit, Amazon Alexa and Apple Homkit’s use of Matter to talk to apps and equipment, i.e., Mastodon and PeerWeb are a part of OpenSNS.
cc @jlg@micro.blog @jlgatewood for visibility
{
"type": "entry",
"author": {
"name": "#indieweb",
"url": "https://mastodon.social/tags/indieweb",
"photo": null
},
"url": "https://public.garden/objects/9f3ae8d3-638d-4279-98b4-50bf019c97c8",
"content": {
"html": "<p>It\u2019s important to note:</p><p>Mastodon =/= Fediverse;<br />Fediverse == <a href=\"https://public.garden/tag/mastodon\">#Mastodon</a>, <a href=\"https://public.garden/tag/pixelfed\">#Pixelfed</a>, #<a href=\"http://Write.as\">Write.as</a>, #<a href=\"http://Micro.blog\">Micro.blog</a>, <a href=\"https://public.garden/tag/pleroma\">#Pleroma</a>, <a href=\"https://public.garden/tag/peertube\">#Peertube</a>, <a href=\"https://public.garden/tag/lemmy\">#Lemmy</a> etc.</p><p>There\u2019s a whole breadth of components that plug into this ecosystem and each one has its own strengths and weaknesses. Its pretty easy to imagine journalists using more than one tool that can get the job done here; Right now I\u2019m doing just that \u2013 putting my longer form posts and series on a test blog instance at @jlg@micro.blog (which is neat \u2013 see <a href=\"https://public.garden/tag/indieweb\">#indieweb</a> for more); keeping a pure Mastodon official presence at <span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.cloud/@jlgatewood\">@<span>jlgatewood</span></a></span> and also being able to talk to <a href=\"https://public.garden/tag/diaspora\">#Diaspora</a> networks (the \u201cother\u201d fediverse) over with my <a href=\"https://public.garden/tag/friendica\">#Friendica</a> instance <span class=\"h-card\"><a class=\"u-url\" href=\"https://libranet.de/profile/starrwulfe\">@<span>starrwulfe</span></a></span>. </p><p>Unlike <a href=\"https://public.garden/tag/birdsite\">#birdsite</a>, there\u2019s no one-size-fits-all here; this is an ecosystem\u2013 a protocol like email, not just one app/one site. In order to completely understand how it works, it\u2019s important to understand that analogy\u2013 Just as there\u2019s some people who will use Gmail; there\u2019s others who use Outlook, Thunderbird, or even Pine in a terminal window. But they can still talk to each other no matter what because the apps still use SMTP/IMAP/POP. The same could be said about the underlying protocol, ActivityWeb, that underpins Mastodon. Therefore, it\u2019s important to make the distinction:</p><p>Mastodon is not a social network; it\u2019s a service/app/component within ActivityWeb/Fediverse/OpenSNS*</p><p>Let it be known that for the sake of easier explanation in layman\u2019s terms that I\u2019m coining a new term \u201cOpenSNS - Open Social Network Service\u201d as a way of defining what up until now has been called the ActivityWeb protocol powered flavor of the \u201cFediverse\u201d in order to help those more used to \u201cBig SocialNets\u201d way of doing things in a centralized silo manner. The use of OpenSNS when used as a protocol/underpinning discription is meant to be used in manner of how one would define Apple Homekit, Amazon Alexa and Apple Homkit\u2019s use of Matter to talk to apps and equipment, i.e., Mastodon and PeerWeb are a part of OpenSNS.</p><p>cc @jlg@micro.blog <span class=\"h-card\"><a class=\"u-url\" href=\"https://mastodon.cloud/@jlgatewood\">@<span>jlgatewood</span></a></span> for visibility</p>",
"text": "It\u2019s important to note:Mastodon =/= Fediverse;\nFediverse == #Mastodon, #Pixelfed, #Write.as, #Micro.blog, #Pleroma, #Peertube, #Lemmy etc.There\u2019s a whole breadth of components that plug into this ecosystem and each one has its own strengths and weaknesses. Its pretty easy to imagine journalists using more than one tool that can get the job done here; Right now I\u2019m doing just that \u2013 putting my longer form posts and series on a test blog instance at @jlg@micro.blog (which is neat \u2013 see #indieweb for more); keeping a pure Mastodon official presence at @jlgatewood and also being able to talk to #Diaspora networks (the \u201cother\u201d fediverse) over with my #Friendica instance @starrwulfe. Unlike #birdsite, there\u2019s no one-size-fits-all here; this is an ecosystem\u2013 a protocol like email, not just one app/one site. In order to completely understand how it works, it\u2019s important to understand that analogy\u2013 Just as there\u2019s some people who will use Gmail; there\u2019s others who use Outlook, Thunderbird, or even Pine in a terminal window. But they can still talk to each other no matter what because the apps still use SMTP/IMAP/POP. The same could be said about the underlying protocol, ActivityWeb, that underpins Mastodon. Therefore, it\u2019s important to make the distinction:Mastodon is not a social network; it\u2019s a service/app/component within ActivityWeb/Fediverse/OpenSNS*Let it be known that for the sake of easier explanation in layman\u2019s terms that I\u2019m coining a new term \u201cOpenSNS - Open Social Network Service\u201d as a way of defining what up until now has been called the ActivityWeb protocol powered flavor of the \u201cFediverse\u201d in order to help those more used to \u201cBig SocialNets\u201d way of doing things in a centralized silo manner. The use of OpenSNS when used as a protocol/underpinning discription is meant to be used in manner of how one would define Apple Homekit, Amazon Alexa and Apple Homkit\u2019s use of Matter to talk to apps and equipment, i.e., Mastodon and PeerWeb are a part of OpenSNS.cc @jlg@micro.blog @jlgatewood for visibility"
},
"published": "2022-12-24T12:42:26+00:00",
"post-type": "note",
"_id": "33950847",
"_source": "7235",
"_is_read": true
}
Thoughts on decentralization:
- I believe in the decentralized internet and ideas like #indieweb, #fediverse and #selfhosting.
- I'm not interested in cryptocurrency/blockchain/web3, they are bad ideas, or at least bad implementations.
- I believe PoW (proof of work/waste) should be banned globally as it's burning this planet and make everyone's life at stake.
- As a gamer, I consider myself a victim of crypto/PoW for the skyrocketed GPU price and supply chain shortage. (1/2)
{
"type": "entry",
"author": {
"name": "@mudkip",
"url": "https://indieweb.social/@mudkip",
"photo": null
},
"url": "https://indieweb.social/@mudkip/109566885036079308",
"content": {
"html": "<p>Thoughts on decentralization:</p><p>- I believe in the decentralized internet and ideas like <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a>, <a href=\"https://indieweb.social/tags/fediverse\">#<span>fediverse</span></a> and <a href=\"https://indieweb.social/tags/selfhosting\">#<span>selfhosting</span></a>.<br />- I'm not interested in cryptocurrency/blockchain/web3, they are bad ideas, or at least bad implementations.<br />- I believe PoW (proof of work/waste) should be banned globally as it's burning this planet and make everyone's life at stake.<br />- As a gamer, I consider myself a victim of crypto/PoW for the skyrocketed GPU price and supply chain shortage. (1/2)</p>",
"text": "Thoughts on decentralization:- I believe in the decentralized internet and ideas like #indieweb, #fediverse and #selfhosting.\n- I'm not interested in cryptocurrency/blockchain/web3, they are bad ideas, or at least bad implementations.\n- I believe PoW (proof of work/waste) should be banned globally as it's burning this planet and make everyone's life at stake.\n- As a gamer, I consider myself a victim of crypto/PoW for the skyrocketed GPU price and supply chain shortage. (1/2)"
},
"published": "2022-12-24T04:59:47+00:00",
"post-type": "note",
"_id": "33945019",
"_source": "7235",
"_is_read": true
}
@dean @blindscribe I do use #Flickr, and would definitely recommend it as a good alternative to Facebook (full-res originals, proper licence metadata, approximate dates, …) but I wouldn't really call it part of the #indieweb. Not yet, anyway (they don't support #ActivityPup). The most #fediverse image system is #pixelfed I think, although I've not used it so can't really say what it's like. :-) https://pixelfed.org/
{
"type": "entry",
"author": {
"name": "@samwilson",
"url": "https://wikis.world/@samwilson",
"photo": null
},
"url": "https://wikis.world/@samwilson/109566411164850025",
"content": {
"html": "<p><span class=\"h-card\"><a class=\"u-url\" href=\"https://social.librem.one/@dean\">@<span>dean</span></a></span> <span class=\"h-card\"><a class=\"u-url\" href=\"https://writing.exchange/@blindscribe\">@<span>blindscribe</span></a></span> I do use <a href=\"https://wikis.world/tags/Flickr\">#<span>Flickr</span></a>, and would definitely recommend it as a good alternative to Facebook (full-res originals, proper licence metadata, approximate dates, \u2026) but I wouldn't really call it part of the <a href=\"https://wikis.world/tags/indieweb\">#<span>indieweb</span></a>. Not yet, anyway (they don't support <a href=\"https://wikis.world/tags/ActivityPup\">#<span>ActivityPup</span></a>). The most <a href=\"https://wikis.world/tags/fediverse\">#<span>fediverse</span></a> image system is <a href=\"https://wikis.world/tags/pixelfed\">#<span>pixelfed</span></a> I think, although I've not used it so can't really say what it's like. :-) <a href=\"https://pixelfed.org/\"><span>https://</span><span>pixelfed.org/</span><span></span></a></p>",
"text": "@dean @blindscribe I do use #Flickr, and would definitely recommend it as a good alternative to Facebook (full-res originals, proper licence metadata, approximate dates, \u2026) but I wouldn't really call it part of the #indieweb. Not yet, anyway (they don't support #ActivityPup). The most #fediverse image system is #pixelfed I think, although I've not used it so can't really say what it's like. :-) https://pixelfed.org/"
},
"published": "2022-12-24T02:59:16+00:00",
"post-type": "note",
"_id": "33944665",
"_source": "7235",
"_is_read": true
}
I have been remaking my website lately!
It is squarely situated within the retro web or indie web subculture. Only semantic XHTML and CSS, with link lists, blinkies, tons of gifs, playful designs, shrines, blog posts... Like on #Geocities in the far-gone past! Should be accessible too.
It still ought to be filled with content, but we're getting there.
Here you go:
https://libre.town
#xhtml #css #retroweb #indieweb #showcase #blog #internet #yesterweb #reclaimtheweb #oled #website
{
"type": "entry",
"author": {
"name": "@dazego",
"url": "https://social.tchncs.de/@dazego",
"photo": null
},
"url": "https://social.tchncs.de/@dazego/109566383941801353",
"content": {
"html": "<p>I have been remaking my website lately!</p><p>It is squarely situated within the retro web or indie web subculture. Only semantic XHTML and CSS, with link lists, blinkies, tons of gifs, playful designs, shrines, blog posts... Like on <a href=\"https://social.tchncs.de/tags/Geocities\">#<span>Geocities</span></a> in the far-gone past! Should be accessible too.</p><p>It still ought to be filled with content, but we're getting there.</p><p>Here you go:<br /><a href=\"https://libre.town\"><span>https://</span><span>libre.town</span><span></span></a></p><p><a href=\"https://social.tchncs.de/tags/xhtml\">#<span>xhtml</span></a> <a href=\"https://social.tchncs.de/tags/css\">#<span>css</span></a> <a href=\"https://social.tchncs.de/tags/retroweb\">#<span>retroweb</span></a> <a href=\"https://social.tchncs.de/tags/indieweb\">#<span>indieweb</span></a> <a href=\"https://social.tchncs.de/tags/showcase\">#<span>showcase</span></a> <a href=\"https://social.tchncs.de/tags/blog\">#<span>blog</span></a> <a href=\"https://social.tchncs.de/tags/internet\">#<span>internet</span></a> <a href=\"https://social.tchncs.de/tags/yesterweb\">#<span>yesterweb</span></a> <a href=\"https://social.tchncs.de/tags/reclaimtheweb\">#<span>reclaimtheweb</span></a> <a href=\"https://social.tchncs.de/tags/oled\">#<span>oled</span></a> <a href=\"https://social.tchncs.de/tags/website\">#<span>website</span></a></p>",
"text": "I have been remaking my website lately!It is squarely situated within the retro web or indie web subculture. Only semantic XHTML and CSS, with link lists, blinkies, tons of gifs, playful designs, shrines, blog posts... Like on #Geocities in the far-gone past! Should be accessible too.It still ought to be filled with content, but we're getting there.Here you go:\nhttps://libre.town#xhtml #css #retroweb #indieweb #showcase #blog #internet #yesterweb #reclaimtheweb #oled #website"
},
"published": "2022-12-24T02:52:20+00:00",
"post-type": "note",
"_id": "33944666",
"_source": "7235",
"_is_read": true
}
I want to be free from the confines of this hyper-capitalist world we are living in.
I want to see the Internet that I never got to see — an open, free ecosystem run by enthusiasts from their closets.
I wonder what would be of it in our current highspeed era if it were not killed by corporations and silos.
Perhaps we would have something absolutely beautiful on our hands. Perhaps...we could still have it?
{
"type": "entry",
"published": "2022-12-24T02:57:23.219771207+03:00",
"url": "https://fireburn.ru/posts/apzzGSz",
"category": [
"indieweb",
"philosophy"
],
"content": {
"text": "I want to be free from the confines of this hyper-capitalist world we are living in.\n\nI want to see the Internet that I never got to see \u2014 an open, free ecosystem run by enthusiasts from their closets.\n\nI wonder what would be of it in our current highspeed era if it were not killed by corporations and silos.\n\nPerhaps we would have something absolutely beautiful on our hands. Perhaps...we could still have it?",
"html": "<p>I want to be free from the confines of this hyper-capitalist world we are living in.</p>\n\n<p>I want to see the Internet that I never got to see \u2014 an open, free ecosystem run by enthusiasts from their closets.</p>\n\n<p>I wonder what would be of it in our current highspeed era if it were not killed by corporations and silos.</p>\n\n<p>Perhaps we would have something absolutely beautiful on our hands. Perhaps...we could still have it?</p>"
},
"author": {
"type": "card",
"name": "Vika",
"url": "https://fireburn.ru/",
"photo": "https://fireburn.ru/.kittybox/media/uploads/f1/5a/fb/9b/081efafb97b4ad59f5025cf2fd0678b8f3e20e4c292489107d52be09"
},
"post-type": "note",
"_id": "33943830",
"_source": "1371",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://herestomwiththeweather.com/",
"photo": null
},
"url": "https://herestomwiththeweather.com/2022/12/22/indieweb-and-mastodon/",
"published": "2022-12-22T20:06:15+00:00",
"content": {
"html": "<p>Thanks to <a href=\"https://effaustin.org/\">EFF-Austin</a> for the opportunity to talk along with <a href=\"https://www.weblogsky.com/\">Jon Lebkowsky</a> about the relationship between <a href=\"https://indieweb.org/\">Indieweb</a> and the <a href=\"https://en.wikipedia.org/wiki/Fediverse\">Fediverse</a>. (<a href=\"https://herestomwiththeweather.com/effaustin/indieweb_mastodon\">Slides</a> and <a href=\"https://www.youtube.com/watch?v=VRu3i9u9I5Q\">video</a>)</p>\n\n<p>The meetup <a href=\"https://www.meetup.com/EFF-Austin/events/nltdcrydcqbrb/\">Indieweb and Mastodon: The Time is Now</a> was coincidentally in the same room as <a href=\"https://indieweb.org/2020/Austin\">IndieWebCamp Austin 2020</a>.</p>",
"text": "Thanks to EFF-Austin for the opportunity to talk along with Jon Lebkowsky about the relationship between Indieweb and the Fediverse. (Slides and video)\n\nThe meetup Indieweb and Mastodon: The Time is Now was coincidentally in the same room as IndieWebCamp Austin 2020."
},
"name": "IndieWeb and Mastodon",
"post-type": "article",
"_id": "33939170",
"_source": "246",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://herestomwiththeweather.com/",
"photo": null
},
"url": "https://herestomwiththeweather.com/2022/11/15/mastodon-discovery/",
"published": "2022-11-15T16:42:33+00:00",
"content": {
"html": "<p>Making notes is helpful when reading and running unfamiliar code for the first time. I usually start with happy paths. Here\u2019s some notes I made while learning about Mastodon account search and discovery. It\u2019s really cool to poke around the code that so many people are using every day to find each other.</p>\n\n<p>When you search on an account identifier on Mastodon, your browser makes a request to your Mastodon instance:</p>\n\n<blockquote>\n <p>/api/v2/search?q=%40herestomwiththeweather%40mastodon.social&resolve=true&limit=5</p>\n</blockquote>\n\n<p>The resolve=true parameter tells your Mastodon instance to make a webfinger request to the target Mastodon instance if necessary. The search controller <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/controllers/api/v2/search_controller.rb#L32\">makes a call to the SearchService</a></p>\n\n<pre><code> def search_results\n SearchService.new.call(\n params[:q],\n current_account,\n limit_param(RESULTS_LIMIT),\n search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed))\n )\n end\n</code></pre>\n\n\n<p>and since resolve=true, SearchService <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/account_search_service.rb#L36\">makes a call to the ResolveAccountService</a></p>\n\n<pre><code> if options[:resolve]\n ResolveAccountService.new.call(query)\n</code></pre>\n\n\n<p>The purpose of ResolveAccountService is to \u201cFind or create an account record for a remote user\u201d and return an account object to the search controller. It includes <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/helpers/webfinger_helper.rb\">WebfingerHelper</a> which is a trivial module with just one one-line method named webfinger!()</p>\n\n<pre><code>module WebfingerHelper\n def webfinger!(uri)\n Webfinger.new(uri).perform\n end\nend\n</code></pre>\n\n\n<p>This method returns a webfinger object. Rather than call it directly, ResolveAccountService <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/resolve_account_service.rb#L34\">invokes process_webfinger!</a> which <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/resolve_account_service.rb#L86\">invokes it</a> and then asks the returned webfinger object\u2019s subject method for its username and domain and makes them instance variables of the service object.</p>\n\n<pre><code> def process_webfinger!(uri)\n @webfinger = webfinger!(\"acct:#{uri}\")\n confirmed_username, confirmed_domain = split_acct(@webfinger.subject)\n\n if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?\n @username = confirmed_username\n @domain = confirmed_domain\n return\n end\n</code></pre>\n\n\n<p>If the Mastodon instance does not already know about this account, ResolveAccountService <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/resolve_account_service.rb#L55\">invokes fetch_account!</a> which <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/resolve_account_service.rb#L114\">calls the ActivityPub::FetchRemoteAccountService</a> which inherits from <a href=\"https://github.com/herestomwiththeweather/mastodon/blob/main/app/services/activitypub/fetch_remote_actor_service.rb\">ActivityPub::FetchRemoteActorService</a></p>\n\n<pre><code> @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors])\n</code></pre>\n\n\n<p>The actor_url will look something like</p>\n\n<blockquote>\n <p>https://mastodon.social/users/herestomwiththeweather</p>\n</blockquote>\n\n<p>The ActivityPub::FetchRemoteActorService <a href=\"https://github.com/mastodon/mastodon/blob/main/app/services/activitypub/fetch_remote_actor_service.rb#L19\">passes the actor_url parameter to fetch_resource</a> to receive a json response for the remote account.</p>\n\n<pre><code> @json = begin\n if prefetched_body.nil?\n fetch_resource(uri, id)\n else\n\n</code></pre>\n\n\n<p>The response includes a lot of information including name, summary, publicKey, images and urls to fetch more information like followers and following.</p>\n\n<p>Finally, the ActivityPub::FetchRemoteActorService <a href=\"https://github.com/mastodon/mastodon/blob/main/app/services/activitypub/fetch_remote_actor_service.rb#L38\">calls the ActivityPub::ProcessAccountService</a>, passing it the json response.</p>\n\n<pre><code> ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key)\n</code></pre>\n\n\n<p>If the Mastodon instance does not know about the account, ActivityPub::ProcessAccountService <a href=\"https://github.com/mastodon/mastodon/blob/main/app/services/activitypub/process_account_service.rb#L28\">invokes create_account and update_account</a> to save the username, domain and all the associated urls from the json response to a new account record in the database.</p>\n\n<pre><code> create_account if @account.nil?\n update_account\n</code></pre>\n\n\n<p>I have several questions about how following others works and will probably look at that soon. I may start out by reading <a href=\"https://tinysubversions.com/notes/reading-activitypub/\">A highly opinionated guide to learning about ActivityPub</a> which I bookmarked a while ago.</p>",
"text": "Making notes is helpful when reading and running unfamiliar code for the first time. I usually start with happy paths. Here\u2019s some notes I made while learning about Mastodon account search and discovery. It\u2019s really cool to poke around the code that so many people are using every day to find each other.\n\nWhen you search on an account identifier on Mastodon, your browser makes a request to your Mastodon instance:\n\n\n /api/v2/search?q=%40herestomwiththeweather%40mastodon.social&resolve=true&limit=5\n\n\nThe resolve=true parameter tells your Mastodon instance to make a webfinger request to the target Mastodon instance if necessary. The search controller makes a call to the SearchService\n\n def search_results\n SearchService.new.call(\n params[:q],\n current_account,\n limit_param(RESULTS_LIMIT),\n search_params.merge(resolve: truthy_param?(:resolve), exclude_unreviewed: truthy_param?(:exclude_unreviewed))\n )\n end\n\n\n\nand since resolve=true, SearchService makes a call to the ResolveAccountService\n\n if options[:resolve]\n ResolveAccountService.new.call(query)\n\n\n\nThe purpose of ResolveAccountService is to \u201cFind or create an account record for a remote user\u201d and return an account object to the search controller. It includes WebfingerHelper which is a trivial module with just one one-line method named webfinger!()\n\nmodule WebfingerHelper\n def webfinger!(uri)\n Webfinger.new(uri).perform\n end\nend\n\n\n\nThis method returns a webfinger object. Rather than call it directly, ResolveAccountService invokes process_webfinger! which invokes it and then asks the returned webfinger object\u2019s subject method for its username and domain and makes them instance variables of the service object.\n\n def process_webfinger!(uri)\n @webfinger = webfinger!(\"acct:#{uri}\")\n confirmed_username, confirmed_domain = split_acct(@webfinger.subject)\n\n if confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?\n @username = confirmed_username\n @domain = confirmed_domain\n return\n end\n\n\n\nIf the Mastodon instance does not already know about this account, ResolveAccountService invokes fetch_account! which calls the ActivityPub::FetchRemoteAccountService which inherits from ActivityPub::FetchRemoteActorService\n\n @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url, suppress_errors: @options[:suppress_errors])\n\n\n\nThe actor_url will look something like\n\n\n https://mastodon.social/users/herestomwiththeweather\n\n\nThe ActivityPub::FetchRemoteActorService passes the actor_url parameter to fetch_resource to receive a json response for the remote account.\n\n @json = begin\n if prefetched_body.nil?\n fetch_resource(uri, id)\n else\n\n\n\n\nThe response includes a lot of information including name, summary, publicKey, images and urls to fetch more information like followers and following.\n\nFinally, the ActivityPub::FetchRemoteActorService calls the ActivityPub::ProcessAccountService, passing it the json response.\n\n ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key)\n\n\n\nIf the Mastodon instance does not know about the account, ActivityPub::ProcessAccountService invokes create_account and update_account to save the username, domain and all the associated urls from the json response to a new account record in the database.\n\n create_account if @account.nil?\n update_account\n\n\n\nI have several questions about how following others works and will probably look at that soon. I may start out by reading A highly opinionated guide to learning about ActivityPub which I bookmarked a while ago."
},
"name": "Mastodon Discovery",
"post-type": "article",
"_id": "33939172",
"_source": "246",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://herestomwiththeweather.com/",
"photo": null
},
"url": "https://herestomwiththeweather.com/2022/10/25/indieauth-login-history/",
"published": "2022-10-25T16:51:16+00:00",
"content": {
"html": "<p>In my last post, I mentioned that I planned to add login history to <a href=\"https://github.com/herestomwiththeweather/irwin\">Irwin</a>. As I was testing my code, I logged into <a href=\"https://indieweb.org/\">indieweb.org</a> and noticed that I needed to update my code to support <a href=\"https://indieauth.spec.indieweb.org/#profile-url-response\">5.3.2 Profile URL Response</a> of the IndieAuth spec as this IndieAuth client does not need an access token. Here\u2019s what the history looks like on my IndieAuth server:</p>\n\n<p><img src=\"https://coffeebucks.s3.amazonaws.com/images/image/jekyll/indieauth_login_history.png\" alt=\"IndieAuth login history\" /></p>\n\n<p>If I click on a login timestamp, I have the option to revoke the access token associated with the login if it exists and has not already expired. My next step is to test some other <a href=\"https://indieweb.org/Micropub/Servers\">micropub servers</a> than the one I use to see what interoperability updates I may need to make.</p>",
"text": "In my last post, I mentioned that I planned to add login history to Irwin. As I was testing my code, I logged into indieweb.org and noticed that I needed to update my code to support 5.3.2 Profile URL Response of the IndieAuth spec as this IndieAuth client does not need an access token. Here\u2019s what the history looks like on my IndieAuth server:\n\n\n\nIf I click on a login timestamp, I have the option to revoke the access token associated with the login if it exists and has not already expired. My next step is to test some other micropub servers than the one I use to see what interoperability updates I may need to make."
},
"name": "IndieAuth login history",
"post-type": "article",
"_id": "33939174",
"_source": "246",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": null,
"url": "https://herestomwiththeweather.com/",
"photo": null
},
"url": "https://herestomwiththeweather.com/2022/10/09/minimum-viable-indieauth-server/",
"published": "2022-10-09T20:38:46+00:00",
"content": {
"html": "<p>One of the building blocks of the <a href=\"https://indieweb.org/\">Indieweb</a> is <a href=\"https://indieweb.org/IndieAuth\">IndieAuth</a>. Like many others, I bootstrapped my experience with <a href=\"https://indieauth.com/\">indieauth.com</a> but as <a href=\"https://martymcgui.re/2022/07/31/switching-costs-for-an-indieauth-server/\">Marty McGuire explains</a>, there are good reasons to switch and even consider building your own. Because I wanted a server as simple to understand as possible but also wanted to be able to add features that are usually not available, I created a rails project called <a href=\"https://github.com/herestomwiththeweather/irwin\">Irwin</a> and <a href=\"https://github.com/herestomwiththeweather/herestomwiththeweather.github.io/commit/554dbaad13250a97c2b26c034fbce3dd6908c273\">recently configured my blog to use it</a>.</p>\n\n<p>This is not production ready code. While I know that <a href=\"https://github.com/voxpelli/webpage-micropub-to-github\">the micropub server I use</a> works with it, I expect others may not. Also, there is no support for refresh tokens and other things in the spec that I didn\u2019t consider high priority. It does support <a href=\"https://indieweb.org/PKCE\">PKCE</a> but not the less useful \u201cplain\u201d method.</p>\n\n<p>All of <a href=\"https://aaronparecki.com/2020/12/03/1/indieauth-2020\">IndieAuth Spec Updates 2020</a> was very clear and helpful. In one case, I made the server probably too strict (as an easy way to curtail spam registrations). It requires that the hosts for a blog\u2019s authorization endpoint and token endpoint match the host of the IndieAuth server before a user can register an account on the indieauth server.</p>\n\n<p>I plan to add an option for a user to keep a history of logins to indieauth clients soon. Please let me know if you have any questions or suggestions.</p>",
"text": "One of the building blocks of the Indieweb is IndieAuth. Like many others, I bootstrapped my experience with indieauth.com but as Marty McGuire explains, there are good reasons to switch and even consider building your own. Because I wanted a server as simple to understand as possible but also wanted to be able to add features that are usually not available, I created a rails project called Irwin and recently configured my blog to use it.\n\nThis is not production ready code. While I know that the micropub server I use works with it, I expect others may not. Also, there is no support for refresh tokens and other things in the spec that I didn\u2019t consider high priority. It does support PKCE but not the less useful \u201cplain\u201d method.\n\nAll of IndieAuth Spec Updates 2020 was very clear and helpful. In one case, I made the server probably too strict (as an easy way to curtail spam registrations). It requires that the hosts for a blog\u2019s authorization endpoint and token endpoint match the host of the IndieAuth server before a user can register an account on the indieauth server.\n\nI plan to add an option for a user to keep a history of logins to indieauth clients soon. Please let me know if you have any questions or suggestions."
},
"name": "Minimum Viable IndieAuth Server",
"post-type": "article",
"_id": "33939175",
"_source": "246",
"_is_read": true
}
#lazyWeb #indieWeb #webdev folks: what is the best practice for building an #RSS reader (think of a barebones stripped down Feedly), considering RSS feed files could be very large in size?
Set up a chron job to index the feed contents, store to DB, and serve (get/read) from DB instead of fetching & reading from the feed URL directly?
And/or any tutorials or sample repo?
Thanks!
{
"type": "entry",
"author": {
"name": "@ekafyi",
"url": "https://indieweb.social/@ekafyi",
"photo": null
},
"url": "https://indieweb.social/@ekafyi/109563873763535513",
"content": {
"html": "<p><a href=\"https://indieweb.social/tags/lazyWeb\">#<span>lazyWeb</span></a> <a href=\"https://indieweb.social/tags/indieWeb\">#<span>indieWeb</span></a> <a href=\"https://indieweb.social/tags/webdev\">#<span>webdev</span></a> folks: what is the best practice for building an <a href=\"https://indieweb.social/tags/RSS\">#<span>RSS</span></a> reader (think of a barebones stripped down Feedly), considering RSS feed files could be very large in size?</p><p>Set up a chron job to index the feed contents, store to DB, and serve (get/read) from DB instead of fetching & reading from the feed URL directly?</p><p>And/or any tutorials or sample repo?</p><p>Thanks!</p>",
"text": "#lazyWeb #indieWeb #webdev folks: what is the best practice for building an #RSS reader (think of a barebones stripped down Feedly), considering RSS feed files could be very large in size?Set up a chron job to index the feed contents, store to DB, and serve (get/read) from DB instead of fetching & reading from the feed URL directly?And/or any tutorials or sample repo?Thanks!"
},
"published": "2022-12-23T16:13:58+00:00",
"post-type": "note",
"_id": "33931549",
"_source": "7235",
"_is_read": true
}
The more I research the #fediverse, #indieweb, #SmallWeb and other related things, the more I see how #Mastodon is not really the ideal end goal I would like it to be, but it's a dam huge step in the right direction.
It feels like a fresh gust of hope.
{
"type": "entry",
"author": {
"name": "@alexito4",
"url": "https://mastodon.social/@alexito4",
"photo": null
},
"url": "https://mastodon.social/@alexito4/109563690798462394",
"content": {
"html": "<p>The more I research the <a href=\"https://mastodon.social/tags/fediverse\">#<span>fediverse</span></a>, <a href=\"https://mastodon.social/tags/indieweb\">#<span>indieweb</span></a>, <a href=\"https://mastodon.social/tags/SmallWeb\">#<span>SmallWeb</span></a> and other related things, the more I see how <a href=\"https://mastodon.social/tags/Mastodon\">#<span>Mastodon</span></a> is not really the ideal end goal I would like it to be, but it's a dam huge step in the right direction.<br />It feels like a fresh gust of hope.</p>",
"text": "The more I research the #fediverse, #indieweb, #SmallWeb and other related things, the more I see how #Mastodon is not really the ideal end goal I would like it to be, but it's a dam huge step in the right direction.\nIt feels like a fresh gust of hope."
},
"published": "2022-12-23T15:27:26+00:00",
"post-type": "note",
"_id": "33931550",
"_source": "7235",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "@jrsstorytime",
"url": "https://social.yesterweb.org/@jrsstorytime",
"photo": null
},
"url": "https://social.yesterweb.org/@jrsstorytime/109561151685033288",
"content": {
"html": "<p><a href=\"https://social.yesterweb.org/tags/introduction\">#<span>introduction</span></a></p><p>\ud83d\udc4b</p><p>I am JR. I am <a href=\"https://social.yesterweb.org/tags/Latine\">#<span>Latine</span></a> and <a href=\"https://social.yesterweb.org/tags/asian\">#<span>asian</span></a> <a href=\"https://social.yesterweb.org/tags/heritage\">#<span>heritage</span></a> / <a href=\"https://social.yesterweb.org/tags/diaspora\">#<span>diaspora</span></a>. <a href=\"https://social.yesterweb.org/tags/chronicallyill\">#<span>chronicallyill</span></a> and <a href=\"https://social.yesterweb.org/tags/nonbinary\">#<span>nonbinary</span></a>. </p><p>I like and post about:<br /><a href=\"https://social.yesterweb.org/tags/audiobooks\">#<span>audiobooks</span></a><br /><a href=\"https://social.yesterweb.org/tags/books\">#<span>books</span></a><br /><a href=\"https://social.yesterweb.org/tags/nonfiction\">#<span>nonfiction</span></a> <a href=\"https://social.yesterweb.org/tags/sff\">#<span>sff</span></a> <a href=\"https://social.yesterweb.org/tags/graphicnovel\">#<span>graphicnovel</span></a> <a href=\"https://social.yesterweb.org/tags/memoir\">#<span>memoir</span></a> <a href=\"https://social.yesterweb.org/tags/artbook\">#<span>artbook</span></a> <br /><a href=\"https://social.yesterweb.org/tags/podcasts\">#<span>podcasts</span></a><br /><a href=\"https://social.yesterweb.org/tags/shortfilm\">#<span>shortfilm</span></a><br /><a href=\"https://social.yesterweb.org/tags/secularwitchcraft\">#<span>secularwitchcraft</span></a> <br /><a href=\"https://social.yesterweb.org/tags/indieweb\">#<span>indieweb</span></a><br /><a href=\"https://social.yesterweb.org/tags/caturday\">#<span>caturday</span></a></p><p>I try to be nice and post/boost nice things. Nice to meet you.</p>",
"text": "#introduction\ud83d\udc4bI am JR. I am #Latine and #asian #heritage / #diaspora. #chronicallyill and #nonbinary. I like and post about:\n#audiobooks\n#books\n#nonfiction #sff #graphicnovel #memoir #artbook \n#podcasts\n#shortfilm\n#secularwitchcraft \n#indieweb\n#caturdayI try to be nice and post/boost nice things. Nice to meet you."
},
"published": "2022-12-23T04:41:43+00:00",
"post-type": "note",
"_id": "33922185",
"_source": "7235",
"_is_read": true
}
#indieweb anyone know a micropub client that can EDIT existing posts, available on Linux or Android?
{
"type": "entry",
"author": {
"name": "@rossk",
"url": "https://hachyderm.io/@rossk",
"photo": null
},
"url": "https://hachyderm.io/@rossk/109560599245542131",
"content": {
"html": "<p><a href=\"https://hachyderm.io/tags/indieweb\">#<span>indieweb</span></a> anyone know a micropub client that can EDIT existing posts, available on Linux or Android?</p>",
"text": "#indieweb anyone know a micropub client that can EDIT existing posts, available on Linux or Android?"
},
"published": "2022-12-23T02:21:13+00:00",
"post-type": "note",
"_id": "33919201",
"_source": "7235",
"_is_read": true
}
Anybody have advice on good bookkeeping software for a small #indieweb business? Is QuickBooks really the best game in town?
{
"type": "entry",
"author": {
"name": "@trey",
"url": "https://indieweb.social/@trey",
"photo": null
},
"url": "https://indieweb.social/@trey/109560094462065174",
"content": {
"html": "<p>Anybody have advice on good bookkeeping software for a small <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a> business? Is QuickBooks really the best game in town?</p>",
"text": "Anybody have advice on good bookkeeping software for a small #indieweb business? Is QuickBooks really the best game in town?"
},
"published": "2022-12-23T00:12:51+00:00",
"post-type": "note",
"_id": "33917266",
"_source": "7235",
"_is_read": true
}
This PWA is getting better! #indieweb
{
"type": "entry",
"author": {
"name": "@mehulkar",
"url": "https://indieweb.social/@mehulkar",
"photo": null
},
"url": "https://indieweb.social/@mehulkar/109559776064680994",
"content": {
"html": "<p>This PWA is getting better! <a href=\"https://indieweb.social/tags/indieweb\">#<span>indieweb</span></a></p>",
"text": "This PWA is getting better! #indieweb"
},
"published": "2022-12-22T22:51:52+00:00",
"post-type": "note",
"_id": "33916158",
"_source": "7235",
"_is_read": true
}
In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don’t want a monoculture. A key IndieWeb principle is plurality: multiple apps with different codebases that can interoperate.
{
"type": "entry",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"photo": "https://avatars.micro.blog/avatars/2022/3.jpg"
},
"url": "https://www.manton.org/2022/12/22/in-i-plan.html",
"content": {
"html": "<p>In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don\u2019t want a monoculture. A key IndieWeb principle is <a href=\"https://indieweb.org/plurality\">plurality</a>: multiple apps with different codebases that can interoperate.</p>",
"text": "In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don\u2019t want a monoculture. A key IndieWeb principle is plurality: multiple apps with different codebases that can interoperate."
},
"published": "2022-12-22T15:34:30+00:00",
"post-type": "note",
"_id": "33915185",
"_source": "7224",
"_is_read": true
}
Go figure in the course of fixing Pixelfed yesterday, I made a cowboy-headed decision to "just quickly" update BookWyrm as well.
Of course that means that while Pixelfed is working, BookWyrm is slightly borked
So I guess that's tonight's project! #BookWyrm #Pixelfed #IndieWeb #SelfHosting
{
"type": "entry",
"author": {
"name": "@josh",
"url": "https://josh.tel/@josh",
"photo": null
},
"url": "https://josh.tel/@josh/109559625414006463",
"content": {
"html": "<p>Go figure in the course of fixing Pixelfed yesterday, I made a cowboy-headed decision to \"just quickly\" update BookWyrm as well.</p><p>Of course that means that while Pixelfed is working, BookWyrm is slightly borked <img alt=\":blobcat_thisisfine:\" height=\"16\" src=\"https://files.mastodon.social/cache/custom_emojis/images/000/446/987/original/380fe8d5d7a580bd.png\" title=\":blobcat_thisisfine:\" width=\"16\" /></p><p>So I guess that's tonight's project! <a href=\"https://josh.tel/tags/BookWyrm\">#<span>BookWyrm</span></a> <a href=\"https://josh.tel/tags/Pixelfed\">#<span>Pixelfed</span></a> <a href=\"https://josh.tel/tags/IndieWeb\">#<span>IndieWeb</span></a> <a href=\"https://josh.tel/tags/SelfHosting\">#<span>SelfHosting</span></a></p>",
"text": "Go figure in the course of fixing Pixelfed yesterday, I made a cowboy-headed decision to \"just quickly\" update BookWyrm as well.Of course that means that while Pixelfed is working, BookWyrm is slightly borked So I guess that's tonight's project! #BookWyrm #Pixelfed #IndieWeb #SelfHosting"
},
"published": "2022-12-22T22:13:33+00:00",
"post-type": "note",
"_id": "33914983",
"_source": "7235",
"_is_read": true
}
Just felt like saying this.
I love my instance and its people 🫶.
#IndieWeb
{
"type": "entry",
"author": {
"name": "@Suzie97",
"url": "https://indieweb.social/@Suzie97",
"photo": null
},
"url": "https://indieweb.social/@Suzie97/109559612454546881",
"content": {
"html": "<p>Just felt like saying this.</p><p>I love my instance and its people \ud83e\udef6.</p><p><a href=\"https://indieweb.social/tags/IndieWeb\">#<span>IndieWeb</span></a></p>",
"text": "Just felt like saying this.I love my instance and its people \ud83e\udef6.#IndieWeb"
},
"published": "2022-12-22T22:10:16+00:00",
"post-type": "note",
"_id": "33914984",
"_source": "7235",
"_is_read": true
}
A meme
- Ok ima fight webmentions
- [resting] damn webmentions got hands
{
"type": "entry",
"author": {
"name": "@spacebuffer",
"url": "https://fosstodon.org/@spacebuffer",
"photo": null
},
"url": "https://fosstodon.org/@spacebuffer/109559562478881642",
"content": {
"html": "A meme<br /><br />\n- Ok ima fight webmentions<br />\n- [resting] damn webmentions got hands",
"text": "A meme\n\n\n- Ok ima fight webmentions\n\n- [resting] damn webmentions got hands"
},
"published": "2022-12-22T21:57:33+00:00",
"post-type": "note",
"_id": "33914985",
"_source": "7235",
"_is_read": true
}
In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don’t want a monoculture. A key IndieWeb principle is plurality: multiple apps with different codebases that can interoperate.
{
"type": "entry",
"author": {
"name": "Manton Reece",
"url": "https://www.manton.org/",
"photo": "https://micro.blog/manton/avatar.jpg"
},
"url": "https://www.manton.org/2022/12/22/in-i-plan.html",
"content": {
"html": "<p>In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don\u2019t want a monoculture. A key IndieWeb principle is <a href=\"https://indieweb.org/plurality\">plurality</a>: multiple apps with different codebases that can interoperate.</p>",
"text": "In 2023, I plan to advocate more for client apps to embrace the larger IndieWeb and fediverse. Mastodon going mainstream is a great step forward, but we don\u2019t want a monoculture. A key IndieWeb principle is plurality: multiple apps with different codebases that can interoperate."
},
"published": "2022-12-22T09:34:30-06:00",
"post-type": "note",
"_id": "33906531",
"_source": "12",
"_is_read": true
}