{"generator":"GNU social 2.0.2-dev","title":"Conversation","totalItems":10,"items":[{"actor":{"id":"https:\/\/23.social\/users\/grindhold","displayName":"grindhold","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/255113-original-tmp20240412083751.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-48-20240412083751.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-24-20240412083751.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"255113"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR","url":"https:\/\/23.social\/@grindhold","portablecontacts_net":{"preferredUsername":"grindhold","displayName":"grindhold","note":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR"}},"content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <\/p><p>i think vendor prefixes is a fad too specific. how about type-specific prefixes like e.g. \"proposal:foobar\". if you give single vendors the possibility to mess with the standard it'll end with everybody cooking up their own soup. and maaaybe if you're lucky, one of them becoming the de-facto standard, totally bypassing what AP wants to achieve: a common protocol for all to agree on.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753065692098065","object":{"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753065692098065","objectType":"note","content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <\/p><p>i think vendor prefixes is a fad too specific. how about type-specific prefixes like e.g. \"proposal:foobar\". if you give single vendors the possibility to mess with the standard it'll end with everybody cooking up their own soup. and maaaybe if you're lucky, one of them becoming the de-facto standard, totally bypassing what AP wants to achieve: a common protocol for all to agree on.<\/p>","url":"https:\/\/23.social\/@grindhold\/116753065692098065","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mitra.social\/objects\/019ec680-a13c-7d21-95b2-c1afee28daab","url":"https:\/\/gnusocial.jp\/notice\/12751673"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12757235","source":"ActivityPub"}},"published":"2026-06-15T17:17:12+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/23.social\/@grindhold\/116753065692098065"},{"actor":{"id":"https:\/\/23.social\/users\/grindhold","displayName":"grindhold","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/255113-original-tmp20240412083751.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-48-20240412083751.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-24-20240412083751.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"255113"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR","url":"https:\/\/23.social\/@grindhold","portablecontacts_net":{"preferredUsername":"grindhold","displayName":"grindhold","note":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR"}},"content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <br \/>so people, if they develop extensions to AP would at least be forced to think about how to integrate their stuff into the existing AP-ontology. at least thinking about where they need a new type, what fields it needs .e.t.c.<\/p><p>i mean, we did the vendor-prefix thing with flohmarkt. because i saw no other way and i found it ugly from the start :D  (and i hadn't had the idea to pack a non-Note-object into an attachment yet)<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753073168207894","object":{"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753073168207894","objectType":"note","content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <br \/>so people, if they develop extensions to AP would at least be forced to think about how to integrate their stuff into the existing AP-ontology. at least thinking about where they need a new type, what fields it needs .e.t.c.<\/p><p>i mean, we did the vendor-prefix thing with flohmarkt. because i saw no other way and i found it ugly from the start :D  (and i hadn't had the idea to pack a non-Note-object into an attachment yet)<\/p>","url":"https:\/\/23.social\/@grindhold\/116753073168207894","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753065692098065","url":"https:\/\/23.social\/@grindhold\/116753065692098065"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12757236","source":"ActivityPub"}},"published":"2026-06-15T17:17:11+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/23.social\/@grindhold\/116753073168207894"},{"actor":{"id":"https:\/\/mitra.social\/users\/silverpill","displayName":"silverpill","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/85321-original-tmp20230105183734.webp","rel":"avatar","type":"image\/webp","width":800,"height":800},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-48-20230105202807.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-24-20230105202807.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"85321"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance.","url":"https:\/\/mitra.social\/users\/silverpill","portablecontacts_net":{"preferredUsername":"silverpill","displayName":"silverpill","note":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance."}},"content":"<p><a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p><p>&gt;how about type-specific prefixes like e.g. \"proposal:foobar\".<\/p><p>That's fine too IMO. The probability of collision is higher compared to vendor prefixes but not much.<\/p><p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a><\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mitra.social\/objects\/019ecc08-0a45-73f0-8ca8-686a17dd0bda","object":{"id":"https:\/\/mitra.social\/objects\/019ecc08-0a45-73f0-8ca8-686a17dd0bda","objectType":"note","content":"<p><a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p><p>&gt;how about type-specific prefixes like e.g. \"proposal:foobar\".<\/p><p>That's fine too IMO. The probability of collision is higher compared to vendor prefixes but not much.<\/p><p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a><\/p>","url":"https:\/\/mitra.social\/objects\/019ecc08-0a45-73f0-8ca8-686a17dd0bda","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/23.social\/users\/grindhold\/statuses\/116753073168207894","url":"https:\/\/23.social\/@grindhold\/116753073168207894"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/23.social\/users\/grindhold"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12757238","source":"ActivityPub"}},"published":"2026-06-15T17:17:10+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mitra.social\/objects\/019ecc08-0a45-73f0-8ca8-686a17dd0bda"},{"actor":{"id":"https:\/\/23.social\/users\/grindhold","displayName":"grindhold","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/255113-original-tmp20240412083751.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-48-20240412083751.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-24-20240412083751.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"255113"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR","url":"https:\/\/23.social\/@grindhold","portablecontacts_net":{"preferredUsername":"grindhold","displayName":"grindhold","note":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR"}},"content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> in this particular case you are right. in the general case, as the fediverse is a decentral system, it might occur, that developer group A creates APObjectTypeA with a field named \"foo\" that does a specific thing. developer group B will create APObjectTypeB with a field named \"foo\" that does another thing. these object types will not be composable. as only one meaning of \"foo\" can exist simultaneously in a specific object.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116748066918317872","object":{"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116748066918317872","objectType":"note","content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> in this particular case you are right. in the general case, as the fediverse is a decentral system, it might occur, that developer group A creates APObjectTypeA with a field named \"foo\" that does a specific thing. developer group B will create APObjectTypeB with a field named \"foo\" that does another thing. these object types will not be composable. as only one meaning of \"foo\" can exist simultaneously in a specific object.<\/p>","url":"https:\/\/23.social\/@grindhold\/116748066918317872","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd","url":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12751671","source":"ActivityPub"}},"published":"2026-06-14T14:25:40+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/23.social\/@grindhold\/116748066918317872"},{"actor":{"id":"https:\/\/mastodon.xyz\/users\/Profpatsch","displayName":"Beady Belle Fanchannel","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/206555-original-tmp20231101012537.webp","rel":"avatar","type":"image\/webp","width":352,"height":352},{"url":"https:\/\/gnusocial.jp\/avatar\/206555-96-20231101012537.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/206555-48-20231101012538.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/206555-24-20231101012538.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"206555"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/206555-96-20231101012537.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"~ Kissed by a rose on the grey ~Warrior \/ struggling \/ to remain \/ consequential (In my Raspberry Heaven\u301c)","url":"https:\/\/mastodon.xyz\/@Profpatsch","portablecontacts_net":{"preferredUsername":"Profpatsch","displayName":"Beady Belle Fanchannel","note":"~ Kissed by a rose on the grey ~Warrior \/ struggling \/ to remain \/ consequential (In my Raspberry Heaven\u301c)"}},"content":"<p><a href=\"https:\/\/23.social\/@grindhold\" class=\"u-url mention\">@grindhold<\/a> <a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> I think we should at least use a system that\u2019s somewhat resistant to semantic overload, like CSS vendor prefixes.<\/p><p>e.g. add \"flohmarkt:foobar\" as a new field, and when it receives an FEP you can drop the prefix. So \u201con the edge\u201d software can start by using the prefixed field, and then slowly migrate to unprefixed FEP once that\u2019s there.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mastodon.xyz\/users\/Profpatsch\/statuses\/116748876489771179","object":{"id":"https:\/\/mastodon.xyz\/users\/Profpatsch\/statuses\/116748876489771179","objectType":"note","content":"<p><a href=\"https:\/\/23.social\/@grindhold\" class=\"u-url mention\">@grindhold<\/a> <a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> I think we should at least use a system that\u2019s somewhat resistant to semantic overload, like CSS vendor prefixes.<\/p><p>e.g. add \"flohmarkt:foobar\" as a new field, and when it receives an FEP you can drop the prefix. So \u201con the edge\u201d software can start by using the prefixed field, and then slowly migrate to unprefixed FEP once that\u2019s there.<\/p>","url":"https:\/\/mastodon.xyz\/@Profpatsch\/116748876489771179","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/23.social\/users\/grindhold\/statuses\/116748066918317872","url":"https:\/\/23.social\/@grindhold\/116748066918317872"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/23.social\/users\/grindhold"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12751672","source":"ActivityPub"}},"published":"2026-06-14T14:25:39+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mastodon.xyz\/@Profpatsch\/116748876489771179"},{"actor":{"id":"https:\/\/mitra.social\/users\/silverpill","displayName":"silverpill","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/85321-original-tmp20230105183734.webp","rel":"avatar","type":"image\/webp","width":800,"height":800},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-48-20230105202807.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-24-20230105202807.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"85321"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance.","url":"https:\/\/mitra.social\/users\/silverpill","portablecontacts_net":{"preferredUsername":"silverpill","displayName":"silverpill","note":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance."}},"content":"<p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a> <a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> I support vendor prefixes.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mitra.social\/objects\/019ec680-a13c-7d21-95b2-c1afee28daab","object":{"id":"https:\/\/mitra.social\/objects\/019ec680-a13c-7d21-95b2-c1afee28daab","objectType":"note","content":"<p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a> <a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> I support vendor prefixes.<\/p>","url":"https:\/\/gnusocial.jp\/notice\/12751673","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mastodon.xyz\/users\/Profpatsch\/statuses\/116748876489771179","url":"https:\/\/mastodon.xyz\/@Profpatsch\/116748876489771179"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/23.social\/users\/grindhold"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12751673","source":"ActivityPub"}},"published":"2026-06-14T14:25:37+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/gnusocial.jp\/notice\/12751673"},{"actor":{"id":"https:\/\/23.social\/users\/grindhold","displayName":"grindhold","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/255113-original-tmp20240412083751.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-48-20240412083751.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-24-20240412083751.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"255113"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR","url":"https:\/\/23.social\/@grindhold","portablecontacts_net":{"preferredUsername":"grindhold","displayName":"grindhold","note":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR"}},"content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <\/p><p>the biggest problem with the duck typing approach imo is, that there might occur situations in which different definitions exist for the same field. <\/p><p>e.g. we had this situation  where content was defined as a Proposal as string, whereas in Note it was common to have a mapping from lang-code to a string in the according language as content.<\/p><p>In this case we could figure it out but there might be more complicated cases and not every type might end up mixable<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742529361085476","object":{"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742529361085476","objectType":"note","content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> <\/p><p>the biggest problem with the duck typing approach imo is, that there might occur situations in which different definitions exist for the same field. <\/p><p>e.g. we had this situation  where content was defined as a Proposal as string, whereas in Note it was common to have a mapping from lang-code to a string in the according language as content.<\/p><p>In this case we could figure it out but there might be more complicated cases and not every type might end up mixable<\/p>","url":"https:\/\/23.social\/@grindhold\/116742529361085476","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1","url":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12747808","source":"ActivityPub"}},"published":"2026-06-13T19:00:54+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/23.social\/@grindhold\/116742529361085476"},{"actor":{"id":"https:\/\/23.social\/users\/grindhold","displayName":"grindhold","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/255113-original-tmp20240412083751.webp","rel":"avatar","type":"image\/webp","width":400,"height":400},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-48-20240412083751.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/255113-24-20240412083751.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"255113"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/255113-96-20240412083751.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR","url":"https:\/\/23.social\/@grindhold","portablecontacts_net":{"preferredUsername":"grindhold","displayName":"grindhold","note":"Imagin\u00e4res Institut f\u00fcr GeneraltechnologieKRWBBR"}},"content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> when the fediverse and the FEP-database gets bigger the need to check for these conflicts will rise quadratically. So you either:<br \/> - need to include type-definitions for fields with specific names<br \/>- use ap-object-types<br \/>or<br \/>- end up with incompatibilities and accept that as a fact which leads to bloaty (and potentially slow) unmarshalling logic on the implementation side.<\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742540002796796","object":{"id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742540002796796","objectType":"note","content":"<p><a href=\"https:\/\/mitra.social\/users\/silverpill\" class=\"u-url mention\">@silverpill<\/a> <a href=\"https:\/\/hachyderm.io\/@sabrinkmann\" class=\"u-url mention\">@sabrinkmann<\/a> <a href=\"https:\/\/mastodon.xyz\/@Profpatsch\" class=\"u-url mention\">@Profpatsch<\/a> when the fediverse and the FEP-database gets bigger the need to check for these conflicts will rise quadratically. So you either:<br \/> - need to include type-definitions for fields with specific names<br \/>- use ap-object-types<br \/>or<br \/>- end up with incompatibilities and accept that as a fact which leads to bloaty (and potentially slow) unmarshalling logic on the implementation side.<\/p>","url":"https:\/\/23.social\/@grindhold\/116742540002796796","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742529361085476","url":"https:\/\/23.social\/@grindhold\/116742529361085476"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mitra.social\/users\/silverpill"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12747809","source":"ActivityPub"}},"published":"2026-06-13T19:00:53+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/23.social\/@grindhold\/116742540002796796"},{"actor":{"id":"https:\/\/mitra.social\/users\/silverpill","displayName":"silverpill","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/85321-original-tmp20230105183734.webp","rel":"avatar","type":"image\/webp","width":800,"height":800},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-48-20230105202807.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-24-20230105202807.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"85321"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance.","url":"https:\/\/mitra.social\/users\/silverpill","portablecontacts_net":{"preferredUsername":"silverpill","displayName":"silverpill","note":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance."}},"content":"<p><a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p><p>e.g. we had this situation  where content was defined as a Proposal as string, whereas in Note it was common to have a mapping from lang-code to a string in the according language as content.<\/p><p>I'm not sure if I understand. Mapping from lang-code to string it not content, it's contentMap: <a href=\"https:\/\/www.w3.org\/TR\/activitystreams-core\/#naturalLanguageValues\">https:\/\/www.w3.org\/TR\/activitystreams-core\/#naturalLanguageValues<\/a>.<\/p><p>Proposal was designed with duck typing in mind. Proposal.content is same as Note.content, Proposal.attributedTo is same as Note.attributedTo. If everyone designs their extensions this way, duck typing works great.<\/p><p>The conflicts might occur but the solution to this is to use better names. So far I seen only one conflict: between Bookwyrm's quote and Mastodon's quote. In such cases you can use type for disambiguation - I am not saying that we should drop type completely. Ironically, though, Bookwyrm does use content negotiation. When it thinks that remote server is not Bookwyrm, it sends a Note instead of the original type, Quotation, thus making disambiguation impossible.<\/p><p>That's exactly how content negotiation will work in practice.<\/p><p><a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> <a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a><\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd","object":{"id":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd","objectType":"note","content":"<p><a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p><p>e.g. we had this situation  where content was defined as a Proposal as string, whereas in Note it was common to have a mapping from lang-code to a string in the according language as content.<\/p><p>I'm not sure if I understand. Mapping from lang-code to string it not content, it's contentMap: <a href=\"https:\/\/www.w3.org\/TR\/activitystreams-core\/#naturalLanguageValues\">https:\/\/www.w3.org\/TR\/activitystreams-core\/#naturalLanguageValues<\/a>.<\/p><p>Proposal was designed with duck typing in mind. Proposal.content is same as Note.content, Proposal.attributedTo is same as Note.attributedTo. If everyone designs their extensions this way, duck typing works great.<\/p><p>The conflicts might occur but the solution to this is to use better names. So far I seen only one conflict: between Bookwyrm's quote and Mastodon's quote. In such cases you can use type for disambiguation - I am not saying that we should drop type completely. Ironically, though, Bookwyrm does use content negotiation. When it thinks that remote server is not Bookwyrm, it sends a Note instead of the original type, Quotation, thus making disambiguation impossible.<\/p><p>That's exactly how content negotiation will work in practice.<\/p><p><a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> <a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a><\/p>","url":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd","status_net":{"notice_id":null},"inReplyTo":{"objectType":"note","id":"https:\/\/23.social\/users\/grindhold\/statuses\/116742540002796796","url":"https:\/\/23.social\/@grindhold\/116742540002796796"}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/23.social\/users\/grindhold"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12747810","source":"ActivityPub"}},"published":"2026-06-13T19:00:52+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mitra.social\/objects\/019ec25b-09ec-7fa0-93b0-6cb0c1beacbd"},{"actor":{"id":"https:\/\/mitra.social\/users\/silverpill","displayName":"silverpill","status_net":{"avatarLinks":[{"url":"https:\/\/gnusocial.jp\/avatar\/85321-original-tmp20230105183734.webp","rel":"avatar","type":"image\/webp","width":800,"height":800},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-48-20230105202807.webp","rel":"avatar","type":"image\/webp","width":48,"height":48},{"url":"https:\/\/gnusocial.jp\/avatar\/85321-24-20230105202807.webp","rel":"avatar","type":"image\/webp","width":24,"height":24}],"profile_info":{"local_id":"85321"}},"image":{"url":"https:\/\/gnusocial.jp\/avatar\/85321-96-20230105202806.webp","rel":"avatar","type":"image\/webp","width":96,"height":96},"objectType":"person","summary":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance.","url":"https:\/\/mitra.social\/users\/silverpill","portablecontacts_net":{"preferredUsername":"silverpill","displayName":"silverpill","note":"Developer of ActivityPub-based micro-blogging and content subscription platform Mitra. Admin of mitra.social instance."}},"content":"<p><a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> Why create different versions when you can use one?<\/p><p>There are ways in which the Fediverse can accomodate the greater number of different services:<\/p><p>- Content negotiation: every server advertises supported types, and the sender needs to adjust activities depending on what the recipient understands.<br \/>- Duck typing: recipients don't filter received objects by type, and instead look at their properties.<\/p><p>I don't think the first approach can work at scale. It's like serving different websites to different web browsers.<\/p><p>(Negotiation can be useful in some cases, though - I even wrote a FEP about this: <a href=\"https:\/\/codeberg.org\/fediverse\/fep\/src\/branch\/main\/fep\/844e\/fep-844e.md\">https:\/\/codeberg.org\/fediverse\/fep\/src\/branch\/main\/fep\/844e\/fep-844e.md<\/a>)<\/p><p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p>","generator":{"id":"tag:gnusocial.jp,2026-08-16:notice-source:ActivityPub","objectType":"application","status_net":{"source_code":"ActivityPub"}},"id":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1","object":{"id":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1","objectType":"note","content":"<p><a class=\"u-url mention\" href=\"https:\/\/hachyderm.io\/@sabrinkmann\">@sabrinkmann<\/a> Why create different versions when you can use one?<\/p><p>There are ways in which the Fediverse can accomodate the greater number of different services:<\/p><p>- Content negotiation: every server advertises supported types, and the sender needs to adjust activities depending on what the recipient understands.<br \/>- Duck typing: recipients don't filter received objects by type, and instead look at their properties.<\/p><p>I don't think the first approach can work at scale. It's like serving different websites to different web browsers.<\/p><p>(Negotiation can be useful in some cases, though - I even wrote a FEP about this: <a href=\"https:\/\/codeberg.org\/fediverse\/fep\/src\/branch\/main\/fep\/844e\/fep-844e.md\">https:\/\/codeberg.org\/fediverse\/fep\/src\/branch\/main\/fep\/844e\/fep-844e.md<\/a>)<\/p><p><a class=\"u-url mention\" href=\"https:\/\/mastodon.xyz\/@Profpatsch\">@Profpatsch<\/a> <a class=\"u-url mention\" href=\"https:\/\/23.social\/@grindhold\">@grindhold<\/a><\/p>","url":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1","status_net":{"notice_id":null}},"to":[{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/mastodon.xyz\/users\/Profpatsch"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/person","id":"https:\/\/23.social\/users\/grindhold"},{"objectType":"http:\/\/activitystrea.ms\/schema\/1.0\/collection","id":"http:\/\/activityschema.org\/collection\/public"}],"status_net":{"conversation":"tag:gnusocial.jp,2026-06-12:objectType=thread:nonce=dc6f9e4fba5ecfb8","notice_info":{"local_id":"12743092","source":"ActivityPub"}},"published":"2026-06-12T19:44:30+00:00","provider":{"objectType":"service","displayName":"GNU social JP","url":"https:\/\/gnusocial.jp\/"},"verb":"post","url":"https:\/\/mitra.social\/objects\/019ebd50-41c3-7b51-b4e2-ab7f4817cca1"}],"links":[{"url":"https:\/\/gnusocial.jp\/conversation\/6473113","rel":"alternate","type":"text\/html"}]}