Pleroma 2.0: a free, federated social networking server built on open protocols
pleroma.social
pleroma.social
Fun story: massive influx of users from India recently and the timelines got flooded by posts indirectly asking: "what is the way to fame here? How do I get followers?". Fediverse doesn't work like that. You just… talk with others. There's no "you and your followers". There's "us".
Analogy: you are not in a metropole. You are in a village that is extremely well connected to all other villages. You do not need to shout to be heard.
I'm on a FOSS-focused instance. We talk all kinds of stuff and FOSS is one of them. I have my Home timeline where I follow all the people I want to hear from (both my instance and all others). I have my Instance timeline where I'm basically guaranteed to read interesting stuff I can reply to and meet new people who also considered this instance to be their haven. And the Known Fediverse timeline… Well, it's fun to browse but come on, imagine a timeline of all tweets on Twitter: mostly useless.
Choosing the right instance also involves choosing the right moderators for you. Mods can block other instances. If you don't like what the mods do, change instance or start your own community. After all, it's not Twitter, the people decide how content is moderated, not a for-profit company.
That's the fediverse for ya. Hope to see you there!
[1] running as essentially a single-user instance.
If other people want to do that and switch from Twitter -> Fediverse, I wrote a bunch of scripts to switch from Twitter to Fediverse :
https://git.sr.ht/~pierrenn/twitter_escape
Sadly, this is a bit spammy method, but I had only a dozen or so complaints so far and my "Whole known network" is now seeded pretty well : https://s.pnn.sh/ (this is a small single user home instance on ARM, so it's slow)
And TBH I find the Pleroma UI better than Mastodon for the single user instance - plus clicking on the date to get replies in the Mastodon frontend always feels weird (but it's personal taste !)
Thanks for the links!
> Well, it's fun to browse but come on, imagine a timeline of all tweets on Twitter: mostly useless.
BTW. This will happen too, it's just not popular enough to catch that.
I'd encourage you to build a federated app instead. :)
If you don't want second parties to have copies of your data, configure your webserver not to send it to them when they request it. You can't force someone to do something with an HTTP request.
Anyway, I work at one of those companies. You know what they have? Ways to let users opt out (ex: ROBOTS.txt), ways to ensure they're not DOSing people when scraping (which uses material resources: compute time, spindles, electricity, etc), ways to track the copyright of the source material (which belongs to the author, usually), and ways to respond to second-party requests (legal and non-legal notices) who want to know how much of their data has been scraped or exercise their rights over their material. These technological features are because this is what human societies have found to be a decent balance between scrapers' rights and internet users' rights. Your solution lacks this due consideration and gives internet users a giant middle finger.
In your last paragraph it is pretty clear you are doing this because of some ill-conceived "ethical" notion that "because HTTP responded with this payload, it is now mine with an 'ethical license' to do anything". There are other ways to point out security flaws in ActivityPub that are way more constructive and less asshole-ish, but it seems you're pretty keen to erase a lot of moral and legal nuance to prove "because I have a technological capability means I have the moral ought and the legal right". Sorry, but no: the world is a lot more complex than this.
Just because I have the technological capability to transmit the message "you're being a dick" from the comfort of my home doesn't automatically mean it would be ethical for me to, so of course I am not going to tell you "you're being a dick", and normally I wouldn't type this sentence at all but in this special case I am because it shouldn't be a problem with your ethical system since I'm not actually saying it despite having the technological capability, so it should have no impact on you (and if it did, it should give you pause to reconsider that maybe you need to do more self-reflection on discovering your actual reasons for doing this ill-advised project).
Why do you believe that that is my view?
Your system is designed to download and save information in an unaccountable manner on behalf of anyone, "unaccountable" literally is a doorway to "for any further purposes", so it's a very safe assumption.
The lack of clarity also comes from ignoring the bulk of my previous message. Ball is still in your court. I am inviting you to make this exact clarification (plus far more), when all you seem interested in doing is dodging, delaying. The worst action you could possibly take is accusing me for assuming in order to fill in the very deliberate blanks you are leaving behind.
I think perhaps you have confused some source code that I have released with a service that performs a function on behalf of a user. I operate no such service.
All I have done is produced a tool that allows a user who downloads and builds and runs that tool to download data from a website, much like a browser or any other HTTP client. There is no "on behalf of"—it's just a tool for a first party to use.
I am happy to let you keep showing off your circular reasoning to the world, and will happily repeat myself pointing out all my counterpoints you did not engage with and ignored.
For example:
- I claimed a technology's existence is enough to cause real world consequences. You ignored this point.
- I mentioned you are not including safeties to building a tool to protect its user[0] (the "first party" user of your tool) and its targets ("second party" people the tool-users are subjecting to your tool). That makes it legally/morally unappealing to use as a tool(puts self in danger), and morally unappealing to be subjected to. Why build a tool this way to be completely legally/morally unappealing, unless you want to cater to users specifically that do not have such legal/ethical concerns? You ignored this point.
- I have invited you to clarify your ethical view. You are circling back to a previous non-argument.
- You simply refuse to verbalize your implicit moral stance -- that your role as a "toolmaker" absolves you of all the moral consequences of its use[1]. If this is incorrect, I welcome clarification from you.
[0] The laundry list of features of other scrapers I mentioned, here: https://news.ycombinator.com/item?id=22533439
[1] This moral position has long been well-criticized and is not a sufficiently nuanced moral stance in this day and age. For an old example, consider Tom Lehrer's criticism of von Braun: "'Once the rockets are up, who cares where they come down? That's not my department', says Wernher von Braun." [2].
I see that your code makes no mention of robots.txt, so you've designed it in such a way that explicitly ignores each instances' published intention. You can't reasonably make any claims about "consent" while pretending that "User-agent: *; Disallow: /" isn't there.
I agree that this "ethics statement" is of no use, though. The author should have ignored these people who get upset because of their posts being copied.
> ... reasonable behavior of others ...
According to whom? Every dictator thinks it's reasonable behaviour for them to crush the opposition, while those who look on, or those who suffer, will usually believe that to be unreasonable behaviour.
Someone I learned from a colleague once is this:
"No one ever thinks they are the bad guy."
So your concept or reasonable behaviour may not match mine, and you may exhibit behaviour that will upset me. That's not an opportunity for me to learn, that's an opportunity for me to seek some sort of recourse against you.
Don't be surprised if others attempt that.
Even though several people are saying that what you're doing is unethical, you're effectively saying:
> "Screw you, I think it's OK, so I'm going to go ahead and do it, and no one can stop me."
Sleazy? Arguably. Allowed? I mean, it's not like it's pulling any magic tricks. It's operating within what the protocol (and the law) permits. People could use a better protocol that doesn't have these problems, but hey, who cares, right?
Ethics were designed as a more objective framework that can be consistently applied in a society so that groups may be able to reach consensus about decisions that affect others. I have yet to see any argument that developing and publishing software that allows people to download public information from the web is unethical, especially considering the fact that you cannot download any information from a webserver that that server does not willingly provide to you. You send a request, and perhaps you receive a response—or not. It is wholly within the determination of the server what, if anything, it sends to you. My software speaks plain ol HTTP, no hax or subterfuge or fuckery of any kind.
Indeed, such HTTP client software development and distribution is widespread in our society: you're probably using some software like it right now to read these words. Other tools that perform this function are shipped with every single install of most OSes. It's some of the most common software on the planet. When you browse Mastodon or Pleroma instances, software on your computer is doing the same thing that my software would do, if you ran it.
Despite the fact that some people are irrationally upset over people's choice of HTTP clients with no justification offered, the burden of proof remains on you or anyone else who has a problem with my software to explain why, from an ethical perspective, I shouldn't be writing it or publishing it. No one has offered such an explanation to me, nor can I, in what I think to be a thorough consideration of all the possible consequences or systems of ethics which might apply, discover one myself. I do not believe that such exists, considering the circumstances of how common even advanced HTTP client software is. If you have one, please speak up.
Remember: whether something is moral or not is a personal opinion; it cannot be right or wrong. Whether or something is ethical or not, however, is more or less an objective analysis within a given ethical framework. It is not an opinion.
I think perhaps you may have misattributed the responsibility for the side effects of publishing data globally.
Users come to these popular platforms not worried about what it will take from them, but what they can take from the platforms. Notoriety, fame, a following.. validation or just a business model.
Doing so costs you all of your followers. This is one of the main issues with the culture of heavyhanded instance operator censorship: you can’t simply switch like you would an email host with your own domain, because few/no AP implementations support bring-your-own-domain virtual hosting.
This is like saying “well, if you don’t like that the mail admin simply doesn’t let you email certain domains, just change your email address!”
This is not true anymore. You can "transfer" your account to another instance, and all the followers will not need to refollow.
Going back to the original quote: "The fediverse is like interconnected villages instead of a large metropole. There's no need to shout." and I think it's quite apt.
The fediverse is far closer to early online fora, bulletin boards then it is to e-mail. Maybe you were deeply entrenched in a particular online community, establishing an online identity, a reputation, visibility,... connected to your name. But outside of that domain? Well, you have little social credit on other discussion boards.
This approach models closely to how societies work in reality. And how individuals prioritize their own social connections. First family, then extended family, friends, co-workers, and society at large - an online audience - way down the road. Each of us will subconsciously look at people starting from the implicit question "Who is part of my tribe, who's an outsider?"
Now, the important part here is that you may feel compelled or forced to leave a group, family, tribe,... So, this implies giving up your locally established social credit and hope you can rebuild that elsewhere. For most people, that's an extremely expensive and risky proposition.
So, what do Reddit and Facebook do different, then?
Reddit is hugely successful because it provides a platform that can sustain thousands of small communities. Much like how online fora - but also e-mail based newsgroups or BBS'es - used to work in earlier days. Facebook's killer app is not the wall or your profile - contrary to what you may think - but... facebook groups. The same is true for Telegram or WhatsApp. These are tools that allow you to establish small communities.
And then you have the entire "followers/following" thing.
What Facebook and Reddit did was successfully merge the idea of a portable, persistent identity - a profile - between local communities by building a platform that also made migration and establishing new communities really easy and cheap (just a few clicks: bam! new group or subreddit!)
Now, followers / following: that's NOT a social network. That's an audience. And there's a distinct difference between those two. (even though there's an overlap too)
For all the talk over "engagement", communicating towards an audience is mostly a one-to-many one-way street. You may reach hundreds of thousands on Twitter, but you may only directly engage - and establish a meaningful relationship - with a handful of people.
If you want to directly and presently reach a large audience, then either e-mail newsgroups, the fediverse or online fora are the wrong venues. Arguably, even Reddit is the wrong platform if you directly tap into millions from a single or a few publishing points (accounts).
If you're looking for small communities in which you want to get entrenched, then the fediverse is the right place to be. Even though that comes with the perpetual yet very real trade off of establishing social credit locally which you can never carry with you if you migrate away.
I remember when I first used Twitter in 2006 or 2007 it actually had that as a feature. It was useless, but still fun as you mention.
Back in the day when ICQ and the first instant messengers showed up, there used to be a "find a friend" feature. You just specified what you were interested in chatting about and it would return a list of people who had said the same thing. That was all it took to meet interesting folk and make meaningful connections.
Needs to be simple for civilians I guess is what am saying.
That sounds wonderful - any hint how to find/join that instance? (Searching for mastodon/pleroma FOSS instances doesn't return anything useful here.)
Chances are, if you have a server capable of running the Elixir + web framework stack, storage space for cached images, and a proxying web server, Postgres probably isn't much of an overhead on top of that.
Bare in mind that each fedi instance dosen't only host the content generated by users, but also whatever content they repeat/reply to. The fact it needs to be stored (or cached) is one reason why there's so much blocklisting/defederation - because people may not want to host certain content from instances known to commonly host it. It may even store more from the public timeline (I'm not sure about the specifics of Pleroma). Nevertheless, even with five users, you can fill up quite a lot of space in a database and on the filesystem.
Edit: nevermind, Philomena has a table for the many-to-many relationship and uses Elasticsearch for the heavy lifting.
https://shon.github.io/2015/12/21/postgres_array_performance...
https://gist.github.com/joevandyk/031cf5812bd656887623
To search for a post with multiple tags, you need to do a join for each tag. You don't have that problem with arrays.
Sadly, we can't just use SQLite because we use Postgres-only features like jsonb extensively.
Really all we’re talking about here is whether or not the thing that writes the files is in-process or an adjacent process.
If they can manage to run Pleroma, they can manage to run a Postgres beside it. I think the hurdle you are describing is to self-hosting anything in general. Standing up a self-hosted postgres is actually easier/simpler/better supported than some random weird elixir app.
The "if they can manage to run Pleroma" is not a very helpful approach to actually get more people to run Pleroma.
I suspect a soft fork or subversion targeted towards small instances might be more sustainable, but that obviously requires more developers to build and maintain that.
"Man this thing looks really promising, just think of the potential of a social network unhindered by the dark machinations of the googtwitface !"
Me after ten minutes on the public feed of mastodon.social:
"So do the furries post for the sex workers or is it the other way around or what ?"
I think we need an open source set of 'bouncers / blockers' - that people can use, perhaps best as a chrome / ffx extension? That blocks content from various portals or individual posts or posters that you may not want to see.
Different people want to censor different things, and some want to censor the same things less and some more.. so by have an open source set of blocker bots people can discussion the blocking lists.. people can pick and choose what they see / not see..
That's on a basic beginning - I could see them also getting into 'unsubsbrcibe to stuff from server A and mastadon B' can take it further..
Since cloudflare came out as censor friendly - I've given up hope the big players will be all 'open info utopia' ever again. I think the best we can hope for is to get individual blocking bots and open up the web more. Otherwise we will have more censoring across the board and will succumb to whichever lowest common denominator of whoever gets to be in charge and make new rules.
This way some people can choose to filter sex workers and not furries and some can choose to censor furries but not sex.. Of course I am sure many people will choose some broad auto-block and stick with that, making their internet more like fbook's daycare.. but having transparent options will certainly have many people turning off the 'safesearch' and explore the whole world, or larger parts of it.
You are right in that we may need more tools for individual users to take control in this expanded universe.. but things like 'peter's ad block list' kind of things can be more beneficial than depending on MostPopular Mastadon Server being pushed to choose what to block for the masses and what to let through and the whack-o-mole that tends to create.
If they are open and clone-able / editable - some might want peter-and-pauls-block-more lists.. and some may like furfriendlyButnotPron lists.. and I hope many more options for choose your own censor.. rather than having them chosen for us as most have succumbed to.
My current random thoughts on the subject - hope others chime in to make it better and more of a possibility instead of just napkin notes.
Two basic things they could do is add some categorization and have users opt-in to topics for their public feed and limit the posts shown to English plus the languages that can be deduced from the user-agent data - it is after all one of the few legitimate purposes it can be used for.
Also, the Public Timeline is your local instance's. My local instance has no users that speak different languages than I do, so the timeline is without content I don't understand.
The Whole Known Network goes way too fast to be of use, but it too is mostly filled with English speakers (albeit mostly non-desirable sorts).
The pond is tiny, so certain non-mainstream communities that were driven out of other "real" platforms (i.e. platforms that are trying to sell you something) are a much higher percentage of the feed. But it's more or less just like Twitter, loudmouths tend to dominate, and 95% of the feed is garbage.
Instance homing is really the biggest problem Fedi has right now, instances are hard to characterize without camping them for some time, they're mostly small hence the loudmouth problem, and stability is an issue, they still come and go frequently. One of the problems with anarchy is that it's hard to manage.
Systems like such already been developed, for example there is one for Twitter made by third-party called "Twitter Block Chain" (https://github.com/satsukitv/twitter-block-chain).
Yes, it can block "unwanted" posters and bots when a correct list is given, but it could also sometime block innocent accounts when somebody is been mistakenly added to the list (Or that somebody just simply changed their behavior for the better).
For such system to work, the maintainer of the list must be trustworthy, which is the hardest part and almost always falls apart.
Add to the injury, it can also be very hard for others to detect mistakes sneaked into the list, as the list may contains more than 10,000 items, makes it impossible to be completely verified manually.
And what to do if a mistake is indeed discovered? Maintain an unblock list to automatically request the user to unblock? Now user has to maintain their own "Yes I manually blocked this guy" list to counter act the automatic one.
My suggestion is: Yes, you can use a shared block list if there is no other way (The Twitter case). But since Mastadon is open sourced, maybe let's try something else first while still can?
Please give this a little thought: Can a system be designed in such way that makes it really hard for their user to accidentally come across some unwanted posts (without having to block the poster)?
Would be nice to have something check for updated bots and discussions about them and put a flag in the browser bar maybe every two weeks -
Some bots will get better over time - but some people who liked the old one may not appreciate the changes and want to re-hatch the old one with a merged list minus X and Y but leave Z.
My thought on the blocker bots things in this thought process is that a few portals could spring up with the various bots listed and open discussions / comments about them will be available - and it should be a one-click to clone and rename / change.. so that people are encouraged to create new ones.
Having open source blocking and discussion with one click clone and change will hopefully create lots of transparency, and give end users for options for finer grained control -
The open discussions should have shape the various bots - something I have not figured is a process to auto-take and another bots updates and remove all instances of x and y terms.. and make Paulines-Copy-bot auto update when Pete's now block lists are added.
I too would prefer not to block people and servers and instead just hide by topics as a first line of defense.
Like mashable on fbook - I'd like to keep them in my feed, and block the stupid things they post about trump.. if I don't get a way to do this, I'll have to lose mashable completely.
I think the discussions on the bots would be educational for people as well. I myself have read articles that discuss some of the edge cases of bans for things like the ISPs in the UK and the health sites and such.. but I don't think most people see that kind of news.. and some may benefit from seeing discussion about other things that are unintentionally, or intentionally blocked.. and make decisions on the info and controversy instead of taking the one size fits most censorship each country seems to have.
I used to be a part of that community and it's got a hell of a poor signal to noise ratio and a major broken-step problem. There are some good ones, but all the others ever seem to want to do is fight.
I'm amazed they can arrange to get out of bed in the morning.
I'd be pretty open to a non-federated social network provided it was a co-op or a foundation running it along a wiki style funding model (eg annual mass begging).
Ironically, the only way to do that now is posting on twitter, asking people to reply with their mastodon accounts
That’s a feature, not a bug. Being able to post without fear of getting ToS’d and losing your entire audience is one of the major benefits of decentralized systems.
Now we just need to figure out how to solve for overzealous admins. I think the default for AP should become “bring your own domain”, even as a leaf user, so that you can seamlessly migrate instances if, for example, your web host or local admin takes issue with something you say.
A social justice warrior complained to the admin of my instance that I was conservative and they banned me.
That was my first and last foray into the federated socials. You trade a big corporate censor for a mom and pop censor, but none of them appear to actually be "free" (as in speech)
To be honest, I think your view of what "free speech" is, is a ridiculous extreme. Go use FreeNet. If I don't seem compelling, I've put together an essay to address this in more detail [0]
I am not associated with the W3C in any way, and had absolutely no hand in creating ActivityPub. Chris Webber and many others deserve that credit. I don't attend the SocialCG meetings either (which are open to all).
The most I can say is I've implemented a library implementation in Go (there are other Go projects), and I voice my opinion in the community.
> I am seriously disappointed by this dismissive attitude.
Dismissive? My apologies, that's not what I am going for. I'm precisely showing how certain folks' expectations in the free speech community were unrealistic and showing a mature technology that precisely delivers what they want.
Consider what ActivityPub is not: it is not a way to physically get your free-speech in byte form forcefully delivered to others on the network. That's what multiple free-speech folks have repeatedly drawn the line at when I poked and prodded what their disappointment stems from. Instead, to get this technological capability, one needs to switch to blockchain or FreeNet protocols as this is what they do. The former actually requires consensus whereas the latter doesn't! ActivityPub as a technology does not guarantee any of this.
I think free speech is important (I wrote a whole damn blog post about it, and here I am writing more), and I think there are important conversations to be had around it. But complaining about ActivityPub not being a censorship-proof technology ("I got banned from one instance for being too conservative") is not a productive discussion to be had. There's better ones out there.
I had new users land fresh from abandoning Twitter.
- New user, day one: This is neat! Hi everyone!
- New user, day two: Wow, there sure are a lot of ${slurs} around here.
- Me: We don't say that here. Don't do it again please.
- New user: I thought this was a free speech zone! Conservatives just can't catch a break!
I'm absolutely not saying this is what happened in your specific case. I know instances that quite possibly would block someone just for voting Republican, and maybe that's what happened to you. And if so, I'm sorry you had that experience. I have several right-leaning users who are polite and respectful, and I 100% defend their right to express their own opinions. But, I've personally seen a lot of cases where people were asked to stop being jerks, not because of their opinions, but because they were were acting like jerks, who then went on a rant about censoring conservative speech before rage quitting.
Just block them and give them no mind space.
What did these configuration flags become?
Just call it leaf, cheese, or poppy.
Cheese 2.0 that’s some killer tech
A link to the "main" instance, or a list of instances to join would help. Without that, I don't see the average person using it
Developers think "well, you see, any number of arbitrary clients can load the data and even impl their own UI features so a screenshot doesn't really make sense because...".
But people mainly want to know what that even looks like at all. Especially with how open-ended "social network" can be. That the screenshots just look like Twitter answers some preliminary questions.
Admittedly, this is dated, but is still valid, and should help you get a basic understanding of what pleroma is - including a few screenshots. I hope that helps!