Hacker News new | past | comments | ask | show | jobs | submit login

We have something similar to this, Aether. https://getaether.net. (code at github.com/nehbit/aether)

Always glad to see more eyeballs on the space, so I wish then the best. Here are a few differences I can see at the first glance:

- Aether is decentralised (as in torrent) this appears to be federated. That means Aether truly has no servers and every user is a peer, while federated means there are smaller ‘Reddits’ as servers that talk to each other.

- By proxy that means we can’t really have a web app unfortunately (working on it by the way of running a daemon on a raspberry pi) and they can - we need a native app running on your machine and seeding context to the network.

- By another proxy, this means Aether avoids the issue of having a ‘middle management’ in the form of the ownership of your home server that federated networks have. You are the home server, so no one can control what you see. We call this user sovereignty

- In Aether we have elections which elect mods based on popular vote and you control who is a mod, precisely because the ‘social compiler’ runs on your machine and allows you to compile it however you want. Two people with two different mod lists for the same community can see drastically different communities

- We have a mod audit log and have had it for a while - everyone’s mod actions are visible to everyone (this I think they also have)

- Lastly, we have made the decision to not monetise Aether itself and create a team communication app called Aether Pro, and monetise that. This creates a ‘Chinese wall’ between where we make our money and the P2P network, which means it’s a shield against drifting towards trying to make money from a social network. The code bases are separate but similar, so that also means work done on the Pro helps Aether as well. We have gotten some funding for the Pro, and we consider the P2P version a ‘marketing / goodwill expense’ in the context of that funding. That aligns us towards making sure Aether is long-term viable, well maintained and monetisation-free.

In contrast I think they’ve gotten money to work directly on this, which has both good and more hazardous sides. In summary, we opted for a long term structure that has less moral hazard (in my opinion, of course), in favour of a more stable app without a need for monetisation that has fewer, more stable releases.

For context, here's how a recent thread looks on my Aether client: https://i.imgur.com/45tXQEO.png




> By another proxy, this means Aether avoids the issue of having a ‘middle management’ (...) so no one can control what you see.

This right here is the main thing that will never let any fully-decentralized system become mainstream. Two problems:

- Most people do want "middle-management". They don't want to deal with security risks, technical issues, understanding how the protocol works just to be able to share memes and score points with their social peers. All they want is to open their browser, see what their friends/peers are posting and be done with it.

- This trade-off between federated systems/giving up control does not exist. A federated system can degenerate into a fully-distributed graph. Those that want to keep full control over their system can easily do with a federated system: they just run their own instances.

Decentralized systems for social networks fail the Zawinski test and do not provide one single use-case that can not be done with a federated alternative. I fail to see any benefit of pushing it except for buzzword investors.


> Those that want to keep full control over their system can easily do with a federated system: they just run their own instances.

Is running your own instance hard? Then at best you’ll inevitably have some users who lack the know-how or time to set up their own instance. At worst, federated systems often link identity to home instance, so you can’t switch to a new instance without giving up your profile. Or they may even require other instances to have a human agree to federate with you, which is a big ask for a one-person instance.

Or is running your own instance easy? So easy that anyone can do it? Then there should be no disadvantage in bundle that into the client app so that everyone does do it. But now you have a decentralized system.


> Then at best you’ll inevitably have some users who lack the know-how or time to set up their own instance.

Yes, and those users will use managed services, something that the "principled" decentralized community (not your keys, not your money/not your identity/etc) is completely against and invariably leads to re-centralization of the system around market players that go to serve this market. Case in point: Github, Coinbase, MtGox, Signal, any of the big cloud providers...

> At worst, federated systems often link identity to home instance

Why? I can have a domain name and move email providers freely. Same for XMPP, Matrix, websites in general, etc. The identity part of the system can be separate from the service provider.

If anything, this idea is more of an argument against decentralized services. It is an all-or-nothing approach: do you want to run this service with your identity? Great, then you need to be responsible in managing the service and secure your identity.

> Or is running your own instance easy? So easy that anyone can do it?

There is no such thing. Nevermind the case for those simply can not control the hardware where they run their systems, UI/UX of decentralized systems is always an afterthought. Even something as "easy" as bittorrent requires so much of a learning curve that most people simply do not want to be bothered to learn.

Besides, it's not just "running". It's keeping it up. Paying for operational costs. Decentralized systems by definition need to be able to do everything by themselves. There is no way to achieve any kind of economies of scale.

Worst of all: it's not having any one to blame/be responsible for things when it breaks. Oh, you got scammed into downloading a keylogger: fuck you, you lost all of your keys. Oh, you "just" bought something with Bitcoin from a site that seemed legit, but they delivered a counterfeit product? "Consider it an lesson in how to look for things online"

What I am trying to say is that decentralization vs centralization should be considered as a continuous spectrum of choices and trade-offs that need to be made by users. Federated systems allow basically everyone to be whatever is best for them on this spectrum, while this "decentralize all the things!" and treating it as binary choice does little to non-technical users and basically guarantees they will be confined in the walled gardens.


The trade-off is that when you run your own instance you have to then attract users to it for it to be useful, which burdens others.

In a fully decentralized network you can meet new people and moderate your own view of the world without putting any burden on others to adapt to what you want. Moderation can be done with a system like this: https://adecentralizedworld.com/2020/06/a-trust-and-moderati...


> The trade-off is that when you run your own instance you have to then attract users to it for it to be useful, which burdens others.

This really depends on the design. Email is "federated" but that doesn't require you to get anybody else to use your email server in order for you send or receive emails with them.

What I'd kind of like to see is a system that separates hosting and accounts from moderation.

So you have a host, like email, and a username on the host. Then you have a forum, which has operators/moderators (who are users), but the forum is host-independent. Maybe it only actually runs on a specific host at a given time, but the operators can move it without anybody noticing and anybody can use it regardless of who their own host is.

It makes it so you can be a forum operator without having to be a host.


Sorry, either you don't understand the concept of federation, or you are bullshitting me.

I can run a single-user Mastodon instance and follow people from any other instance. They can follow me as well. I can send emails from my personal server to anyone on gmail, and vice-versa.

Where do I need to "attract other users" to my instance? It's quite the opposite!


I thought you meant similar to hosting a forum or Lemmy like site.

With Mastadon if say I'm on another instance and the host of that instance blocks yours (because they don't agree with your politics or whatever) then won't I be unable to see your feed? I'd have to setup my own Mastadon instance to get around this? What if I'm not technically inclined enough to do this? Then I'm subject to the whims of the moderators of the instance.

What if I live in China and they block access to the biggest instances so I'm cut off from all the big communities and can't participate?

What if an instance of Mastadon crashes and the admins can't be bothered restoring it. As a user on that instance haven't you lost everything?

These are the problems decentralized networks are solving, being subject to the whims of other people.


> With Mastadon (sic) if say I'm on another instance and the host of that instance blocks yours...

First: Mastodon, with an "O".

Second: I already had this discussion before. This "blocking" of instances is something that is going on only on Mastodon, AFAIK, because most of the current members are conflating the idea of federation with tribes. They want to be insular at this point. This will change as soon as there are more people using ActivityPub like email or Matrix and stop associating the instances with the identities/ideologies of its members.

So, no. You won't have to "setup your Mastodon" instance to get around this. You can do it, but you also can just find a more professional hosting provider that is not managed by a fourteen year old or tweenagers that love to spout their love for diversity and yet can only tolerate any conversation that is exactly aligned with their existing preconceptions of their uniform peer group.

> What if I live in China and they block access to the biggest instances so I'm cut off from all the big communities and can't participate?

What if you live in China and they block the decentralized service altogether? What if they use the decentralized nature of the service and set up honeypots to find dissidents? "Decentralized" != "Private" != "Secure"

> What if an instance crashes (...) the admins can't be bothered restoring it.

If it is important to you, then (a) you run your own service or (b) you pay someone that actually cares about this. With a decentralized service, the only alternative you have is (a). Then not only you have to make this choice, but also everyone that you would like to join the network.

My point all along is that federated systems are already enough for those that do not "want to be subject to the whims of other people", while decentralized systems shut out those that don't care about it or would rather trust/delegate these concerns to someone else.

"Decentralized systems" bring no benefit that can't be had by federated systems and remove all sorts of free options from the potential users. It is limiting instead of liberating.


Care to explain the Zawinski test? Google gave me zip on it.


One does not link from HN to jwz site

Perhaps I shouldn't have mentioned it, given that he retracted it on the grounds that too many people subverted the idea to justify all of bad practices related to social software.

Anyway, archive is your friend: https://web.archive.org/web/20050217051819/https://www.jwz.o...


zawinski's law? Though not seeing how it is relevant to their point though.


> Aether is a relatively large app with an Electron and Go toolchain, at 100,000+ lines of code. Getting it to compile requires setting up a correct build runtime with the latest versions of Go, Node (for Electron) and C dependencies and development environments. Expect the initial set-up to take a few hours. Be patient!

Is Electron a hard dependency or is there a core lib that can be wrapped by the GUI framework of choice? And several hours of initial setup is pretty scary . Maybe providing a dev docker, snap or flatpak could get devs up and running much faster than that.

Other than that, I love the idea of a decentralized forum. If there are specs I'll have a look at them to see how the intricacies of operating something like is were solved.


Actually, we have recently improved on this, it’s probably now less than half an hour of setup, at least on Linux. The new guide is on the Github repo: https://gist.github.com/nehbit/4a8c3d81d543e85c9df974f521732...

We use Electron exclusively for GUI. The real app is a Go binary with a GRPC API. It’s all fully isolated, so if you don’t want to touch any Electron, you don’t have to. Use the API to build a CLI app, for example.

To be more specific, we have two Go binaries that we ship, one is the aether-backend that talks to the network, the other is the aether-frontend that compiles the content coming from the network into a social graph. Both are properly isolated and talk to each other only over declared GRPC APIs. I’ve tried very hard to keep it hackable that way.


There's a fully JavaScript implementation of gRPC[0] that you may be able to use should you implement a web app using Service Workers[1]. This would be installable for browsers in a manner that should provide long-lived access to the network.

0. https://www.npmjs.com/package/@grpc/grpc-js 1. https://developer.mozilla.org/en-US/docs/Web/API/Service_Wor...


> Both are properly isolated and talk to each other only over declared GRPC APIs. I’ve tried very hard to keep it hackable that way.

That's a great architecture! I look forward to hacking on it when I have the time!


Have you thought about implementing a decentralized, user centric moderation system instead of electing mods? Like this: https://adecentralizedworld.com/2020/06/a-trust-and-moderati...

Would this work with Aether?


The way it works in Aether is that we have a few rules on choosing what 'effective' mods you have on your view. From weakest (as in, most prone to be overridden) to strongest:

- Default mods, which are either the creator of the community or those that are assigned by that person

- Elected mods, mods which are chosen by the community. Election goes both ways, you can both be elected or impeached. For example, a default mod can be impeached by the election system, and that would render that mod a non-mod for you

- Mods you've personally chosen. Choosing someone to be a mod for you is your vote in the election.

So the system isn't 'enforcing' mods you haven't chosen onto you as a result of the elections. Elections only make the decision only if you haven't made a decision for that mod in either way — if you make a decision that is ironclad (for you, in your personal, local view), since nothing can override your personal vote for or against somebody. The more you vote in elections, the more you shape your own view of the universe.

The article is long, but what I can see there that is not implemented in Aether is the transitive property of trust, instead of having a vote which is binary, he seems to be advocating for a 0 to 100 trust, and the idea that trust of the people you trust means something to you. (Let me know if I got this wrong).

This is great in theory — and this was actually considered for implementation at one point. The issue isn't that it doesn't make sense but it is quite literally impossible to implement, since it makes it so that almost every trust decision made by someone on the network at some point in time affects almost all other entities, which leaves you with an almost entirely 'dirty' graph that you have to traverse in entirety and recompile.

This can be done on a centralised service since there is one graph to compile and everyone submits to it. However, in Aether, what we try to do is that we try to keep the graph compilation part on the user end, both because it's a P2P network, and also because custom graphs compiled on the client end is what allows the votes to be able to modify the graph structure itself. That sort of gradual outflow of trust across a social graph making decisions on what to show or not show for every single piece of content is an intense amount of computation to do for every new modification to the trust gradient.


That makes sense. With the trust system described trust is only calculated for you personally rather than calculating how much everyone trusts everyone else.

From the benchmarks [1] of a simple naive JavaScript version is can recalculate one persons trust in a huge network in just a few ms. With partial updates when new ratings come in it could be done even faster.

1: https://github.com/adecentralizedworld/decentralized-trust-d...


Yeah — trust level is only one component of a multivariate calculus that we call graph compile. So it's very possible for the trust only to take milliseconds when it's the only thing you compile with objects that only carry trust, but Aether compiler also moves the content around too. To give you a sense of the real world results, our initial compile takes multiple minutes even with binary (0 or 1) trust, even if only a vanishingly small portion of it is actually calculating trust. If an object is made dirty, regardless of the reason, it has to be touched, loaded into memory and processed. The disk is where you it the bottleneck. If your dataset fits into memory (mind that Aether has to work with computers with 4gb of RAM) then yes the whole thing is milliseconds. But once you start to do sequential reads on what might not even be SSD, you want to avoid any sort of dirtying if you can. Gradient Trust is one of the worst offenders in that almost any change to it dirties almost the whole graph.


How do you mitigate voting fraud?

It would seem very easy to just create a lot of accounts to vote or trigger impeachments (if that is a thing).


We have proof of work to rate-limit spam (of both content and signals), and there would be no reason for anyone to spam the network (for votes - for other things there are plenty of reasons) because anyone can get exactly the moderation they want by picking out their mods. Elections cannot override local selections — they exist as 'recommendations' to the local user, in the case the user has not made a selection.

That said, there is still quite a bit of power in controlling the view of those who can't be bothered to make a decision, so we make it so that an election vote only counts after the user actually first posted in that community 2 weeks ago. So if there's a flood of new votes, the mods can temporarily suspend voting process.

Lastly, the elections are not mandatory for all communities, so if a community is created as a 'monarchy', for the lack of a better word, the elections are not applied by default. This makes it so that there is no incentive for mods to keep 'temporary suspension due to vote flood' state indefinitely, since they can just switch to monarchy if they want to do that.

Mind that in that case, the user can still make choices, or even enable elections - the only thing that would change is that the default user would not get election results applied to the default mods. But if that user wants, it can still enable elections and vote, and by enabling that it would get the election results applied — but due to his or her own explicit choice, not by default.


This sounds pretty interesting, but is it a lot of work to moderate a home server yourself?

> You are the home server, so no one can control what you see. We call this user sovereignty

I’m wondering what I’d have to do to just bare minimum make sure no illegal content gets onto any hardware that I own. Just to use the obvious extreme example, I don’t want to see any illegal pornography, which in addition to not wanting to see I’d have to report to authorities, which I’d presumably have to explain the presence of, which I’m guessing worst case involves them confiscating my devices for some time. There’s a practical benefit to me in having some middle manager taking responsibility for making sure that never gets to my network.


All the content on Aether is text — it's pretty hard (but not impossible) to make text illegal. Of course what is on your computer is your responsibility, nothing changes that. There is a SFW list enabled by default that only shows the 'safe' communities to you in the app, but your app still communicates everything as of today.

However, this is actually the most common feature request we have right now, an ability to block certain communities from transmitting. We are converting the SFW list to a 'filter lists' feature, much like adblock filter lists. These lists can be whitelists or blacklists, and they will be able to control not just visibility, but also the receiving and transmittance of content as well.

So the expected behaviour is that if a community is in your blacklist, your computer will never fetch that content from that community by checking against its fingerprint. That should be helpful to solve this issue. We'll be providing a default whitelist as well.


I would like to know this as well. If it is clear how to do so, I'd gladly join.


I responded to the parent, sending this over as a notification: https://news.ycombinator.com/item?id=23694615


> we can’t really have a web app

Are you familiar with https://notabug.io/ ? IIRC this is decentralized.


At first I kinda found the idea of an Aether Pro (and I'd go so far as to say using the "Pro" moniker is rather misleading as it's kind of an entirely different product altogether!) existing kinda iffy, but after reading up what it truly was I think it makes sense to have something similar to that and avoid many common pitfalls when it comes to securing funding for an open source project, so kudos for that!

I do think both decentralized and federated platforms can coexist just fine. They serve slightly different needs and both provide alternatives to the centralized platforms that pervade the Internet these days.


You guys are on the right track with Aether. I love the features especially decentralized sovereignty and the moderation based on that. This needs to get adopted widely to stop censorship.


What does it mean the communities are ephemeral? Because reddit archives is one their strengths. Public Slack channels are lame to me because of their limits.


Sounds like there's some really interesting ideas here.

> Two people with two different mod lists for the same community can see drastically different communities

Reminds me of the 'sharding' idea in World of Warcraft. I'm really curious if you'll end up with issues of 'social dissonance' where your perception of a community differs drastically from someone else's because you literally see different content, and if that affects how people engage with the community.

Also, it seems like with user sovereignty and decentralization, that there will be various objectionable or even vile communities is inevitable, right? Is there a plan for how to deal with that, should Aether ever become popular enough to get more mainstream news attention? I imagine responding to tech blogs with, "yes, there are white supremacist sub-communities, but you don't have to see them if you don't want to" won't come across as a very satisfying answer from their perspective.


> I imagine responding to tech blogs with, "yes, there are white supremacist sub-communities, but you don't have to see them if you don't want to" won't come across as a very satisfying answer from their perspective.

It's always irked me that most people seem to think that people with different politics to them shouldn't be allowed to communicate.


1. Referring to them as just "different politics" covers up the hateful, violent ideologies we're talking about.

2. Wanting them to be banned from a particular platform isn't a general ban on communication. Private communities are under no obligation to tolerate the intolerant.


The domain-name removals, the mastercard and visa bans, and the app bans are the actions of private companies in name only. What this is, despite pretending otherwise, is an exercise of a form of state power. When exercised against a nation, we recognize it as a sanction. But when exercised against an individual, it is something different. In reality, there is no practical difference between this and state censorship in China.

Personally, I don't object to this kind of power in principle, I just think that it is used in the wrong direction in the United States. Rather than being used to target and remove individuals who promote instability, it has been used to target and remove individuals who promote stability. Much of the United States now believes property destruction is acceptable if it achieves honorable ends.


> The domain-name removals, the mastercard and visa bans, and the app bans are the actions of private companies in name only.

No, they're completely the actions of private companies.

It turns out, private companies exist in a mostly-shared culture and often have similar ideas about how to behave. Currently -- thank god -- deplatforming blatant bigots is generally agreed upon as A Good Thing. No conspiracy here, just good sense.

> Rather than being used to target and remove individuals who promote instability, it has been used to target and remove individuals who promote stability.

Seriously? White supremacists are now "individuals who promote stability"?

> Much of the United States now believes property destruction is acceptable if it achieves honorable ends.

I mean, yeah, the US has always believed that. The country had basically two starting points, after all: stealing the natives' land, and then later on destroying property as part of a protest.


> It turns out, private companies exist in a mostly-shared culture and often have similar ideas about how to behave. Currently -- thank god -- deplatforming blatant bigots is generally agreed upon as A Good Thing. No conspiracy here, just good sense.

It currently is recognized as a good thing, but it wasn't before. Before the consensus was "I may disagree with what you say, but I'll defend to the death your right to say it." That said, a consensus cannot be defended simply because it has previously existed.

> Seriously? White supremacists are now "individuals who promote stability"?

I'm talking about people who opposed defunding the police. In a healthy society, people who supported defunding the police would have been fired from their jobs and sanctioned, but the opposite has happened. 'White supremacy' has been redefined to include fundamental state structures that are required for the functioning of society.

> I mean, yeah, the US has always believed that. The country had basically two starting points, after all: stealing the natives' land, and then later on destroying property as part of a protest.

The United States does not need to justify its existence. Almost every nation in existence today was formed on the backs of millions of deaths, and most of the natives died through communicable disease that was inevitably spread once any european landed on the North American shores. The only major mistakes the United States ever made were 1) allowing the establishment of slavery in North America and 2) trying to spread 'freedom and democracy' around the world.

Otherwise, the United States is responsible for almost all fundamental technology that the developed world employs and may (hopefully) be responsible for spreading human life to another planet. If the latter happens, then that alone justifies the sins of the United States.


[flagged]


Describing journalists concerned about bigoted communities present on your platform as "a mob" is certainly a hot take.


Allow me to add one of my own: Journalists' jobs aren't to share their "concerns", it's to report the facts. So much of the media's pathology is a result of the problem that news doesn't even try to be impartial anymore.

If you want to "share your concerns", the place to do that is an op-ed, or a blog post, or twitter, or something. But it isn't journalism anymore.


News never was impartial. Just by selecting what to report and the order in which you report things you influence the reception of the world. I'd argue that it's impossible to have objective news.


That's not what I'm talking about here. We've gone beyond mere story selection to actual agenda-pushing. I.e punditry, not journalism.


The word 'bigoted' is getting thrown around all over the place in this post and most commenters, including this one, seem to have never actually looked it up in the dictionary.

Bigoted does not mean right-wing, objectionable, or things one disagrees with.

Bigoted means unwilling to change one's opinion. Which certainly applies to the hard left wing end of the spectrum just as much as it does to hard right.

Bigoted: obstinately or unreasonably attached to a belief, opinion, or faction, and intolerant towards other people's beliefs and practices.

If anything, so-called journalists using a platform to express 'concern' over things they disagree with is a better fit for the term. The job of a journalist is to report, not to preach their own brand of politics or dislikes or concerns.


> The word 'bigoted' is getting thrown around all over the place in this post and most commenters, including this one, seem to have never actually looked it up in the dictionary.

On the contrary:

"""One who is strongly partial to one's own group, religion, race, or politics and is intolerant of those who differ."""

It applies very well to people intolerant of other groups, ethnicity or race.


It's not restricted to ethnicity, groups or race. Bigotry is merely the refusal to entertain different beliefs; whatever their groupby factor may be. Cherry-picking parts of the definition to meet one's idea of what it 'should' be, is the actual meaning of bigotry.

Please refer to the Oxford dictionary definition if you're still confused.


Everybody can see what little game you are playing.


Well, I guess there's a little bit of a bigot in everyone! It may sound like an insult but really isn't.


No.

> Definition of bigot

> : a person who is obstinately or intolerantly devoted to his or her own opinions and prejudices

> especially : one who regards or treats the members of a group (such as a racial or ethnic group) with hatred and intolerance

https://www.merriam-webster.com/dictionary/bigot


Not sure what the 'no' is in regard to. That's entirely aligned to my comment.

Or did you think obstinate devotion to opinions and prejudices only manifests in the the group of people you happen to disagree with?


You focused on unwillingness to change one's opinion. That's certainly a definition, but the more common one in use is about prejudice, especially prejudice based on inherent traits like sex or race or sexuality. I'm sure you're aware of that, which is why it's confusing that you're acting as if you're not.

I don't dispute that it's extraordinarily difficult to get people to change political opinions, especially on the fringes. That was never my contention, I made that pretty clear with the example of bigoted communities I chose being white supremacists. Not sure how you could misread that, unless you wanted to.


[flagged]


> It's the inability to accept new viewpoints

No, it's not just that. I don't understand why you're being intentionally obtuse here, other than that the framing helps your viewpoint if you can trick others into accepting it.

Words can have more than one definition. Yours isn't the one I was using, no matter you wish it was otherwise.

Again, since you apparently missed this the first time around, or intentionally ignored it:

> especially : one who regards or treats the members of a group (such as a racial or ethnic group) with hatred and intolerance


"When I use a word," Humpty Dumpty said, in rather a scornful tone, "it means just what I choose it to mean—neither more nor less." "The question is," said Alice, "whether you can make words mean so many different things." "The question is," said Humpty Dumpty, "which is to be master—that's all."


Excellent. I am trying this. Thank you.


Please do! We have a small, friendly community. Always glad to see new faces. Let me know if you have any issues.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: