Friendica – A Decentralized Social Network
friendi.ca
friendi.ca
Decentralized systems can only take off if they are built around standardized protocols - this is why email works. The choice of smtp servers to run, email clients to choose from, that's what's making it resilient.
Ideas like ActivityPub, webmentions, microsub, micropub, while not strictly protocols - all on top of HTTP - could allow us to build real decentralisation, with the weapon of choice on platform, language, client - this is what's truly needed.
Most of the platforms like Diaspora, Friendica, Mastodon, can, could, or already have adopted some of these, thus making a good step towards true federation, when anything can talk to anything.
EDIT ... but the emphasis right now should be on the glue, the protocols connecting them, not just only the software implementing it.
It is true that user interfaces are just as important, but half-baked solutions might do more harm, than good, resulting in disappointment in those who'd be willing to try them out.
As much as most people on HN would like to have these protocols specified ‘correctly’, this feels like a situation where the perfect is the enemy of the good.
What do we want the system to do?
And how can we control our privacy?
Let's answer these questions first.
EDIT: https://www.w3.org/2005/Incubator/federatedsocialweb/wiki/SW... might be a better source.
Defining a minimum set of features for what a social network (media? web? system?) is is certainly a required step, and any suggestions are welcome.
In your example, users can be tagged in a photo. That's nice. But let's say that in the future we want to share who's attending what events. Perhaps we can use the same kind of constructs in the protocol for both uses.
Of course, an implementation does not need to support all features from the start.
https://indieweb.org/Facebook#Features
https://indieweb.org/Twitter#Features
However, I don't think there's any kind of standard-ish list for what's a minimum feature set for a social network. Please feel free to add one to the indieweb wiki, as any help is welcome.
And you can get all of that machine readable too: http://pin13.net/mf2/?url=https%3A%2F%2Fjeena.net%2Fevents%2...
Ideally I'd be happy with something like that, where a single geek can provide a secure and federated social hub to his circle of friends/family.
Friendica supports a ton of protocols, see the "Interoperability" section on the front page.
Regarding ActivityPub, it is good to keep in mind the reality: https://github.com/friendica/friendica/issues/4688
Quoting MrPetovan:
> ActivityPub is a "loose standard", meaning that it doesn't define precisely each interaction. "Supporting ActivityPub" doesn't make any sense, because, per the standard, implementers are forced to make local decisions about how to convey specific features via ActivityPub because of an intended lack of description.
> In this context, you can claim "supporting ActivityPub" and not being able to interact with any other service also claiming "supporting ActivityPub" just because you made different implementation decisions.
> Another angle: Mastodon implemented ActivityPub for internal communication between Mastodon instances. So they designed their usage of ActivityPub according to their specific usage and features since the standard actually encourages you to do so by leaving parts intentionally vague. However, if any other project wants to communicate with Mastodon instances, they will have to know which specific decisions were made for the intentionally vague parts of the standard because you can't just guess.
> It is different from OStatus where interactions were much more precisely defined, so you actually could rely on the standard definition to implement a single connector that would mostly work with most OStatus services because the vague parts were reduced to a minimum.
I'd like to see the line disappear and I'd like to see WhatsApp or email be considered social networking. I think a well built app can have both of those features in addition to the feed+post+comment style of Facebook. From the user perspective, what are all these communication mediums but just "place" configuration?
Edit: here're some early scratch grpc services I have been toying with to abstract different communication forms: https://github.com/cretz/yukup/tree/6793fb2b281e4ea7cda1fe5b...
There are only so many possible applications in the social space, and the idea that friends/family, work colleagues, hobby/interest, and professional interest groups should all share the same space was always eccentric.
Not the biggest fan of the stack, but no problem. These networks are getting closer. Now create a desktop installer that: has its own web server + php + mysql pieces embedded and execute on their own ports on startup. (I say I don't like the stack because I'd prefer something that can all be statically compiled). Make sure the desktop can easily setup/change/admin this self host and can guide or automatically dyndns and NAT bust. Or if you want to do it right, embed tor, and create a hidden service for me (an ephemeral v3 one would be nice, maybe from a deterministically derived key from a few factors, I'll figure out how to give the unwieldy name to my friends).
We have to make self hosting as easy as running mspaint if we're going to tackle this problem right.
But this is very close, yes.
this is especially problematic because the Patchwork client, while impressive, is not something I enjoy using. I'm just itching to build my own alternative clients, as well as apps that run on the SSB protocol, but I can't unless I force myself to get back into the Node ecosystem.
Another crucial issue, I find, is the inability to have multiple devices linked (by whatever means) to the same user. The impression I get is that the community is split on either fixing that, or adding more tools to deal with community management. I find that worrying because I've had multiple experiences with communities where ~50% was overly focused on 'preserving what is', and none of those experiences ended up in any kind of success.
For the time being I'm still excited about Patchwork, and looking for ways to positively contribute (contrary to this post), but I get too much of a 'sixties imploding commune' vibe to feel comfortable wasting my energy, for now.
EDIT: all this sounds somewhat negative, and my apologies for that. But I got and am really excited about the core proposition of the whole thing and just worry a lot about its viability. I'd really love to hear where I'm wrong, or how I could contribute without having to deal with the community kerfuffles that I am not too interested in. It's like CouchSurfing in reverse.
I've tried running Movim and BuddyCloud when they got released, but left me with a terrible, unstable, feature-lacking experience (this was in ~2012). Maybe revisiting the idea of social networks on top of XMPP would worth a few thoughts, given it's now in a much better state.
SSBC is a very interesting idea and solution for sneakernet issues, but it comes with a serious amount of issues on it's own.
This is incredibly annoying, I agree, but having run a service for which people type their email addresses, and having seen just how many people can't actually type their own email address properly (currently running at about 5%) I'm not surprised that a service aimed at non-technical people puts in attempted safeguards like this.
And my service is for technical people - I can't imagine what it's like for genuinely open services.
Without digging through my records I can't be more specific, but in general I was horrified at how many can't actually spell their own names correctly. Seriously, one person typed jojn.dpe instead of john.doe (name deliberately changed to protect the user). Sometimes it's possible to guess the correct username/domain, but sometimes it simply isn't.
Gmail and Cloudflare.
For example, the web makes it cheap and trivial to DoS someone. And you often don't want your origin exposed. Hence everyone using Cloudflare and the collapse of the decentralized dream.
EDIT: I don't think people will be able to abandon email, given it's a replacement for paper mail (banking, official papers, etc). If the big players won't play nice, people will need to get to another provider, simply because the source of email won't be willing/fast enough to jump on [system X].
- Even if it were true that "everyone uses Google/Microsoft/Apple/etc", the ones that don't can still send/receive emails from everyone else. - If one of the of the big providers disappear, the system as a whole will continue to function.
As for the few that do have the capacity to setup a mail server, they would only be able to message others that also have the capacity to setup a mail server (again we're assuming no centralized providers and thus no delegation of this task to a trusted party). So maybe the system would still work for this niche group... but then we get into the bigger question: are there entities today that control the Internet and do they have the capacity to shut down systems like email? Tor?
Call him up on the phone or message him on whatsapp or... whatever...
email IS decentralised. Even if we had ONLY gmail, a startup could implement a better email frontend and be successful.
The fact that you don't get to talk with other people only because an big email provider would disappear does not change the fact that email messaging systems are designed to be inter-operable. That is the key point. To try to argue otherwise is insane.
Mostly everyone, but not everyone.
No, it's not the case that "everyone" does that. I don't, and many of my colleagues don't. Perhaps muggles in general don't, and perhaps you're really only talking about such non-technical people, but your hyperbole undermines your argument.
And I'm getting really tired of those big services automatically classing as spam anything that comes from a different domain.
To add a little more nuance to that, millions (or billions?) of people working in various areas have email addresses provided by their employer with specific domain name suffixes. Even if those are using cloud based email providers like GSuite or Outlook 365, as far as someone who wants to correspond by email with these people is concerned (personal or work use), the email address is certainly not an @gmail.com or @outlook.com address. And all these people understand that quite well, even if they don't work in the tech sector.
> And I'm getting really tired of those big services automatically classing as spam anything that comes from a different domain.
This really bugs me A LOT! It's as if the systems have a knee jerk reaction based on domain names while they themselves wouldn't consider all their users (on their domains) as spammers.
This is a totally different story for Facebook.
Centralized systems offer this accountability in theory. But rarely does this work in practice.
I don't care about fancy tech in this case.
How did you manage to do that?
My feed it full of crap like: Silly memes in local languages, Weird shared videos of something cute or funny, Ads, Game invites, Photos from people I don't really know...
I basically only have facebook to kinda keep the contact data of old school friends. I don't even talk to them.
(And for dating. Contacting people unsolicitedly but still in a friendly and respectful way works much better than going on online dating sites...)
Can I whitelist/blacklist nodes?
And how is the situation we're arriving at better than having a single party, in this case Facebook, who is to blame when things go sour?
Whitelisting nodes is counterproductive to what federation is trying to achieve.
A decentralized network means that if things go sour, the cost of switching is small, similar to an email account. If my mail provider fucks up, I point my domain to another one and I don't even bother.
It'd be like someone choosing Windows as a server OS: there's a small chance it was a good decision, and a far, far greater probability that it was the result of a toxic engineering & management culture.
The LAMP stack, for all its problems (you're not wrong) is the bog standard and is easy to rent.
If you'd rather use Rails, check out Diaspora: the two systems federate together, anyway.
Because PostgreSQL focuses on correctness & MySQL focuses on performance & ease of use. With a database, I want correctness first, and performance & ease of use second.
Many projects chose MySQL because it was easy to use & somewhat faster, and they didn't realise how broken it was initially. I am sure that many projects failed due to MySQL, and are now lost to history. Choosing MySQL over PostgreSQL betokened the kind of culture which chooses convenience over correctness, which is not the kind of culture I wish to associate myself with.
Over time, MySQL added more & more correctness, and PostgreSQL got faster & faster. As it turned out, PostgreSQL with the right performance flags is faster than MySQL with the right correctness flags.
In the specific case of Uber, it sounds like they're essentially using MySQL as the underlying storage mechanism for a key-value store, and are able to build the mechanisms they need atop it. Also, PostgreSQL less efficient for their usage patterns than MySQL. That makes sense, and seems like a sensible engineering decision. 'Essentially no reason to choose [MySQL] over PostgreSQL' doesn't mean no reason at all.
It's kinda like how sometimes it makes sense to write an inner loop in assembly, but it extraordinarily rarely makes sense to write a word processor in assembly in 2018.
What you're looking for is federated vs peer-to-peer decentralization.
Friendi.ca is federated and decentralized.
I don't have any Facebook accounts but after 15 years programming stuff, I don't see the copy/paste as a powerful solution.
Also, distribution is not really the problem here. From architecture point of view Facebook is distributed.
The problem is the need of store huge amount of data in the cloud and pretending that to be free.
I think ease-of-use/access, along with a well thought out federation protocol, will be critical for these networks to replace Facebook/Twitter/etc. As it is now, I can only get my techie friends to try these out.
https://www.indiegogo.com/projects/prevaat-the-privacy-focus...
So what the hell do I need FB for? I dont need it and i dont see a reason to switch to an other social media platform like friendica or diaspora anymore. But maybe im just getting old :D
My Dad couldn't give a rat's ass if the network was 'Decentralized' or that 'Relationships can be made across any compatible system'
All he wants is see pictures of his grand daughters and post funny gifs to his friends.
With a signup that is so simple even my err Dad could do it!
With a process to move away from Facebook to the new platform (and keep all his stuff) that is so simple my Dad could do it.
There's reasons why PHP has been so successful with WordPress and Facebook.
True in 2004, today options are plentiful.
More options = more skills needed.
Perl, Python, JSP, ASP, CF - people argued for and used all of those on major projects in 2004.
Maybe instead, we can use a some already agreed upon protocol... like... english language!
Yes, "most people" may not know it's participatory / non commercial / that search results are largely based on it / that you can download all its content and tools and run your own. It still is.
Anyway, Wikipedia is mainly written in PHP and uses MySQL.
But past this point, if we are talking about decentralized peer to peer systems, something based on Javascript that runs entirely in the browser is the real gold standard, at least until a protocol-based network breaks through.
> Friendica runs on PHP with MySQL as a database. If you can run WordPress, you can run Friendica.
This is a problem. I picture the future decentralized systems being a self-contained system that runs on your device (desktop or mobile) as well as servers for more technical people.
To this end the only scripting language that can pull this off is Javascript. Ruby and PHP are not needed or useful in this space.
To anyone that reads this, please take a couple weeks to learn Node (+electron or react-native), Go, or (hardest) Rust.
Anything that ran like this would have to be contanerized anyway, meaning literally any stack would work.
My point is that decentralized networks need to be easy to run by normal people. Go, Rust, Java, C, Swift, etc.. can all be compiled into an app and handed off to a user to run.
This is another example of faux outrage that will pass with the next news cycle.
Most people who uses social media etc. doesn't want to download a lot of things, access should be fairly easy and painless without some sort of "guide", which is what I can see as the downfall for this "social network"
The harder problem (for me) to solve is how to build up weak ties outside of social media.
In short order it was not only tech-minded people who did this en-masse. If a platform is convenient for people to do X, it has a good change of also being popular.
Example: In the EU so many people care that legistators are taking measures to protect the people.
Perhaps it's just the people around you that don't care...?
Let's be specific here.
I would say 90% or more of Facebook users couldn't care less if their data is sold to advertisers.
I'm one of those people.
Tell me why I should care. The same thing happens with loyalty cards at Walgreens.
It's the people on Facebook that make Facebook trash, not Facebook itself.
As for your "legistators" (sic), that is the faux outrage I'm talking about.
That's the name of game in politics.
1) Something happens. 2) The media tells people they should get outraged about it 3) People get outraged about it 4) Legislation is enacted to appease the outrage 5) Something else happens. 6) People move on to getting outraged about that.
"A lot" of people also think the world is flat.
Not really.What's your point?
Quote:
> I would say 90% or more of Facebook users couldn't care less if their data is sold to advertisers.
So, changing goalposts.
I'm making the point that "a lot" is a throwaway term.
It's like saying a car is "very fast."
Well, compared to a jet, a car is not fast at all.
Also, "a lot" means something different to me than it does to you.
So saying "a lot" of people do or believe anything is meaningless.
chrstphrknwtn was responding to your comment on privacy and now you changed to talking about decentralized social networks.
I don't care if you care. That's your decision.
> The same thing happens with loyalty cards at Walgreens.
It's not the same thing at all. With loyalty cards I get the OPTION of being rewarded for allowing a company to track me. So I weigh getting rewarded (positive) against sharing my data (negative), and I make a decision.
With Facebook there is no option, they track everyone regardless.
> As for your "legistators" (sic), that is the faux outrage I'm talking about.
> That's the name of game in politics.
> 1) Something happens. 2) The media tells people they should get outraged about it 3) People get outraged about it 4) Legislation is enacted to appease the outrage 5) Something else happens. 6) People move on to getting outraged about that
Yes, so? Peopple are outraged and legislators act. Isn't that how democracy works? It seems you're only just now discovering this.
You have the option of using Facebook or not. If you don't have a Facebook account, they don't have your data.
If you don't have a Walgreens loyalty card, they don't have your data.
People are faux outraged. They're not really outraged at all.
Check this comment in two months and tell me how "outraged" people are at Facebook for selling their data.
It would depend on what kind of "democracy" you're referring to. In a representative democracy where all elected officials are worried about is getting re-elected, then yes, that's exactly how democracy works.
Not quite true, all the like buttons and other FB integration code for websites and apps still collect your data
Wow. You're so clueless you don't even realize how clueless you are.
However, I do agree its mainly fuax outrage that will pass shortly. The stock is already recovering
Then I swipe my credit card through their machine and give them the exact same credit card number to associate with every purchase I make.
I fully understand that they can track me. I am sending the message that I don't want to be tracked. I am also sending the message that I am willing to pass on their incentives to be tracked, but I am not willing to pass on the convenience of my credit card.
Then I make my credit card company send me a new card every year. So vendors get to track me through less than 50 purchases before I switch.
For businesses that track loyalty by customer name, I will give them the name of a neighbor or other acquaintance. It's astounding how often they are willing to give me back information about that person.
Whether or not this Requirement is observed, audited or enforced I have no idea.
If you said to someone "I'm going to collect information about you whether you like it or not, and then sell it to someone who wants to manipulate your thinking", then I suspect they wouldn't be so keen on the data being collected (let alone sold) in the first place.
And you literally just described the profession of marketing. So if you replaced the inflammatory phrase "manipulate your thinking" with "market toward you", I think they'd be totally fine with it.
I mean, why else do you "Like" something on Facebook anyway unless you want other people to know that you like it?
I agree marketing is intended to manipulate your thinking... or "market towards you". I suspect I have a different attitude about marketing than you do.
I don't use facebook, I used for a week in 2007, and thought "this is just a marketing data machine, no thanks".
Further, the innocuous sounding "Connecting the world" mission doesn't equate to "monitor your social interactions and help people convince you to buy things" (amongst other things) in most people's minds.
The fact that some people choose to remain uninformed about what Facebook is doing with the data that these people willfully give them is on those people.
What is ethical in this situation is personal to you, so you can't make a blanket statement that marketing is or not ethical.
Again, to me, it's perfectly ethical, but I'm a big believer in personal responsibility.
As you said, you signed up, saw what Facebook was about and bailed.
That's called personal choice, and it's a wonderful thing.
What I think is not ok, and in turn unethical, is for a company to constantly represent that privacy is a top priority, openly say in the press that data will not be sold, and then do it anyway.