Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Federation / Browser Extension #426

Closed
m90 opened this issue Jul 7, 2020 · 0 comments · Fixed by #731
Closed

Federation / Browser Extension #426

m90 opened this issue Jul 7, 2020 · 0 comments · Fixed by #731

Comments

@m90
Copy link
Member

m90 commented Jul 7, 2020

Offen is a self hosted service, operators that want to use it for ethically collecting usage data for their sites and services install on a server or a similar service they own. HTTP requests against this service are directed against a subdomain of the operator's primary domain.

This design is good for preserving user's privacy and gives operators fine grained control about the service they are running.


A major feature of Offen though is giving users access to their usage data and the ability to understand and manage this data. A landscape of many distinct Offen instances means users have many entry points for particular subsets of their data. This is at best cumbersome, at worst it can cause confusion and uncertainty with users - the exact opposite of why we are building Offen in the first place.


This is why we are thinking about ways we can connect the dots for users while still protecting their privacy. This can be done if we federate deployed Offen instances, either on the server side or the client side.

Constraints

The main objective for designing a federated version of Offen needs to be preserving the existing privacy guarantees we can make to users. If we connect instances in any way we need to make sure this does not mean that usage data can be aggregated across instances in any way by operators. This is required to be a privilige solely for users.

Approach: Instance Federation

The server side solution to this task would be federating deployed instances of Offen. This would work in the following way:

  1. When deployed, Offen instances publish the hostname(s) they are using to a decentralized network and subscribe to updates by other instances.
  2. When a user visits the Auditorium of a particular Offen instance, they can now request a list of other instances known to the federated network.
  3. Using the returned list of hostnames, the user can now request any data on these instances associated to them.

Pros

  • works out of the box on any device, with no extra burden placed on the user

Cons

  • technically challenging to implement
  • client side performance will likely be subpar when a high number of nodes needs to be checked

Approach: Browser Extension

When implemented in the client as a browser extension, federation could work in the following way:

  1. An interested user installs an Offen browser extension.
  2. When visiting a web page that is using Offen, the browser extension keeps track of the instance's hostname and persists it locally.
  3. When the user visits an Auditorium of an Offen instance, the browser extension makes sure data from all known hostnames is requested and the aggreate being displayed.

Pros

  • Lightweight and technically easy to implement

Cons

  • User need to understand why they would need a browser extension and also install it
  • Safari support would require developing a dedicated extension as it does not support the web extension standard
@m90 m90 added this to Backlog in Roadmap Jul 7, 2020
@m90 m90 moved this from Backlog to In Progress in Roadmap Sep 7, 2021
@m90 m90 moved this from In Progress to Backlog in Roadmap Oct 16, 2021
@m90 m90 moved this from Backlog to In Progress in Roadmap Mar 10, 2022
@m90 m90 mentioned this issue Aug 4, 2022
@m90 m90 closed this as completed in #731 Aug 29, 2022
@m90 m90 moved this from In Progress to Released in Roadmap Sep 20, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Roadmap
  
Released
Development

Successfully merging a pull request may close this issue.

1 participant