Interested in discussing this further? Get in touch!

White paper: Impact of the Digital Choice Act on Social Media Services

Implementing support for the law in a social media service

/whitepapers/impact-digital-choice-act-on-social-media-services/implementing-support-for-the-law/

This law is new, nobody has any experience with it yet, and there is much room for interpretation in the text. This is our take at this time for best practices in implementing support for it.

We distinguish between two levels of implementation SMSs can choose from:

Note that when choosing the “leading lean-in implementation” strategy, we do not consider it very important what exactly a law in its current version in a particular jurisdiction may require. Instead, the focus should be on what the market will look like when the current law in Utah, similar laws being contemplated in other jurisdictions (and future updates) are fully implemented, and how to take advantage of the opportunities that will have emerged.

Being where the puck is going to be before others is likely going to be of significant competitive advantage.

Data export features: implementation recommendations

Sufficient base-level implementation: data export

Leading “lean-in” implementation: data portability

We suggest starting by implementing what could be called “optimal self-round-trip data portability”. By doing so, SMSs have an easy-to-understand, easily QA’able foundation to optimize for a range of high-value data portability scenarios with other SMSs.

The self-round-trip data portability core use case is as follows:

The following qualities should be optimized:

Once this “optimal self-round-trip data portability” scenario works well, the SMS should focus on making it work in a similar fashion with other SMSs, preferably while their own implementations for meeting these requirements are still in development; this is likely going to be a cheaper and less frustrating process than going to GA unilaterally, and then having to make things work together with other SMSs after the release. The existing round trip functionality is a great starting point that proves it can be made to work, at least if the data models (“schemas”) of the SMSs are the same.

As, however, the data models of no two SMSs are ever exactly the same, the SMS should implement graceful fallbacks for those data elements it receives from other SMSs that it does not understand directly. Good fallbacks are likely going to be a key criterion for users investigating whether they should leave another SMS and join yours. They may not if they feel their data has substantially degraded in your SMS.

As an example: if an SMSA supports one type of “Like” only, while another SMSB supports several types of reactions (e.g. “Heart”, “Fire”, “Sadness”, ..), when attempting to import data from SMSB, SMSA is faced with the question of what to do with those types of “Likes” it does not directly understand. Other than extending SMSA itself to cover them natively (which may not be viable or desired), the best approach is to gracefully degrade by mapping the several types of “Likes” into the same in SMSA. It would likely not be acceptable to the user if SMSA simply dropped all kinds of “Likes” it does not understand.

As a corollary, when exporting data, an SMSB should do so in a way that another SMSA attempting to import the data set can easily implement graceful degradation on their end. In case of the “Likes”, for example, if the export contained a data element that represents “Like” with an enumerated-value property that indicates the type of “Like”", the importing SMS can simply ignore that attribute.

Social media interoperability and data synchronization features

We will consider them together in this section, as the boundaries between them blur in implementations.

Sufficient base-level implementation: interoperability and synchronization

Consistent with the definition of “sufficient base-level implementation”, we will only consider the requirements of the law that requires an SMSA to allow SMSB to implement certain features (like that its users on SMSB can follow users on SMSA) but not attempt to implement interoperability symmetrically (so that users on SMSA also can follow users on SMSB and interact with them.)

Note: such an asymmetric implementation would make for a very odd product in most cases, so this implementation may not be advisable.

To do so, SMSA must implement the following:

While not explicitly required in the law, SMSA should also implement functionality that:

For data synchronization, it may be sufficient to implement a mechanism by which a 3rd party can query the user’s profile, and subscribe to an event stream by which they can be notified that a data element of the profile has changed.

For a “sufficient base-level implementation” it would be sufficient to make up a home-grown set of protocols that provide the above features. However, as discussed in the strategy section above, this would severely restrict interop in the real world and should better be considered part of the “fight the law” strategy. The use of a standard protocol is thus strongly recommended.

Leading “lean-in” implementation: interoperability and synchronization

For a “lean-in” implementation, an SMS should first implement all items listed in the “sufficient base-level implementation”, and next implement the scenarios called “optimal self-federation” described next.

In the “optimal self-federation scenario”, conceptually, there are two instances of the same SMSA It may be difficult to imagine two instances of Facebook, for example, at facebook.com and anotherfacebook.com. However, we can be quite certain that Meta internally already runs several instances of Facebook: not just the production version that their users use, but internally staged versions for quality assurance and other kinds of development purposes. The assignment for the engineers implementing the “optimal self-federation” scenario would be to make two of these separate instances interoperate so well with each other, that users would forget whether they interact with other users on the same or a different instance. . The scenario is successfully implemented if there is no difference in the features and user experience when two users A1 and A2 are interacting:

Without prejudicing format and protocol recommendations (discussed in a section below), it is useful to consider the ActivityPub-based Fediverse as it exists today as an example. For example, two instances of Mastodon (e.g. mastodon.social and hachyderm.io), interoperating with each other, come pretty close to this “optimal self-federation” scenario for users that follow each other from different SMSs.

But there are challenges as well. For example, the user experience between following a user in the same SMS and a different instance is different, and backfill across instances is not consistently handled, leading to messages such as “more content may be available on the original profile”. These need to be resolved.

Once the self-federation works well, it would be advantageous for the SMS “leaning in” to work with other SMSs to make the experience as seamless with their SMS as well. The experience with the ActivityPub-based Fediverse makes it clear that merely implementing the standard protocols is insufficient to provide good experiences for users, which are table stakes for an SMS “leaning in”.

All the comments about selecting standard formats, how to handle differences in the data model and graceful degradation made above for the “lean-in” scenario for “data portability” apply here as well, and more so: