Archive for July 14, 2023

Friday, July 14, 2023

Threads and ActivityPub

Richard MacManus:

The fediverse is a collection of decentralized social media services that interconnect via ActivityPub. The most prominent member of the fediverse is Mastodon, a microblogging network that launched in 2017. But many other Web 2.0-style apps have been built on ActivityPub — including Bookwyrm (Goodreads), Lemmy (Reddit), PeerTube (YouTube), and PixelFed (Flickr).


With ActivityPub, the server manages your identity and data. So when you join Mastodon, for example, you are essentially entrusting management of your data to the server (“instance”) you join. As fediverse developer Ryan Barrett put it in a post this week, your ActivityPub “identity, data, and administration are all tied to your instance, for both technical and cultural reasons.” Among other things, this architecture enables your instance to make moderation decisions on your behalf. You’re still free to move to another instance, at any time and for whatever reason, but you can’t port your data (your posts and media) from one instance to another.

I mention all this because it plays right into Meta’s strengths. Meta will still control the identity layer even when it integrates with ActivityPub — and that’s immensely valuable when you’re the owner of Instagram’s social graph. Since Threads is also hosted on Meta’s servers, all your data is managed by Meta too.


There are, of course, also technical challenges that will need to be overcome. As another W3C working group member, Johannes Ernst, put it, “I think one of the things we are all very interested in learning is just what exact stack of protocols Meta is implementing, and then the higher-level policies not prescribed in the standard.” Ernst pointed out that “merely implementing ActivityPub in itself is not sufficient to produce interoperable software nor make what’s happening comprehensible to users.” For example, which of the activity types will Threads implement? Will it allow hyperlinks and HTML markup?


Update (2023-09-11): Jesse Chen (via Chris Adamson):

Our goal with Threads is to make social content as interoperable as email. We are working on the ability for Threads to integrate with ActivityPub, the open, decentralized social networking protocol. Once that happens people will be able to enjoy the best features of Threads across platforms. More importantly, they’ll be able to have more control over their online social presence, regardless of any app or platform. They’ll have the ability to distribute their posts to other social media apps, and consume content from creators on other apps on Threads.

Fedora Telemetry Proposal

corbet (via Hacker News):

The Fedora project is considering a Fedora 40 change proposal to add limited, opt-out telemetry to the workstation edition. The proposal is detailed; it is clear that the developers involved understand that this will be a hard sell in that community.

We believe an open source community can ethically collect limited aggregate data on how its software is used without involving big data companies or building creepy tracking profiles that are not in the best interests of users. Users will have the option to disable data upload before any data is sent for the first time. Our service will be operated by Fedora on Fedora infrastructure, and will not depend on Google Analytics or any other controversial third-party services. And in contrast to proprietary software operating systems, you can redirect the data collection to your own private metrics server instead of Fedora’s to see precisely what data is being collected from you, because the server components are open source too.


OneDrive Leaks Photos via E-mail

loyall (2021, via Hacker News):

Today I received an email from OneDrive. The message said, “Look back on your memories from this day.” This email contained images of photos from my One Drive Backup. […] My question is how did someone gain access to my cloud documents and publish on the internet? What and how much do I need to be afraid of? What can I do to protect myself.😟

Apparently, OneDrive really does send these e-mails, exposing public links to thumbnails of private photos.

Xcode String Catalogs

Discover String Catalogs:

Discover how Xcode 15 makes it easy to localize your app by managing all of your strings in one place. We’ll show you how to extract, edit, export, and build strings in your project using String Catalogs. We’ll also share how you can adopt String Catalogs in existing projects at your own pace by choosing which files to migrate.

Cihat Gündüz:

But most people I talked to since Dub Dub are still unaware of the implications String Catalogs have on their projects. So I figured I should answer the most frequent questions to make it more clear how amazing String Catalogs really are.


String Catalogs replace both .strings and .stringsdict files and therefore support pluralization out-of-the-box. Unlike .strings(dict) files that are placed under locale-specific folders like en.lproj, String Catalogs encapsulate the translations of all supported languages in one file.


Currently, there seems to be no way to control the extraction from the source of truth. […] I also couldn’t find a way to mark a String in a SwiftUI view for example that needs no translation to mark as “non-translatable”.

String Catalogs look pretty neat, but I’ve been burned so many times by bugs and limitations in Xcode’s localization tools that I doubt I will use this. Also, I think the approach of having the tool extract strings from source code is fundamentally wrong. Any keys that are constructed at runtime will be invisible to the extractor. So it forces you to either put short and non-semantic or long and unwieldy strings into the source. I would rather use short and semantic but context-dependent keys. And it prevents the use of helper functions that operate on multiple related localized strings given a key base.

Rather than more layers of high-level Xcode features, which depend on buying into a whole system/workflow, I would like to see better tools from Apple for auditing the .strings and .stringsdict files directly.