solid / solid-wg-charter

Proposed charter for the W3C Solid Working Group
Other
9 stars 5 forks source link

Does the value come from the protocol or the applications? #71

Closed pchampin closed 2 months ago

pchampin commented 3 months ago

suggested by @jyasskin in https://github.com/solid/solid-wg-charter/pull/69/files#r1529416046

Conversation copied below:

@jyasskin I think "define a web protocol ... allowing users to keep authority over their data, identity, and privacy." skips an important intermediate step. In particular, the protocol itself can't allow users to do anything. Instead, it helps application developers make some choices that are better for users.


@timbl a) It is an internet protocol. (what is a web protocol? an internet protocol based on HTTP? ok) I have always used "internet protocol" defined as the syntax and semantics and sequence of communication between different hosts on the Internet. HTTP, FTP are internet protocols Solid is a more powerful one based on HTTP.

b) The protocol design gives you value. It provides things which are true if you follow it. If you use HTTP, .. eg ..you never don't overwrite other people's changes to a resource, caches work, and so on. If you use Solid correctly you get these properties.

and so on. When we charter the group in a way the most important thing may be that we are chartering it to provide those beneficial properties of the Solid ecosystem built on top of the Solid Protocol as a new platform


@elf-pavlik

Applications that use this protocol can more easily allow their users to keep authority over their data, identity, and privacy

I wouldn't formulate it this way. It is the user who allows and denies applications access to specific data at will. On the one hand, applications are the most crucial part responsible for UX, but on the other hand, they are the least trusted and privileged part of the ecosystem. The original sentence captures it better: The protocol itself allows the user to retain authority over their data.


@melvincarvalho

On the one hand, applications are the most crucial part responsible for UX, but on the other hand, they are the least trusted and privileged part of the ecosystem. The protocol itself allows the user to retain authority over their data.

The architecture of the ecosystem places pod providers at the apex of trust and privilege, following a federated model. This is not theoretical, we have witnessed it over and over in the federated model.

Subsequently, identity providers operate within a trusted third-party framework. Again this has brought centralization power to large centralized players on the web (typically email providers, which is a reason that login with email URIs is pushed so aggressively, often to the exclusion of all else).

It's worth noting that the previous integration of WebID-TLS offered more user agency, allowing sever-side support without compromising functionality. The addition of OIDC, despite initial assurances of coexistence, unfortunately led to the quiet deactivation of WebID-TLS, on the server side, a move that seems to lack a technical rationale. When the OIDC folks removed WebID-TLS from the client side, they quietly removed it from the server side, without any mandate to do so. Turning back on WebID-TLS on the server side, which should never have been removed, would help improve this situation.

This decision underscores the inherent risk of optionality in technology standards, where political dynamics may influence technical decisions, another reason why it's important to have a well defined identity system based on web protocols ie HTTP URIs, at least at this point, and not open the door to optionality in identity, in the WG, which can quickly become political.

In short, despite the wording in the charter, the user is in 3rd place in terms of agency. The pod owner is first, and has complete authority, including to cancel any user. The identity provider then has power over the user, can impersonate the user, can silently track all user activity. After that the user can add permissioned access control. This is very useful and can lead to a web operating system, but that's not quite what's communicated in the charter, at this point.


@TallTed

login with email URIs

Doesn't really exist. It's login with email addresses. Yes, those addresses are trivially converted to URIs (by prepending the mailto: scheme), but without that conversion, they remain addresses. Referring to them as "email URIs" does no-one any favors.


@cwilson

I think my biggest concern here is buried in "if you use Solid correctly". That's not just if the user uses Solid correctly - it's relying on all app developers and other participants in the ecosystem to honor an (implicit?) pattern.


@melvincarvalho

I think my biggest concern here is buried in "if you use Solid correctly". That's not just if the user uses Solid correctly - it's relying on all app developers and other participants in the ecosystem to honor an (implicit?) pattern.

Excellent point. If the original web was "used correctly" many of the pervasive issues we see today would not exist.

Choice of app and choice of pod are independent. So two new markets.

Solid's app model, right now, is not incentivized. Adverts can be blocked. What is the incentive to use solid "correctly" for app makers? The incentives are more aligned to couple apps and server together, and track users. As someone that works with advanced client side apps every day, I can say it's extremely challenging for any apps to get any sustainable revenue. In a competitive app market most of the apps will not cover their costs, leading to some dominant players, if at all. Even more importantly there is the "king maker" effect. In short, there are incentives missing for solid to be "used correctly". As the app ecosystem matures, this will become more apparent. For example how would you do advertising on a solid app, when it's easy to remove?

I think what's missing in the list is not the loose coupling of apps (this exists today elsewhere), but rather the power of apps working together on client and server side. I think the idea of a web operating system could be explained more.

melvincarvalho commented 3 months ago

Unsure if this is a discussion or for comment on the PR text.

The PR text is truly excellent. It reads very well.

Slight nit is that it can be used with server side apps too. In fact in the end server side may be more than client side. However, I dont see that the text needs changing.

Re: Does the value come from the protocol or the applications?

Both.

  1. In the short term people are "running away" from certain parts of the web. From apps, sites, servers and algorithms that control you and invade your privacy. Apps can offer a degree of control more than before, with the federated model. Though federated is still co-owned with your provider, and identity provider. It is an incremental step forward.

  2. In the longer-term people are "running towards" something because it offers new functionalities, new innovations, new ideas not seen before on other parts of the web. The idea of humans and machines working together in a linked space under user control, and importantly, offering censorship-resistance, and other features not offered in the mainstream web. That is where, if done well, the protocol can play a role.

Stage (1) comes first, then stage (2) comes later, if all goes well.

elf-pavlik commented 2 months ago

Can we still clarify what client-side applications means here, and can we say applications instead?

csarven commented 2 months ago

If the following can be acknowledged / agreed upon, then I don't categorically have an objection to removing "client-side":


Can we still clarify what client-side applications means here,

I think it is clear enough in the most common understanding of the term, i.e., an application running on the web browser.

And that's already fairly clear as per Solid Protocol and the Fedora API specifications.

But would replacing "client-side applications" with something along the lines of "applications running on the web browser" clarify?

and can we say applications instead?

Let me quote a wise person:

If we're going to communicate something, I would prefer to do it explicitly rather than implicitly.

So, right ;) "client-side applications" meets that better than just "applications".

But let's back up for a second. Instead of "clarifying" and sacrificing precision by using "client-side," did you intend to avoid limiting the scope (as I've argued earlier) to just client-side applications and so allowing for the possibility of other types of applications? For example, were you hoping to broaden the scope to include "server-side applications"? An authorization-agent perhaps among other other things as far as what an "application" might entail? If not, can you clarify? If so, do you generally agree with me to not overly constrain the scope?

pchampin commented 2 months ago

For me, the mention of "client-side application" is there to emphasize that the servers in the Solid ecosystem (storage server, but also the authentication server, identity server, when applicable) are application-agnostic. All the application-specific logic is in the client. I think that is an important feature of Solid/PUMPKIN, and deserved to be communicated explicitly.

On the other hand, I appreciate that "client-side app" can easily be read as "in-browser app", which would be an undesirable restriction of the scope. In my view, the client can also be a native mobile or desktop app, a headless app running in the background on behalf of the user... So if "client-side" might also be misleading here.

My position is that, strictly speaking, "client-side" is accurate and explicit, so I'm leaning towards keeping it. During today's meeting @elf-pavlik indicated that he could live with that. @csarven are you ok as well with keeping "client-side" (since you reacted to this particular point)?

elf-pavlik commented 2 months ago

Could we replace client-side with third-party? It conveys better the intention of all the other components being app agnostic. https://en.wikipedia.org/wiki/Third-party_software_component

TallTed commented 2 months ago

To my mind, "third-party" conveys more about the app's origin than where it runs. "client-side" conveys more about where it runs, than where it originated.

"Client-side" says to me, it runs on my local device. "Server-side" says, it runs on some other device (in the LAN, or WAN, or cloud, etc.)....

elf-pavlik commented 2 months ago

"Client-side" says to me, it runs on my local device. "Server-side" says, it runs on some other device (in the LAN, or WAN, or cloud, etc.)....

With this interpretation, we should not use client-side since solid clients/apps can run locally on a user's device as well as remotely, including in the cloud. There are existing solid clients written in Java that run a remote machine and bots written in nodejs.

As I understand the intention, it is not about specifying where solid clients/apps should or should not run. Instead, we want to clarify that clients/apps must use solid/pumpkin protocols to communicate with solid storage (resource server) rather than using some internal interface and being co-located in the same security domain.

If not third party we should look for another term that empathizes the boundary between clients/apps and (resource) servers. We also don't need to look for a single word, we can say applications and add a complete sentence to capture:

For me, the mention of "client-side application" is there to emphasize that the servers in the Solid ecosystem (storage server, but also the authentication server, identity server, when applicable) are application-agnostic. All the application-specific logic is in the client. I think that is an important feature of Solid/PUMPKIN, and deserved to be communicated explicitly.

We can move it to a separate PR to not hold this one back.

pchampin commented 2 months ago

+1 to csarven suggestion above; since all proposed qualifications of applications raise concerns, I'd rather go with "application" at this point.