How Signers work
If you're not familiar with Farcaster signers, the best place to start is Varun's 5 minute video.
In short: To avoid exposing your private keypair that defines who you are on Farcaster, applications create their own keys, you sign them, and tell the network that this new keypair (the "Signer") is allowed to act on your behalf.
If you open Warpcast mobile and go to Profile > Settings > Advanced > Manage connected apps
you will see something like this. In my case, I have approved two Signers, Warpcast and Herocast.
These two signers can do everything on my behalf, except take actions that relate to my identity: For example, they can not add/remove signers, or change my Farcaster name, but they can create new casts, delete old casts, like, recast, etc.
It is important to understand that every message (casts, likes, etc are messages sent from the app to the Farcaster network) a signer sends on my behalf, is signed by the Signer's key and not mine. Which is perfectly fine, since I have sent a message signed by my key letting the network know that this is OK. Plus, at any time, I can revoke a signer by sending a Farcaster message telling the network to remove the specific key from my approved signers.
However, this creates a problem: After I remove a signer, hubs will find messages that are (now) signed by a key that is not approved by me -and they will delete them.
This is why if you click on the trashcan icon next to a signer, you will see something like this.
In addition, you will also see a message that this transaction happens on-chain, and you will be asked to cover the cost of the transaction ($0.99). Which makes sense: Someone has to pay for it, and we don't want to rely on a centralised entity or company to cover these costs.
In this case, the amount is collected by Warpcast to pay for the gas fees, but there's nothing stoping a knowledgeable user from taking the required steps to do it themselves and pay the gas fees in $ETH.
Implication: cost
The concepts and the flows described above are optimised for decentralisation and openness. But when it comes to user experience, especially for users used to centralised social apps that covered all operating costs in exchange for monetising their control over the network, they will probably create a number of issues.
First of all, adding or removing an app (i.e. a Signer), has a monetary cost attached to it. Many users will be reluctant to do so, which means that:
The app that onboarded most users to Farcaster (100% Warpcast for now) has a significant advantage compared to other apps.
Users will be more reluctant to even try a new app.
Is this bad? Not necessarily.
This cost may also be an opportunity for a Farcaster project/app that has an alternative revenue stream, or enough funds: They can cover the costs and offer these services for free, and in doing so they can grow their user base much faster, and even become the most popular Farcaster client.
I find it very interesting that even if an app pays for these costs, by doing so, they help the network grow. And given the (sufficiently 😀) decentralised nature of Farcaster, if users are happy with Farcaster but dissatisfied with the specific app, the cost of moving to an other app is low enough (<$1) for most to do so. So, in a healthy and large enough Farcaster ecosystem an app cannot rely on their large user share to keep their users. (At least from this point of view.)
Implication: the risk of losing content
The second implication is that removing a Signer will result in loosing all content and activity the user created through it: casts, likes, recasts, follows. How many users will be willing to remove a signer if all the content they created will be lost?
However, this is a limitation of the current implementation in Warpcast and not a technical limitation of the protocol.
As Varun explained in this cast, there is a solution: An application could download all your messages signed by one Signer (and maybe delete them from the network if needed), re-sign them using a new Signer and re-submit them to the network.
I consider this is an opportunity for developers who want to join the Farcaster community: An application to manage Signers.
My ideal Signers Management Tool?
It allows me to List/Add/Remove Signers
It shows me which messages will be affected if I removed a Signer.
It offers me the option to re-sign messages (in bulk) using a new signer. (Even create a new Signer on the fly, to be used just for this operation.)
It allows me to pay for gas for these transactions using my own ETH wallet.
As things are today, I'm very reluctant to experiment with Farcaster apps because I know that if I don't like them and I want to remove them, the content I created will be lost. Having such a tool, or integrating this functionality in an other app would eliminate this risk, and I would be more open to trying new apps.