Yeah, I'm not a fan.
Feels like this project is trying to get popular off of Freenet's name recognition rather than its own merits.
koolba 2 days ago [-]
The submitter is the creator of the original Freenet. If anybody gets to decide what we will call Freenet, it’s him.
pikdum 2 days ago [-]
I'd agree if this was more like a Freenet v3, but it's an entirely different project with completely different goals.
Alex_toani 1 days ago [-]
So what's the different between Hyphanet and Freenet? Only some anonymity?
I have try the River chat. I'm not sure how to find a people chat in here. It's hard.
sanity 1 days ago [-]
How are the goals different?
nextgens 1 days ago [-]
I've abstained form interfering until now... but have you honestly forgotten?
Please explain how "the new freenet" tackles censorship resistance.
today:
"Hyphanet is peer-to-peer network for censorship-resistant and privacy-respecting publishing and communication."
the new freenet:
?!?
sanity 1 days ago [-]
> Please explain how "the new freenet" tackles censorship resistance.
Primarily through the same core mechanism as the original Freenet design: decentralization and relaying requests through multiple peers such that no individual peer sees the entire request path.
The new design also supports pluggable anonymity systems such as mixnets and onion routing. In some respects these are stronger than Hyphanet's approach because relay selection can be chosen intentionally by the user's node rather than emerging implicitly from network topology.
The main architectural change is that anonymity is no longer treated as a single mandatory mechanism baked into every layer of the system. Different applications can make different tradeoffs depending on their requirements.
qwezxcrty 19 hours ago [-]
First, thank you for creating this project. When I was a young high school student in China, I tried all different kind of tools to evade internet censorship, including Freenet (although admittedly with little success, there was never enough peers to connect to and/so it was too slow to download anything meaningful).
My question is whether freenet is designed to be resistant for active adversaries with deep packet inspection capability, particularly like the Chinese firewall that is also observed to do statistical timing analysis of packets? Is there any possibility to apply obfuscation to the peer to peer connection? And is there any mechanism to aide peer discovery (DHT?)
sanity 19 hours ago [-]
> First, thank you for creating this project.
You're welcome :)
> My question is whether freenet is designed to be resistant for active adversaries with deep packet inspection capability, particularly like the Chinese firewall that is also observed to do statistical timing analysis of packets? Is there any possibility to apply obfuscation to the peer to peer connection?
Freenet's transport protocol is a custom encrypted protocol over UDP, but it is not currently designed to evade sophisticated deep packet inspection or timing analysis by state-level adversaries like the Great Firewall.
That said, the transport layer is modular, and we would absolutely accept contributions adding traffic obfuscation or pluggable transports, subject to the usual tradeoffs around latency, bandwidth overhead, and resource usage.
> And is there any mechanism to aid peer discovery (DHT?)
Freenet uses a distributed small-world routing topology for peer discovery and efficient message propagation. It isn't a conventional Kademlia-style DHT, but conceptually it serves a similar purpose.
The network is designed to self-organize into a small-world topology.[1]
[1] See the "Distance" graph at the bottom-right of the circle visualization - http://nova.locut.us:3133/
SiempreViernes 1 days ago [-]
Are there any success stories about Hyphanet's censorship resistance mattering? Beyond serving run-of-the mill copyrigh violations (and probably child porn) I never heard anything about the content on Hyphanet.
Even now when people in the US are organising against a fascist regime it's mostly WhatsApp and maybe Signal.
ArneBab 1 days ago [-]
There actually are: among the darknets, Hyphanet is the only one that has a main use for "deviant data resistant to censorship":
> What are the content patterns on Freenet? Four patterns were identified. Freenet is (1) an archive of deviant data resistant to censorship (2) a space dominated by content associated with masculinity, (3) a nonmarket space where commercial exchange is non-existent, and (4) an empty space with many requests not returning information, and many flogs abandoned. We asked a third question: How does the analysis of Freenet inform current understandings of hacker culture? Freenet, we suggest, can be understood as a type of digital “wilderness”. It is a singular darknet space, supporting a distinct set of hacker practices
Practically: people in Hyphanet blog about stuff they dare not blog about in the clearnet -- anything from radical politics (from all kinds, left, right, libertarian, …) over personal opinion pages to wilder stuff like magick (yes, in that spelling).
Not to forget the Russian Poet who’s posting daily poems with the goal (as he wrote) that those poems still survive after police knocked at his door.
(besides talk about hyphanet and privacy tech)
So yes: I don’t understand the downvotes either, because it’s a legitimate question with a pretty clear answer: yes.
nextgens 1 days ago [-]
Thank you for the downvotes.
You're moving the debate here. The question was "How are the goals different?" from the project leader (who ought to know better), not whether moving them makes sense.
SiempreViernes 1 days ago [-]
Well I guess you think the important part of the goals is to make censorship technically difficult, without regard to if the software actually facilitates political speech at all.
Others could argue that software nobody uses for its stated purpose has failed; but you are right that is technically a different discussion than the one you started.
sanity 1 days ago [-]
> The question was "How are the goals different?"
A question you haven't answered.
cess11 1 days ago [-]
"Anonymity: While the previous version was designed with a focus on anonymity, the current version does not offer built-in anonymity but allows for a choice of anonymizing systems to be layered on top."
How is offering the user more choice with respect to anonymity changing the goals of the project?
KaiserPro 1 days ago [-]
the _point_ of freenet was that you could anonymously share/store information. For better or worse, that was the point of it. It also drove the UX and tradeoffs for the network.
It was slower than Kazaa/bittorrent, but it was far harder to work out who was shareing what. (if memory serves it also chunked files up so they weren;t on the same machine, but that could be me misremembering)
sanity 1 days ago [-]
> the _point_ of freenet was that you could anonymously share/store information.
As you can with the new Freenet, you just get a menu of options instead of being forced to use a one-size-fits-all approach to anonymity.
ArneBab 1 days ago [-]
yes, it chunks files, and aggregates multiple chunks per packet, and pads packets it sends around, so size analysis by the ISP cannot trace the path.
cess11 1 days ago [-]
I kind of see "focus" in the FAQ and "goals" in this thread as interchangeable.
It would surprise me if this would not be a common interpretation of these texts alone among the readers here.
As for the general reputation of the OG Freenet in this lineage, to the extent I'm aware, anonymity was pretty much the defining characteristic. More or less everything else in the user experience suffered to some extent compared to other chat and file sharing services because of this "focus".
sanity 1 days ago [-]
If we're doing archaeology, my original 1999 paper was called "A Distributed Decentralized Information Storage and Retrieval System".
cess11 20 hours ago [-]
Fine. Page 6, which is Chapter 2, under the heading Aims, there is a numbered list. What is the second item in this list?
sanity 18 hours ago [-]
If you have a point to make you should make it.
cess11 5 hours ago [-]
I'll quote it then:
2. It should provide anonymity to b oth providers and consumers of informa-
tion
sanity 3 hours ago [-]
And? The new Freenet provides a menu of options for anonymity which is strictly better than imposing the same (imperfect) anonymity solution on everyone.
GJim 1 days ago [-]
> If anybody gets to decide what we will call Freenet, it’s him.
Perhaps.
Though reusing the name for an entirely different project with a different codebase is disingenuous to say the least.
That won't do his reputation any good, especially in a field where reputation matters.
sanity 1 days ago [-]
> Though reusing the name for an entirely different project with a different codebase is disingenuous to say the least.
Same project, same goals, and it's not even the first time we started with a fresh codebase - we did it in 2008.
> That won't do his reputation any good, especially in a field where reputation matters.
This drama never comes up anywhere except HN where it seems to be the obsession of a small number of vocal people who never have anything to say about the substance of the project. I don't lose any sleep over it.
GJim 24 hours ago [-]
> Same project, same goals
Many on here beg to differ.
sanity 23 hours ago [-]
And yet I still haven't seen anyone explain how the goals actually differ.
Interestingly, there seems to be very little overlap between the people giving substantive technical feedback and the people most upset about a 3-year-old naming controversy.
DANmode 1 days ago [-]
That’s not how contributing money to the success of a specific thing should be able to work at all.
cheesecompiler 2 days ago [-]
Does he though?
1 days ago [-]
serf 2 days ago [-]
they most def have a choice as to what to broadcast about..
sanity 2 days ago [-]
> Notably this project was conceived by a backroom decision to dump the original Freenet development team's work,
This is a false narrative, from the Freenet FAQ[1]:
Why was Freenet rearchitected and rebranded?
In 2019, Ian began developing a successor to the original Freenet, internally named “Locutus.” This redesign was a ground-up reimagining, incorporating lessons learned from the original Freenet and addressing modern challenges. The original Freenet, although groundbreaking, was built for an earlier era.
This isn’t the first time Freenet has undergone significant changes. Around 2005, we transitioned from version 0.5 to 0.7, which was a complete rewrite introducing “friend-to-friend” networking.
In March 2023, the original Freenet (developed from 2005 onwards) was spun off into an independent project called “Hyphanet” under its existing maintainers. Concurrently, “Locutus” was rebranded as “Freenet,” also known as “Freenet 2023,” to signal this new direction and focus. The rearchitected Freenet is faster, more flexible, and better equipped to offer a robust, decentralized alternative to the increasingly centralized web.
To ease the transition the old freenetproject.org domain was redirected to hyphanet’s website, while the recently acquired freenet.org domain was used for the new architecture.
It is important to note that the maintainers of the original Freenet did not agree with the decision to rearchitect and rebrand. However, as the architect of the Freenet Project, and after over a year of debate, Ian felt this was the necessary path forward to ensure the project’s continued relevance and success in a world far different than when he designed the previous architecture.
> The new "Freenet" does not have anonymity as a design goal anymore,
Because the new Freenet will have a menu of anonymity options rather than committing to a one-size-fits-all approach, while also addressing the issue of illegal content[2].
Gee, I can't imagine how that mailing list could ever be toxic.
raffraffraff 1 days ago [-]
If his definition of woke mind virus is "identitarianism", then it's agree that it's fucking awful. But I wouldn't call it "woke mind virus".
Identitarianism is a cancer, that has been fed via social media algorithms. We seem to have invented a machine for rewarding all of the wrong incentives. Who would have thought that phenomena like audience capture & polarised thought bubbles would be in the palm of the hand, directing thoughts and forming unbreakable opinions on an array of issues that otherwise wouldn't even be on the radar?
I don't think that this is a left, right or in between thing. Identitarianism had infected the entire political spectrum.
BTW: Perhaps I'm wrong but I don't take the Wikipedia definition of "identitarian movement" and identitarianism. I'm thinking entirely about identity politics. "If you're associated with person X you must be Y", or "If you believe A you must be a B". Highly policed thought bubbles. Ostracism. Cancelling.
As a result, today, with technology that can enable mass communication of thought, there are important conversations that can no longer happen in society.
dyauspitr 1 days ago [-]
As your average progressive, I agree that I don’t like identarianism. When you have 8-15 years old putting a lot of effort into defining themselves as a “non binary, trans feminist pansexual” it gutturally feels wrong. These kids should not be wasting their time and energy on asinine pursuits like this at that age over performing well academically and over developing their physical prowess. I preferred the 00s where it was generally considered taboo to talk/ask about ethnicity/religion/sexuality.
Unfortunately with that perspective, I end in in the same camp as unabashed bigots and real Nazis.
9 hours ago [-]
raffraffraff 8 hours ago [-]
Yep. This situation doesn't do the "cancellers" much good either. What they want to do is eliminate the 'evil person' from society. Wipe them from social media. Block them. Even get them fired. Make them disappear.
But here's the problem. This whole phenomenon is most prevalent in western style democracy. You cannot take that person's vote. You can engage with them and try to change their mind (but also be open to having your own mind changed too, otherwise it's a disingenuous enterprise). Or you can eject block and cancel. If anything, that just drives them further from your social/political group. Hence the person who you blocked and cancelled starts to look around at the other "so called evil people" outside the bubble, and realise that many of them might be refugees from pleasantville , just like you. You can only see your former bubble after your pushed or pulled out of it.
Bubbles can suck people in, but they can also push people out into the gravitational pull of other bubbles.
dyauspitr 7 minutes ago [-]
Humans tend towards being tribalistic. All ideas are not equally received because in my opinion some ideas are easier to accept because of that biological basis. We should all know that being tribalistic (own race/ethnicity/religion) has generally and continuously throughout history caused most of the world’s ills. From that perspective I’m tentatively in support of cancel culture. It seems like a non violent way to suppress ideas that groups easily uptake though deep down we know that those ideas are wrong and counterproductive.
sanity 1 days ago [-]
[flagged]
angoragoats 24 hours ago [-]
This is blatantly false.
* You made the mailing list post on 22 Jan 2023.
* Elon Musk first used the phrase (on Twitter, at least) on 19 Dec 2021. [0]
* As of May 2022 at the latest, he was regularly using it in tweets, including ones with tens and hundreds of thousands of likes. [1][2][3]
* By the end of 2022, "woke mind virus" was well-known enough that other users were cracking jokes about it. [4][5]
Apparently you follow him a lot more closely than I do, nonetheless I stand by my point even if I might use different words today.
angoragoats 22 hours ago [-]
I don't follow him at all, and in fact I try to stay as far away from anything involving him as possible. But your claim didn't pass the smell test, so I looked it up. You might consider doing the same before making easily-disprovable claims in the future; at least in this thread it seems to be a recurring problem for you.
sanity 20 hours ago [-]
Fair enough, I misremembered the timeline. My broader point was about identitarianism and ideological conformity, regardless of what terminology I used at the time.
tardedmeme 1 days ago [-]
Why is it always people like this who run projects that should be good? SimpleX, Xlibre, Freenet Locutus, that's three, and I'm sure there are more.
Edit: do they all like the letter X, too? I think in this list it's just a coincidence, but maybe?
Wild theory: maybe it's because in order to stay focused, passionate and dedicated to a project, you have to have a passionate mind dedicated to a narrower viewpoint. The more open-minded you are, the more likely you accept that detractors might have a point, and then increasingly realize that it's impossible to please everyone.
sanity 1 days ago [-]
Thank you for putting me in such great company!
SuperNinKenDo 1 days ago [-]
Disagreeable, passionate people are passionate about doing projects that go against the grain. It's really obvious to anybody actually asking the question instead of just being rhetorical and not giving it any actual thought. The answer is a commpetely obvious one, but one which makes some people uncomfortable, such that they'd rather not confront it, lest they have to confront its implications.
1 days ago [-]
sanity 2 days ago [-]
Not sure what you mean but I stand by every word I said in that thread.
outside2344 2 days ago [-]
A wise boss of mine, after reading a set of threads that I wrote like this, asked me to go think for a day on the difference between "being right" and "being effective."
Some of the things you say in these threads might be "right" but I can assure you that many of them are not effective, which is counterproductive to the goal you are trying to achieve.
sanity 2 days ago [-]
I prefer to say what I believe to be true rather than live in fear of how people looking to take offense might misconstrue something.
A culture where people are expected to constantly self-censor to avoid bad-faith interpretations is unhealthy and corrosive.
trinsic2 1 days ago [-]
This reminds me of something someone said. Something about assume everyone is coming from a place of good intent. Even if they are not, you can communicate with people more effectively without bringing in a form of bias that ends up infecting everything.
Just because you have a belief about something doesn't make it right to always assume the worst from people and that you always have the best answer.
I tend to avoid people that don't come from a place of good faith. And I feel that attacking people because you might be right about something is coming from a place of bad faith and isn't always the best course of action. There is a place for that, when it comes to your freedom being violated or something, but when it comes to having discussions with people, we are all human. Ego can be a determinant.
sanity 1 days ago [-]
[dead]
KaiserPro 1 days ago [-]
> I prefer to say what I believe to be true rather than live in fear of how people looking
Again, as we are wondering into tumblr style debates here (ie not listening and just saying what you think they said)
There is a difference between being "right" and being "effective"
Or to put it another way: "perfect is the enemy of good"
However I will break it down a bit more. You agree with me that there is such thing as a horizon of "acceptable opinion" for people? Some have larger windows, some much narrower.
If we agree on that, I would ask, what happens if someone goes in hard (rhetorically) with a viewpoint that is outside of "acceptable opinion"? You begin to discount their opinion, regardless of evidence. Or it requires a much high bar to accept _any_ opinion from that person.
Which leads back to the original point, you may be correct, but you are unable to persuade anyone else that you are correct, because you are not speaking the same language and gently pulling them to your viewpoint.
Hence the "you can be right, or you can be effective"
2 days ago [-]
angoragoats 2 days ago [-]
I, for one, don’t think I’ve misconstrued anything — you’ve shown exactly who you are relatively clearly in those posts.
sanity 2 days ago [-]
Sure, then just avoid me and I'll avoid you and we'll both be happier.
angoragoats 2 days ago [-]
[flagged]
2 days ago [-]
bglusman 2 days ago [-]
You can stand by things you said but also learn from them/from people’s responses to them…. For instance, you declare someone’s response virtue signaling… This hit me in a funny way, partly because it’s valid, it’s true, there is a lot of signaling that goes on you learn to see, virtue and otherwise… but also because of how insidious a criticism it is, because it reframes a debate away from correctness and towards who said it, whether they’re posturing…
I think it’s a category error and an ad hominem attack to bring it up in a debate with someone. It doesn’t mean your wrong or can’t still beleive they were virtue signaling, if that’s what you mean by standing by what you said, but more than one thing can be true and that being your reaction is not honest engagement with the criticism… I don’t care think it’s about the joke very much, it’s not especially funny but not all humor has to be, and I don’t love their reaction to it either, but I think you’re confusing the feedback you’re getting here and there and probably elsewhere that your opinions should change… a sibling comment spoke of being right vs effective, and there’s something to that, but there’s also being right vs having a growth mindset, about being open to genuine conflict that sometimes brings new perspective or insight… But that doesn’t happen when one side shuts down the other with ad hominem attacks or uncharitable assumptions. To be fair, it doesn’t happen online in mailing lists or discussion forums at all very often. Maybe you only get these kinds of reactions here and when people seem more real to you in person you engage differently… I know most people engage differently online than in person, and different pseudonymously than using real names. Someone else here compared you to Linus, and there’s probably something there? There’s no doubt you brought some vision and insight to both these projects, as he did, but something changed for him some years back that was a growth moment and caused him new perspective on how he engaged with people online. The same could still happen for you, and it wouldn’t mean you were giving in to a “woke mind virus”, it would mean you were growing.
bglusman 1 days ago [-]
I can’t respond to your response below but I fully agree “a lot of online criticism is not actually about truth-seeking or honest disagreement”, but I believe by ignoring the principle of charity, you undercut your own credibility and value. You may be able to show people how and where they’re in the wrong by demonstrating how THEY’VE made motive and framing the entire point, WITHOUT personally ascribing that as necessarily being a character weakness or hypocrisy or unconcern for the truth, but perhaps just a error on their part as well all make sometimes… just my $0.02
sanity 1 days ago [-]
You need to remember the context.
I was in the midst of obviously baseless allegations being made against me, not because of anything I actually said but because some very nasty[1] people disagreed with a naming decision I had made.
If you ever find yourself in that situation you are way past the principle of charity.
I'm not saying I couldn't have handled it more gracefully and probably would today, remember this was an obscure mailing list post from 3 years ago that someone dug up.
[1] This is not to suggest that everyone who disagreed with my decision behaved badly, it was a small minority
avwert 1 days ago [-]
HN is full of those types of people, always wanting to tear others down over perceived offenses while contributing nothing much themselves.
somerandom2407 1 days ago [-]
I just want to quickly jump on what you said about Linus. I know a lot of people look at his change and see it as a "growth moment", but my view is that he was forced to change by a growing body of people who take relatively extreme actions against those not seen to be towing the line. There was another group of people like this in history. We rightly condemned that evil group and their actions, and we were once more tolerant and open-minded towards one-another as people. I miss those days.
happymellon 1 days ago [-]
You think that Linus changed because of threats of violence?
somerandom2407 1 days ago [-]
I think it starts with social coercion, intimidation, exclusion, economic pressure and ostracism long before it builds into the confidence to take more overtly violent measures. I don't know him, but it certainly appeared as though he succumbed to these pressures, given the timing of things. I hope people doing these things take some time to reflect on their actions and how closely they follow a dark path we've seen before.
sanity 2 days ago [-]
[flagged]
subscribed 2 days ago [-]
If you think this is a correct communication style for someone who thinks they're a leader, I suggest getting an assistant to write your correspondence, or maybe some socialisation bootcamp.
This is grim.
If you stand by it I'd say good.... luck, yeah, good luck, you're singlehandedly the gravest enemy of the project.
sanity 2 days ago [-]
Yes, I stand by what I wrote. I'm not going to pretend otherwise because someone dug up an old mailing list post.
If you think a specific statement was wrong, harmful, or dishonest, then explain why. I'll wait.
outside1234 2 days ago [-]
It is hard to take anyone seriously that says “The woke mind virus.”
That is what is wrong with it.
sanity 2 days ago [-]
If the use of a single phrase in an obscure three year old mailing list post is enough to make you dismiss someone entirely, that probably says more about you than it does about me.
foltik 1 days ago [-]
> a single phrase in an obscure three year old mailing list post
> I stand by every word I said in that thread
sanity 1 days ago [-]
Correct, I don't respond to demands that I disavow my own words, even if they weren't the words I'd use today.
subscribed 1 days ago [-]
If you said "vaccines cause autism" it does the same. It's a pattern, a symptom of the deeply unbalanced and, ironically, non-free thinking.
A warning sign.
Look, if everyone around tells you says it sounds like a donkey, looks like a donkey and walks like a donkey, maybe check with a vet?
It's not a conspiracy and not that hard. You'd be embarrassed if you u saw what we see. And indeed, you destroyed the credibility of the project with that.
sanity 1 days ago [-]
[flagged]
cynicalkane 1 days ago [-]
> "If you think a specific statement was wrong, harmful, or dishonest, then explain why"
> someone picks a specific statement
> "If the use of a single phrase... is enough to make you dismiss someone entirely"
Bro, you asked for a specific statement. Was GP actually supposed to provide N specific statements, where N is a hidden number known only to you?
sanity 1 days ago [-]
How was that "wrong, harmful, or dishonest" - specifically?
cynicalkane 1 days ago [-]
Why would I answer that when you already said one statement being wrong doesn't matter? If one statement being wrong doesn't matter then why are you changing your mind and asking? Would there be any point in replying?
I've met a lot of folks in software who think contradicting themselves in order to "gotcha" the other person is some form of being clever. You can't really have success reasoning them out of it; they think being incorrigible is the same as winning.
sanity 22 hours ago [-]
> Why would I answer that when you already said one statement being wrong doesn't matter?
I never said that.
outside2344 1 days ago [-]
Your goal, I think, is to build a movement around Freenet.
How does bringing in "the woke mind virus" or "virtue signaling" into a technical conversation help build your movement vs. cause people to tune out?
sanity 1 days ago [-]
I didn't bring in anything, someone dug up and linked to 3-year-old out of context posts to a mailing list - I explained the context.
pessimizer 1 days ago [-]
You don't understand. All they have to do is repeat what you've said with a snarky tone, tag it with an extreme insult, then imply that it makes you unfit to be employed, even if you are self-employed. Your duty is to apologize, and promise to do better.
Specificity is literally gaslighting.
angoragoats 21 hours ago [-]
It's wrong because a "woke mind virus" literally doesn't exist, and you just made up the concept, or more likely appropriated it from a Nazi-salute-slinging billionaire whose brain has turned to mush.
It's dishonest because it pretends that people behaving in a way that you don't like are somehow infected by some (literal or metaphorical) contagion, when I am not aware of any evidence that this is the case.
I'd be delighted to be proven wrong on either of the above with studies or other serious sources. I'll wait.
sanity 20 hours ago [-]
It refers to Critical Social Justice ideology. There are entire books, academic papers, and debates about it from across the political spectrum.
angoragoats 15 hours ago [-]
I understand what Critical Social Justice is, and it is not in any way a virus either literally or figuratively. Perhaps I wasn't clear, but I was asking for sources establishing that such a thing as a "woke mind virus" exists. I doubt there are any serious sources which frame critical social justice as such, but once again I'd love to be proven wrong on this. I'm still waiting.
unconed 4 hours ago [-]
Woke lost, because it infected companies, universities and other organizations. It prompted entitled idiots like cited above to go into projects started by others, assume eminent domain, and attempt to take it over with slander and defamation. Always with the same script, pretending to defend while engaged in an unprovoked and drawn out attack.
See the cases of:
- The Ada Initiative
- DongleGate
- James Damore
- Bret Weinstein and Evergreen state (there's even a documentary by Mike Nayna about this)
Just to name a few.
Hyperventilating over the phrase "woke mind virus" or calling Musk a nazi a few dozen more times will not work.
You're the square, and your favored ideology lost.
We now even have BlueSky serving as the verifiable echo chamber of the idiots, and it's absolutely hilarious how they just can't stop attacking each other over there.
Calling for sources while questioning one of the most visible forms of social activism of the last decade is pure gaslighting btw.
angoragoats 3 hours ago [-]
More claims without sources? Useless.
And no, asking for sources is not gaslighting, no matter how much you say it is. It’s important to me that my beliefs are backed by evidence, and so you’ll have to forgive me that I just can’t assume that “a woke mind virus is a thing that exists” is a valid claim.
@sanity posted a sibling reply which I can’t reply to because it’s [dead] for some reason. In that reply they do give a couple of examples of recent literature that they say supports their claim. I will freely admit I’m not familiar with the work they’re citing so I’m going to look into it. Upon a brief look at a summary of the Lukianoff and Haidt work, I don’t think it actually addresses the claim which I was asking for sources for, but I will reserve judgment until I read it.
sanity 3 hours ago [-]
[dead]
evilos 2 days ago [-]
That phrase is on par with "chemtrails" and "vaccine truther" with its ability to vaporize one's credibility, if used unironically as OP did in those emails.
sanity 2 days ago [-]
Your need to sort people based on trigger phrases says it all.
hn_go_brrrrr 1 days ago [-]
No, it really doesn't. You're reacting super defensively throughout this entire thread. It's a really bad look.
pessimizer 1 days ago [-]
He's actually being measured and fair, even in the face of aggressive insults from strangers.
1 days ago [-]
evilos 11 hours ago [-]
It's not the phrase that's the issue, but you knew that.
sanity 3 hours ago [-]
What is the issue? Please be specific.
spankalee 2 days ago [-]
> The woke mind virus, more formally postmodern neo-marxism, is the greatest
threat to civilization today.
"The woke mind virus" really? You used that non-ironically? This is not something a serious or sane person would say for real.
sanity 2 days ago [-]
You'd be surprised how mainstream these views are outside certain bubbles.
tardedmeme 1 days ago [-]
inside other bubbles.
Why do you get to bypass the HN global rate limit?
DANmode 1 days ago [-]
Probably manually lifted.
nullstyle 1 days ago [-]
No, i wouldn't be surprised how ignorant, selfish and deceitful other Americans are, you included. Mainstream isn't the same as right.
Dude like this asshole would be fine with us keeping drinking fountains and lunch counters segregated, because thats how we've always done things.
Remember folks, there’s no such thing as “too much perspective” and when you get it wrong you look like this silver
-haired, privileged , rich as fuck bigot.
sanity 1 days ago [-]
The personal insults really lend credibility to your argument.
nullstyle 1 days ago [-]
Keep telling yourself that. Perhaps you want to spew some more bullshit about postmodern neomarxism like a good little JP acolyte, eh? Such a free thinker /s
sanity 23 hours ago [-]
Good chat.
angoragoats 2 days ago [-]
Holy shit. I’m a long-time admirer of freenet and you just single handedly destroyed any positive view of the project I may have held. Get a fucking grip and seek help if you can’t.
sanity 2 days ago [-]
[flagged]
angoragoats 2 days ago [-]
What? I don’t understand.
DaSHacka 2 days ago [-]
He's telling you to go and touch grass
angoragoats 1 days ago [-]
The person who said “the woke mind virus… is the greatest threat to civilization today” is telling me *I* am the one who should go touch grass? That’s hilarious.
Timwi 1 days ago [-]
Yup, it really is.
outside1234 2 days ago [-]
Touching grass is woke mind virus /s
foobarian 2 days ago [-]
Lol. It's like Linus but crunchier
sanity 2 days ago [-]
I'm told I kinda look like him too. There are worse people to be compared to.
FEELmyAGI 1 days ago [-]
Curtis Yarvin is a much better comparison, what with the inscrutable decentralized network software and being a culture war crusader
sanity 1 days ago [-]
Someone digs up obscure 3-year-old posts to a defunct mailing list and suddenly I'm a "culture war crusader" sigh
1 days ago [-]
DANmode 1 days ago [-]
“crunchier”?
sanity 2 days ago [-]
> There was no "year of debate".
Incorrect, I raised the issue with the lead maintainer over a year prior to that announcement.
> You came to the mailing list and declared it as a finalized decision.
As the project's architect I'm entitled to make decisions about the project's future direction.
> It's all public for anyone to see on the mailing list archive:
So if you discussed this with Arne for a year, then why does he agree with the frustration of Steve?
And even if the discussion with Arne happened, it still was a backroom decision:
Two people are not representative on a project with plenty of developers and an active community.
> As the project's architect I'm entitled to make decisions about the project's future direction.
A sense of entitlement is not a leadership quality.
A leadership quality would be to admit a mistake:
That repurposing the name was not only bad for the original project,
but also for the new one (because these discussions will haunt it forever),
and to then rename the new project to a fresh name which no other software used before.
sanity 2 days ago [-]
As the FAQ explains, the existing maintainers didn't agree with my decision, but I stand by it - particularly in light of the fact that we now have a working decentralized group chat on the new Freenet, something that the old architecture could never have supported.
Whether or not it was the right decision will be determined by the outcomes, which so far are promising, because we have a working network that does things that the old architecture could never do.
16bitvoid 1 days ago [-]
I also like how his first response to a reply to the announcement (and multiple others) was "who do you speak for?" while simultaneously framing a discussion with a single person, in private, as a good faith effort to hear from the community with the implicit assumption that that one person spoke for the community.
sanity 1 days ago [-]
Endeavors that make decisions based on what will please the loudest people in the near term normally run into the ground pretty quickly. There was never any obligation to obtain the approval of "the community", whatever that is.
Nothing about the name change prevented existing users from continuing to use the software just as they had been doing, and many of them said they agreed with the decision.
I honestly only ever hear about this drama on HN, it's a non-issue anywhere else we get attention.
16bitvoid 1 days ago [-]
And endeavors, which are supposedly for the benefit of everyone, that listen to no one run into the ground even quicker.
That's beside the point though. I was pointing out the hypocrisy. This sidestepping and deflection seems to be a trend with you, both here and in the mailing list.
No point in responding to me though if it's just to grandstand. You've made it apparent to me that I want nothing to do with your project. Cheers.
sanity 1 days ago [-]
> And endeavors, which are supposedly for the benefit of everyone, that listen to no one run into the ground even quicker.
Good then that we haven't, in fact we set ourselves a very difficult goal and achieved it. Not that we don't still have a lot of work to do.
> You've made it apparent to me that I want nothing to do with your project. Cheers.
You seem to have nothing to say about the substance of what we're doing so I'll get over it.
jazzyjackson 1 days ago [-]
You’re making it personal which is against site guidelines, chill.
abno525 2 days ago [-]
For anyone confused, link is cited badly and mail did not get deleted.
seems freenet is not free after all, maybe a rebrand to ianet would be more appropriate
ArneBab 1 days ago [-]
There was no public debate, but he did start to talk to devs 18 months before, and the devs told him quite clearly that they strongly object to repurposing the name.
And that repurposing the name would cause lots of damage.
DANmode 1 days ago [-]
A correction, based on the text as written:
they were saying they debated with themselves,
before making the decision.
1 days ago [-]
2 days ago [-]
dminik 2 days ago [-]
> This is a false narrative, from the Freenet FAQ[1]:
I'm sorry, but nothing following that even comes close to proving that it's a false narrative. Quite the opposite actually.
thih9 2 days ago [-]
To be fair, I see some goodwill, e.g.:
> To ease the transition the old freenetproject.org domain was redirected to hyphanet’s website, while the recently acquired freenet.org domain was used for the new architecture.
So in that aspect it seems more user friendly than a hard fork.
outside2344 2 days ago [-]
So he forked the project and went his own way. I am not sure I see the issue here. This is how we do open source on the internet. You don't have to join him, but he also has the right to go his own way too.
nextgens 1 days ago [-]
You're getting this wrong.
He has forked the project (to something that does not share the same goals so "fork" is arguable here), took the name, the cash and the goodwill.
We went from "we have enough donations/donators" to "how do we pay for the upcoming AWS bill?".
As someone who has been fairly active on the "old freenet", I have never cared about money nor funding... but I cannot help but notice that some has likely been misappropriated. Things like the SUMA award (https://web.archive.org/web/20150320201527/http://suma-award...) were awarded specifically for "protection against surveillance and censorship" that the "new freenet" does not even aim to provide.
"The board" of the non-profit seems to have been culled just before the decision. I don't know why, I wasn't on it. Maybe @agl can shime in (he was).
> to something that does not share the same goals so "fork" is arguable here
How do the goals differ, specifically?
> but I cannot help but notice that some has likely been misappropriated
You had no visibility into the project's finances, yet you're publicly implying financial impropriety without evidence.
I've raised substantially more funding for the new Freenet in the past 5 years than was raised during the entire prior 20-year history of the project.
> were awarded specifically for "protection against surveillance and censorship" that the "new freenet" does not even aim to provide.
In what way does a decentralized network with optional anonymity not protect against surveillance and censorship?
> "The board" of the non-profit seems to have been culled just before the decision. I don't know why, I wasn't on it. Maybe @agl can shime in (he was).
You also acknowledge here that you don't know what happened. Those board members' departures were at their request because they were no longer actively involved in the project.
> All I know is that this could have been handled better.
I'm sure you're right about that. But my experience at the time was that the disagreement was fundamentally about the outcome, not the process.
abc123abc123 1 days ago [-]
You make claims. Release the books, and people can then verify what you say. If you do not release the books, it is only natural for many people to suspect something wrong.
sanity 1 days ago [-]
It isn't "natural" to make baseless accusations based on zero evidence.
abc123abc123 23 hours ago [-]
Of course there is. Anyone is completely justified in asking what their politicians do, how their non-profits spend their money, or what ever.
The fact that evidence is not provided, if anything, is an indication of potential wrong doing.
I also note that you did not actually respond to what I said. This is additional indication of some potential wrong doing.
sanity 23 hours ago [-]
> The fact that evidence is not provided, if anything, is an indication of potential wrong doing.
No, that's not how evidence works.
You're starting from the assumption of wrongdoing and then treating the lack of evidence as confirmation of your suspicion.
Meanwhile we've spent the last 5 years publicly building a working decentralized platform.
abc123abc123 5 hours ago [-]
That's exactly how it works. I suspect _you_ of wrong doing in a non-profit. I ask you do release the books, and if this is not done, I take that as proof of wrong doing. If the books are hidden and cannot be published, no one has any business giving you a dime.
And you are still not addressing the question here, which only compounds the suspicions.
I win this argument, and you lose.
vitally3643 3 hours ago [-]
I think you steal money from local orphanages and stomp kittens in your free time. Release your bank account and provide bodycam footage or you will confirm your guilt.
I win this argument and you lose.
sanity 3 hours ago [-]
> I win this argument, and you lose.
lol
qcl820DV34 2 days ago [-]
The issue is that the original name, "Freenet", was repurposed for a different codebase.
sanity 2 days ago [-]
Different codebase, same purpose.
This isn't even the first time we did a ground-up redesign/rewrite of the Freenet codebase, we did this in 2008 with the 0.7 release.
FEELmyAGI 2 days ago [-]
Neither of you get to be freenet, another project with the name predated it by a lot. and throughout the 90s many ISPs were named $PLACENAME_freenet
Repeating a bad decision does not make it any wiser.
sanity 2 days ago [-]
History will be the judge, and so far it's looking very promising given our progress.
16bitvoid 1 days ago [-]
What does your progress have to do with the name? You're so defensive that you're reasoning with non sequiturs.
sanity 1 days ago [-]
What would your success metric be for whether reusing the name was the right decision?
16bitvoid 1 days ago [-]
Community size and positive community feedback, which is somewhat tangential to progress, which I assume is in the context of development. Also, the rate at which the original freenet community declines.
Number of contributors or pull requests isn't a good metric at the moment since the advent of Claude Code et al. has seen a dramatic uptick in both everywhere.
sanity 1 days ago [-]
How is it tangential? Technical success is the primary driver of community growth, adoption, and long-term viability. The more it can do, and the better it does it, the more people will use it.
16bitvoid 1 days ago [-]
Community growth might imply technical success (debatable), but technical success does not imply community growth.
You can have a very technically successful project, but it doesn't mean it'll be used.
sanity 1 days ago [-]
[dead]
darig 2 days ago [-]
[dead]
lallysingh 2 days ago [-]
Should've called the new one Freenet 2 or Freenet NT.
acheron 2 days ago [-]
Freenet 3.11 for Workgroups
sanity 2 days ago [-]
Freenet++
NamlchakKhandro 2 days ago [-]
No komrade...
stackghost 2 days ago [-]
>while the old one continues to exist and is maintained under its new name "Hyphanet"
Well, that name pretty much dooms the project to a slow death in obscurity.
tardedmeme 1 days ago [-]
To play devil's advocate, wasn't it already long dead?
dyauspitr 1 days ago [-]
Isn’t anonymity the one and only point of freenet.
seany 23 hours ago [-]
anonymity was the main point of freenet... So weird
SuperNinKenDo 1 days ago [-]
Thanks so much for the heads up. I loved Freenet as a concept back in the day and used to devote a significant chunk of my tiny hard drive to trying to help out. I looked it up a few months ago and honestly thought I was experiencing some kind of memory dailure when I saw the new project under that name. Was wondering what the project I was so excited for had _actually_ been called all those years back. Now I know what happened, and where to find the project I actually liked.
nightpool 2 days ago [-]
I'm very glad to hear that—the anonymity of the original Freenet has led to it being a very unsavory place that was more well known for CSAM then anything positive or useful. As an outsider, it sounds like this new direction is the right choice for Freenet to try and attract new users and fulfill the team's original goals.
qcl820DV34 2 days ago [-]
Extremely depraved things are not the only thing to use freedom of speech for,
and freely speaking can result in all kinds of repressions.
And even without agreeing on whether people should be anonymous on the Internet,
it could be agreed that replacing a software which guards against a certain
threat model (repressions) with one which does not,
without changing the name, is not exactly a wise decision.
sanity 2 days ago [-]
The new Freenet will support the creation of anonymity systems as services on top of it, which is much better architecturally than tying the platform to one approach to anonymity as I did when I designed the original Freenet.
We will also have a decentralized reputation system that will protect people from being exposed to unsavory or illegal content, a common criticism of the old Freenet architecture.
serf 2 days ago [-]
less anonymity and a reputation system?
I know you designed the thing, and that was a great effort, but what a miss when compared to the vast majority of freenet users priorities.
sanity 2 days ago [-]
I wouldn't describe it as "less anonymity", it's more that the new Freenet gives applications and users different choices about anonymity depending on their requirements. I don't see how more choice is a bad thing - versus forcing the same (imperfect) solution on everyone as in my original design.
Similarly, reputation systems aren't inherently coercive, they're more analogous to spam filtering or trust heuristics, mechanisms for deciding what to prioritize - but ultimate control always remains with the user.
Forgeties79 2 days ago [-]
> Extremely depraved things are not the only thing to use freedom of speech for
I’m not a fan of “think of the children“ arguments but the Internet cannot actually be a complete free for all and “freedom of speech” is not some magic shield that overrides all other ethical considerations. CSAM is not a particularly high bar and frankly if you want people to throw in with you then you can’t brush it off so lightly.
timschmidt 1 days ago [-]
> I’m not a fan of “think of the children“ arguments
Yet you're making one.
> the Internet cannot actually be a complete free for all
Yet in many important ways, it is.
As much as publishers would like to shut down Scihub, it exists. The Pirate Bay famously persists. Nation states with entirely opposed legal systems connect and interoperate to at least some degree.
pessimizer 1 days ago [-]
Scihub and The Pirate Bay are not at all anonymous, aggressively police for CSAM, and rely on reputation systems.
GoblinSlayer 1 days ago [-]
North Korean Internet will solve ip4 address exhaustion.
Forgeties79 1 days ago [-]
Dude it’s CSAM what are we even doing here.
timschmidt 1 hours ago [-]
What's CSAM? All of Freenet? Doubtful.
The OP said: "Extremely depraved things are not the only thing to use freedom of speech for, and freely speaking can result in all kinds of repressions."
Which is objectively true.
You're throwing reporters, political dissidents, whistleblowers, minority groups, and just regular people who don't appreciate the Stasi in with the child pornographers which some might take as an insult and offense.
What kind of criminal does Phil Zimmermann look like to you? We had this argument already in the 90s.
nullsanity 1 days ago [-]
> Extremely depraved things are not the only thing to use freedom of speech for.
And yet, it's materially all anonymity is actually for in practice, within a margin of error.
Tor - mostly crime & CSAM.
Crypto - mostly crime.
4chan - mostly degeneracy, some crime.
Faceless Corporations - used for crime, and things that should be crimes, but hide under other names.
pidgeon_lover 1 days ago [-]
I wasn't very happy as a user with an interest in tech/internet history to find my old bookmarks and notes had been hijacked by the new renamed project. The Original Freenet (Hyphanet) was quite interesting. The new one, less so, especially with the name hijacking.
miki123211 2 days ago [-]
It feels like the state merging approach just pushes the hard problems onto the user, without giving them the tools to solve those problems properly.
Imagine an application where an authorized group of users can create and vote in polls, using cryptographic signatures and public/private keys for user verification.
What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied?
Blockchains solve this by having state get more authoritative as blocks age. To undo the `poll_didnt_reach_quorum` state transition from 2024, one would have to rewind all blocks that have been created since, and PoW / PoS ensures that this is incredibly costly to do.
On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates?
sanity 2 days ago [-]
Appreciate the feedback.
> It feels like the state merging approach just pushes the hard problems onto the user, without giving them the tools to solve those problems properly.
We've created many of these tools, and have used them to implement practical applications like group chat, a CMS, and a social network, and we and others will build many more tools over time. Designing applications for Freenet can require some creative problem solving, but each problem only needs to be solved once.
> What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied?
You could solve this similarly to Bitcoin by having a mechanism that "locks" poll results at a particular point in time to prevent subsequent additions, analogous to how mining repeatedly locks in the blockchain.
> On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates?
Peers in the network track cost/benefit of each connected peer, so if a peer starts to consume a lot more resources than it provides then its neighbors will disconnect, a kind of immune response.
I'm sure that once the network is big enough to attract large-scale attacks we'll need to adapt our approach, but I think we have a solid starting point.
24 hours ago [-]
mweidner 2 days ago [-]
For values that don't have a natural merge function (or where you don't want to bother writing one), would it make sense to sync update logs instead? That is:
- The synced value is a history of client updates, sorted in some eventually consistent order (e.g. by hybrid logical clocks). Merging takes the union of the update sets.
- The user-visible value is the result of processing these updates in order, using arbitrary contract code.
This is overkill for simple last-writer-wins values, but it lets you support fairly general data types & arbitrary update functions, including ones that preserve application-specific invariants.
The Automerge CRDT library works like this already [1][2], but it only allows specific updates to JSON data. Sharing code via your contracts solves the hard part of generalizing that to arbitrary data & updates.
> For values that don't have a natural merge function (or where you don't want to bother writing one), would it make sense to sync update logs instead?
Yes, in fact you can implement this within the current framework, for example with our group chat River, each room state maintains a list of the N most recent messages sorted by (approximate) timestamp.
The idea is that you can adapt the merge logic to the needs of the specific application, and I think a time ordered event log will be a common pattern.
koolba 2 days ago [-]
How does it work in practice? Is it sorted by timestamp and content hash for uniqueness?
sanity 2 days ago [-]
Messages in river are sorted by timestamp using a (non-cryptographic) hash of the message signature as tie-breaker, essentially a content hash.
One weakness is that we trust the message author to provide an accurate message timestamp, however bad behavior such as manipulating timestamps can be addressed by banning the user from the room.
Timwi 1 days ago [-]
If due to some technical glitch someone's timestamp is just off by a minute or something, I wouldn't exactly call that “bad behavior” that warrants banning someone, but it does mess with ordering in a chat application...
sanity 1 days ago [-]
It could, but it hasn't been a problem in practice. If it becomes one we can certainly address it.
Groxx 2 days ago [-]
Neat. I've been wanting to see WASM-defined network behavior like this for a while (yay arbitrary consistency algorithms!), I'll have to explore it in more detail :)
(the main thing I've been wanting to try: rather than graphql, send a WASM blob along with your request to a server, and just run it to filter fields in the response / pipeline requests / define "fail if any err / pair errors with requests" for concurrent requests. arguably you could even have it control callee-internal retries.)
sanity 2 days ago [-]
Thank you, that's actually an idea I considered a while ago - embed some wasm in a GET request (which retrieves complete contract state from the network) that could pre-process the state before returning it to the requestor.
The issue was that Freenet requires that intermediate peers can cache the contract state as they're passing it back to the requestor so in the end I decided against it, but might revisit in the future.
Groxx 2 days ago [-]
yea, there's a lot of scenarios it doesn't make sense in imo. and even with processing-gas-limits it's still kinda weird and harder to prevent abuse on (e.g. you can't predict costs because you don't know what requests it might send next - graphql's declarative approach helps it here).
but for e.g. mobile apps with a trusted backend? probably great. you could even just send hashes of the WASM blobs because they will often be identical (and the full blob if that fails), and some serialized data to serve as args that vary (e.g. page-size limit of the third internal request), and you'd have an absurdly flexible system with fairly small requests. I'm just not sure how small, or if it'd end up computationally worth it compared to graphql / sparql / etc.
alun 2 days ago [-]
Very interesting. Beyond ideological motivation, I’m curious what the long-term incentive is for someone to run a peer.
For example, if Freenet were to reach scale, it could eventually need some kind of economic primitive around it. Something similar to how Filecoin handles decentralized storage, but for app state. One way to do this could be paying peers to keep app state available, serve it reliably, etc. and prove they are doing so.
sanity 2 days ago [-]
Our intention is that Freenet will only consume surplus resources, but we plan to build a reputation system that could have a notion of "karma" that is earned by providing resources to the network. This karma could be used to gate access to resources, for example like a VIP chat room on River.
So there are a lot of possibilities but for now users are motivated by a desire to see the network succeed, and that seems to be a sufficient motivator at our current scale.
alun 2 days ago [-]
Seems reasonable to build a cryptocurrency around this. The network could pay the cryptocurrency out to users dedicating resources. Have you thought about that?
sanity 2 days ago [-]
You'd still need to solve the double-spend problem, because while contract state on Freenet will usually synchronize within a few seconds, it isn't guaranteed to converge to a single globally consistent state.
Freenet's approach works well for things like group chat, where temporary inconsistency is mostly just an irritation, but for a cryptocurrency it is fatal.
I'm not saying you couldn't build a cryptocurrency on Freenet, but you'd still need a solution to that problem.
Groxx 2 days ago [-]
Ghostkeys seem like part of a decent approach to this, since it's a "prove contribution without dictating how" system. Crypto/cash/"they gave me a high five, they're cool" are all equally valid, and it's not a proof of work that costs substantial money to operate: https://freenet.org/ghostkey/
Currently it appears centralized, but in principle it'd be pretty easy to shift it to a web of trust instead, and hosts can choose what they allow and how much they value it.
(zero-knowledge proofs seem probably rather important to adopt tho, as right now it'll tie you to a stable pseudonym)
thrance 2 days ago [-]
Cryptocurrencies have a toxic reputation. Associating one to this project is a sure path to killing it.
nine_k 2 days ago [-]
Why would you want to exchange private messages with anonymous counterparties?
- You participate in a secret cabal, and don't want participants' identities be visible to each other.
- You're a journalist, and want to give your informants in sensitive matters, or from oppressed countries, a way to securely interact with you, so that you won't be technically capable of reporting their identities.
- You're selling illegal goods or services.
I'd say that in the first two cases I would consider running a separate copy of the network, because it apparently involves one supernode, and I might want to control the supernode (or maybe not).
aleqs 2 days ago [-]
Very cool project!
> We've developed a unique (AFAIK) solution to the consistency problem, every contract must define a "merge" operation for the contract's associated state. This operation must be commutative, meaning that you can merge multiple states in any order and you'll get the same end result.
Where can I learn more about this? How is this different from CRDTs/CmRDTs?
It's very closely related, you can view Freenet contract state as a CmRDT, where the details of the merge operation are specified in the webassembly contract.
aleqs 2 days ago [-]
Thanks!
dave1010uk 2 days ago [-]
It looks a lot like a CvRDT (i.e. a state-based CRDT).
They describe it as a commutative monoid, which means it has associativity and commutativity. CvRDTs also need idempotence, so they can handle duplicate data. Either they are idempotent too (which would make it semilattice-like), or the network protocol handles the deduplication outside of the data itself.
Letting the payload/application define the merge operation is clever. I assume it would mean contracts could opt in to idempotency if it doesn't already exist.
The other bit Freenet has added is doing all this with DHT routing and subscriptions, rather than a more basic peer mesh. This is very different to a blockchain and means it probably isn't suited for anything transactional.
sanity 2 days ago [-]
This is broadly correct.
> CvRDTs also need idempotence, so they can handle duplicate data. Either they are idempotent too (which would make it semilattice-like), or the network protocol handles the deduplication outside of the data itself.
Freenet's summary/delta synchronization mechanism implicitly disregards duplicate updates. The idea is that a peer A creates a "summary" of a contract's state which is sent to the other peer B which then creates a "delta", which contains anything in B's state that isn't in A's state. The delta is then sent from B to A bringing A's state up-to-date. Thus the contract defines a custom synchronization mechanism for its state which can be very efficient.
These summaries and deltas are just arbitrary bytes as far as the framework is concerned, their meaning is entirely up to the contract.
> The other bit Freenet has added is doing all this with DHT routing and subscriptions, rather than a more basic peer mesh. This is very different to a blockchain and means it probably isn't suited for anything transactional.
That's correct, Freenet doesn't guarantee a global consensus although in practice contract states will converge within a few seconds. This is good enough for applications like group chat and social networks but for a cryptocurrency you still need to solve the double-spend and global ordering problems.
2 days ago [-]
dtj1123 2 days ago [-]
I'm also curious about this. I don't understand how deletion and modification can be made commutative operations in a way that makes sense
Groxx 2 days ago [-]
tombstones are sorta the default answer here (i.e. at simplest, you keep all data forever so you can merge correctly, but you hide anything where you've seen a tombstone after it).
but "makes sense" and ways to optimize that can change massively with context. e.g. for a chat app, as soon as you see "deleted message X", you can reasonably drop X and all past and future changes to X because they won't be shown by anyone (don't even need to sync them). if you do that with "deleted chars 87..93" in a text editor, past-edits that you receive in the future might affect the behavior (it might add chars before those, changing what that range means), so you can't simply forget those chars (e.g. an easy option is to replay all events that occur after an event syncs, but that means retaining all events forever). the semantics you choose and what you do with the data affect your outcomes a lot.
tbh this is one of the reasons I like the idea of a WASM-defined algorithm. no one algorithm will be "best" for all data, and the storage/computation/transmission savings can be extreme.
sanity 2 days ago [-]
Exactly, well put.
cassonmars 2 days ago [-]
For a basic CRDT set, merge rules have to have some kind of temporality basis in the messages such that commutativity is preserved. usually it's a timestamp, sometimes it's an unforgeable value like a hash, e.g.
A: { "prev_hash": null, "content": "foobar" }
B: { "prev_hash": "<hash of A>", "content": "foobarbaz" }
C: { "prev_hash": "<hash of B>", "content": "foobaz" }
and when played out of order, it's guaranteed to resolve to foobaz eventually or immediately, depending on when messages are received
when you encounter the scenario of a fork, there's usually a fork resolution rule, e.g.
D: { "prev_hash": "<hash of B>", "content": "foobazbar" }
to resolve C vs D, sort lexicographically, choose direction of sort order and pick first
When you have non-continuous data due to messages dropping, e.g. you have B and perhaps an E that builds on C, you can either use the same lexicographic rule, or make the hash basis a combination of timestamp and hash, so you get temporality and lineage.
As for deletes, you have either the single set approach of simply making the message content empty and that _is_ the delete, or you have the 2-phase sets, where there exists an add set and a delete set.
Quite a few ways to approach it, but commutativity can be readily preserved.
sanity 2 days ago [-]
It depends on the nature of the data, for example in our group chat app River[1] it stores the most recent messages - deleting the oldest to make room for the newest as necessary. Banning a user will remove them from the members list along with their messages, and recently banned users are stored in a banned list (like a tombstone).
So there is no one approach to this, rather you design the approach based on the application, and since contracts are just webassembly they are extremely flexible.
I think better approach for "ghost keys" would be requiring X amount of crypto to be sent to 0x0 (burning). Current implementation (requiring donation to freenet) basically gives freenet foundation infinite reputation (including any other potential project that would accept ghost keys as identity), kinda breaking the decentralization aspect
sanity 2 days ago [-]
Ghost keys will ultimately be just one of a menu of options for bootstrapping reputation in a decentralized reputation system. They have the advantage of simplicity, anonymity, and helping to fund the project, but as you correctly point out - they are centralized.
A cryptocurrency-based solution like you suggest will undoubtedly be one of a menu of reputation bootstrapping options that will develop over time.
blamestross 2 days ago [-]
Reputation systems have been a theoretical idea for a while, but we haven't come up with anything sybil-proof without centralized identity management. "we have a menu" sounds a lot like "we don't actually have any viable plan" in this case.
Don't get me wrong, this is awesome. I think it is built on a subtlety bad premise. I think it is time to start build organizational nomic games on this sort of contract system, literal organization governance, for systems like this to thrive.
sanity 2 days ago [-]
Appreciate your feedback.
> Reputation systems have been a theoretical idea for a while, but we haven't come up with anything sybil-proof without centralized identity management.
I don't think it's accurate to say that we haven't come up with anything. The original Freenet has had a decentralized web-of-trust plugin for over 20 years[0].
It's far from perfect, in practice it seems to have empowered a small number of people with disproportionate influence - but that's due to solvable design issues, it's not a sybil problem.
It's also important to distinguish between sybil-proof and "raising the cost of sybil attacks to the point that they're manageable".
I do agree with your broader point that there is massive scope for building truly decentralized governance systems on Freenet. I've done some thinking about it but it's still very speculative[1].
There are tons of sybil-proof systems if you don't include signal from sources by default, but instead opt them in by hand. E.g. use a web of trust and then choose who you trust. It doesn't matter if there are trillions of accounts you don't trust, because you don't trust them.
blamestross 2 days ago [-]
Which isn't a web of trust. it is just an "allowlist". Humans are vulnerable to sybil attacks too.
Groxx 2 days ago [-]
An allow-list with transitive trust is a web of trust. And I said "use a web of trust", not "use an allow-list", because I really did mean "web of trust".
And sure, they can be, if they adopt patterns that allow it. I can also find plenty of counter-examples. I don't think "humans are less vulnerable to sybil attacks than automated systems" is a weakly-defensible stance at all.
mhitza 1 days ago [-]
What are the current limitation of this system? Slow bootstrapping, high latency, large disk usage?
Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web.
How can anonymity be built on top of this system?
For ghost keys issuance, like with other privacy products, I'd really like to be able to buy redeem coupons in real life, not through stripe and all other online payment providers.
sanity 1 days ago [-]
> What are the current limitation of this system? Slow bootstrapping, high latency, large disk usage?
I'd say not working on mobile is probably the main one right now. Peers bootstrap into the network in seconds typically, and contract updates typically arrive at subscribed peers in under 2 seconds which was the design goal. The Freenet binary is just 10MB, and disk usage is fairly minimal as even the largest contracts are < a few MB.
> Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web.
Contracts in Freenet are identified by a hash of the contract webassembly + contract parameters - so the contract's identity is tied to its function. This is effectively a generalization of Freenet's "Signed-Subspace Keys" - which were also adopted by GNUnet.
> How can anonymity be built on top of this system?
Most likely through a mixnet or onion routing built on Freenet's contracts and delegates. If you don't mind listening to videos this was discussed in depth on a recent Freenet podcast[1].
Exciting to see Freenet innovating so much, Ian! I haven't really dug in too deep but love that it's in Rust. What's it look like over the wire? How conspicuous is it in the face of, say government censors who can see and control every packet?
Been chatting a lot with the HolePunch/Tether folks, and their work is impressive, particularly the use of the DHT for all signaling, Tailscale-inspired (aka Birthday Paradox) NAT hole-punching, an entire JavaScript runtime, etc. I'm curious about some of those details in Freenet. In particular, does it do fully decentralized hole punching?
Either way, congrats!
sanity 1 days ago [-]
Thank Adam, nice you see you!
> What's it look like over the wire?
Encrypted UDP, but likely identifiable based on timing etc - we're not trying to hide it right now - the focus is more on decentralization.
> In particular, does it do fully decentralized hole punching?
Depends on what you mean by "fully". When peers first start up they need to connect to a "gateway", a freenet peer that can receive unexpected inbound UDP. But gateways are only required to introduce peers to the network, after the initial introduction they form new connections through the network.
Right now we run these introductory gateways but will decentralize it over time.
adamfisk 2 days ago [-]
Without knowing too much about the drama discussed here, I think the bottom line is that the "old" Freenet was a bit on life support as far as I could tell and absolutely needed this kind of innovation from its founder.
sanity 1 days ago [-]
The medium tends to amplify drama far beyond the reality of it, hope you are well :)
rohitsriram 1 days ago [-]
Decentralized web has been a pipe dream forever but group chat actually working in practice is more convincing than anything they could have shown. Real time sync was always the hard part.
Curious about mobile though, you mentioned iOS is the main blocker because of wasm restrictions. Is the plan to run the peer on desktop and have mobile just connect to it, or are you expecting people to run a full peer on Android?
Gigachad 1 days ago [-]
The hard part imo was not being exposed to, or unknowingly redistributing illegal content. They claim this new freenet solves this but the details on how weren't super clear.
tardedmeme 1 days ago [-]
Every Tor relay redistributes CSAM daily, but nobody gets busted for running a Tor relay.
LoganDark 1 days ago [-]
> nobody gets busted for running a Tor relay.
Citation needed? IIRC, the general advice for running a Tor relay is "don't, unless you want an endless supply of abuse complaints". So you'd require a jurisdiction that ignores abuse complaints.
Gigachad 1 days ago [-]
That’s for an exit node. Relays only relay fully encrypted traffic within the Tor network so there is no way to know what was being accessed. They never connect to non Tor servers so they don’t get flagged as abuse.
LoganDark 1 days ago [-]
Oh, you're right.
snvzz 1 days ago [-]
They got rid of anonymity, which makes this a trivial problem: Law enforcement takes care of it.
Now, whether giving up anonymity was worth it is a separate issue.
MagicMoonlight 1 days ago [-]
Realistically the only uses cases of this are illegal ones. It’s like Tor, you’re either using it because your government made everything illegal, or you’re using it for dark shit.
Gigachad 1 days ago [-]
I'd be interested in it just for fun. Hosting a cool decentralized blog or something. And hosting stuff that is legal in my country but illegal in say Russia. I just don't want to host or transport anything that is illegal or objectionable to me.
ArneBab 1 days ago [-]
On Hyphanet (the original Freenet) there’s been working group chat via a Hyphanet-backed IRC server for over a decade (the server is named FLIP, the first working version was released in 2013, developed purely on Freenet/Hyphanet).
soundworlds 2 days ago [-]
Looks very interesting! I stumbled across your webpage a few months ago while looking into the state of peer-to-peer. Glad to see p2p projects are still active.
dariosalvi78 2 days ago [-]
I wrote a short University essay on Freenet in 1998 I think it was... I may still have the document somewhere. Good stuff, very pioneer!
duskwuff 2 days ago [-]
Unfortunately, this is an effectively unrelated project.
noosphr 2 days ago [-]
That project had nothing to do with the freenet that ran after 2006 either. It's not the first ground up rewrite with major breaking changes using the same name.
sanity 2 days ago [-]
Not sure how you can say it's unrelated given that it was created for the same purpose by the same person with many design similarities.
dgudkov 2 days ago [-]
It's refreshing to see people doing something conceptually interesting outside of the LLM domain.
toomim 1 days ago [-]
How do you compare this to the effort in https://braid.org, which is also a decentralized web, which adds subscriptions that can operate in a tree (or DAG) of reactive state, each with its own validator and supporting different media types, and merging with merge-types?
Freenet seems to not interoperate with the existing WWW as much, while at the same time giving more specification on a specific routing and WASM validator. The existing WWW and Braid leave those decisions up to each particular host/authority to decide.
endofreach 2 days ago [-]
Very interesting. I have been working on something quite some time, where something like this would play a very crucial role, but i never got around to really thinking about how to implement everything. And as I have still a lot of work to do on my project, that would utilize something like freenet, i am very eager to dive into your work. Just wanted to write this as some form as appreciation for your work.
I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives?
Great work it seems, so far. I will yet have to really look through it all. Congratulations on this.
sanity 2 days ago [-]
Thank you!
> I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives?
While I realize this is wildly ambitious, my goal is that Freenet could ultimately replace the world wide web and the client-server architecture more generally which I view as inherently concentrating power in the hands of a few (which it has done).
dharmatech 2 days ago [-]
I definitely think we should be exploring decentralized approaches to services we use.
I also would like to see an emphasis on local-first approaches.
This experiment, in the spirit of UNIX, composes git and text files to form a social network:
Consider in your presentations leading with this as a demo to motivate the technical infrastructure you've put in place.
It is hard to grok what Contracts, etc. etc. allow you to do in the abstract so working through how it allows us to build a decentralized GitHub might be a good anchor in a tangible use case.
sanity 21 hours ago [-]
Appreciate the suggestion. It's often difficult to know where to start when explaining a project like this.
The freenet-git work is quite recent but we do feature River, our group chat app, fairly prominently on our installation page[1] so that people can quickly try out something useful. River is by-far the most fully developed app so far.
This is awesome. I rotated some ideas like this in my head a while ago but never had the motivation to put it together. Happy to see more types of protocols like this.
Imagine an internet that is fundamentally decentralized, where your online presence isn't at the mercy of a company like Google, Amazon, or Microsoft.
Think of it as going back to the Internet's decentralized roots.
rcakebread 2 days ago [-]
I wrote a web browser for Freenet called Snarfzilla. I guess it may have been the first web browser for "the dark web". [1]
I integrated "Fair Tunes", which tried to pay musicians for mp3 files, long before any label was selling mp3's.
(Edit: I just remembered Freshmeat automatically rejecting Snarfzilla because they were so sick of projects ending in *zilla. The owner thought it was cool and added it after I emailed. No idea why I used 'snarf'. I've never said it out loud.)
Is there any way to run this in the browser rather than downloading an app?
sanity 2 days ago [-]
Not currently, but installation is very quick - the binary itself is just 10MB.
I am thinking about making a public proxy available so people can try the network itself without installing it, but we've made installation as quick and painless as possible.
iamkrazy 1 days ago [-]
Serious question: how do you prevent/remove nefarious things like CSAM?
EGreg 2 days ago [-]
Big fan of this project. Three years ago, I interviewed Ian Clarke about his upcoming Freenet rewrite. He's the original "OG" of decentralized content networks. We go into detail regarding its architecture on the podcast:
Can you tell me about the old Freenet? I've read up on Wikipedia and it seems to be very much in the line with the 90s/2000s p2p file sharing software. Except that you can store stuff on other people's computers and it's encrypted?
Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.)
I think understanding the old one and the issues it ran into would be helpful for understanding the context, and the motivations for the changes.
Or to put it very bluntly: what is this, why should I care, and why not just use the old one?
Thanks
sanity 2 days ago [-]
> Or to put it very bluntly: what is this, why should I care, and why not just use the old one?
If you don't mind I'll quote the FAQ[1]:
The previous and current versions of Freenet have several key differences:
Functionality: The previous version was analogous to a decentralized hard drive, while the current version is analogous to a full decentralized computer.
Real-time Interaction: The current version allows users to subscribe to data and be notified immediately if it changes. This is essential for systems like instant messaging or group chat.
Programming Language: Unlike the previous version, which was developed in Java, the current Freenet is implemented in Rust. This allows for better efficiency and integration into a wide variety of platforms (Windows, Mac, Android, MacOS, etc).
Transparency: The current version is a drop-in replacement for the world wide web and is just as easy to use.
Anonymity: While the previous version was designed with a focus on anonymity, the current version does not offer built-in anonymity but allows for a choice of anonymizing systems to be layered on top.
> Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.)
The new version doesn't claim to provide anonymity as part of the platform itself although anonymity systems can be built on top of it. I'd also refer you to this FAQ [2].
But not a problem in theory for Android and Ubuntu Touch systems?
sanity 2 days ago [-]
Yes, iOS is the main headache. The other issue is that people probably won't want it using their mobile network bandwidth in the background, but that's solvable.
2 days ago [-]
gustavus 2 days ago [-]
In my early days of technology tinkering when I was young I was always interested in security, and one day I stumbled upon freenet, and my world changed.
It was amazing and led me to get far more acquainted with the cyberpunk scene. It was this alternative separate internet from what the rest of the world saw with all of the good and bad that brought.
I've been meaning to set it up again and get back into it. I will say for everyone pining for the Internet of yesteryear freenet is it. Go and explore it it is everything the 90's Internet was like, super slow, crazy unhinged nerds all over the place random collections of links, crazy.
Thanks for all you've done Ian
Edit:
Btw what is the best way to support the project and get involved?
sanity 2 days ago [-]
Thank you!
If you're in a position to support the project financially you're more than welcome to donate[1], we're a 501c3 non-profit and all funds go to support development.
If you're a developer and are interested in building on Freenet I suggest starting with https://freenet.org/build/manual/tutorial/, you can also join our Matrix room[2], or install Freenet[3] and chat with us on River[3], our decentralized group chat.
Yes in the sense that users pool resources for the network, but no in the sense that Napster relied on a centralized database of content - whereas Freenet is entirely decentralized.
Also Freenet is much more general, you could think of Napster like a shared hard drive, whereas Freenet is like a shared computer capable of running decentralized applications like group chat, social networks, search engines, etc.
trinsic2 1 days ago [-]
Is there any reason why a system like this can't be distributed like bittorrent? It just seems like decentralization is used to censor content at the node.
foobarian 2 days ago [-]
I thought Gnutella was a bit more like Freenet than Napster, iirc only the bootstrap was centralized.
sanity 21 hours ago [-]
Gnutella was decentralized like Freenet, but it's broadcast search approach limited scalability relative to Freenet's "small-world" approach which can scale indefinitely.
AlexWasHeree 22 hours ago [-]
Interesting
trinsic2 1 days ago [-]
It seems like downvoting brigading is happening quite a bit on this post on a lot of replies.
Ember_Wipe 2 days ago [-]
[flagged]
daohieu91 2 days ago [-]
[dead]
hoxihan 2 days ago [-]
[dead]
chris_explicare 1 days ago [-]
[dead]
Aldipower 2 days ago [-]
We had too much Gnutella. I am in search for a locus to us. Now. SCNR
in favor of a rewrite from different developers, without asking anyone on the original team.
It was an ivory tower decision which was announced on the mailing list without prior discussion.
The old team did not agree, yet it was forced through by a decision of the "board".
The "board" was a group of people which had not been active on the project for over a decade.
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
The funding of the existing, original "Freenet" was repurposed for the new one of course.
The new "Freenet" does not have anonymity as a design goal anymore,
while the old one continues to exist and is maintained under its new name "Hyphanet" at:
https://www.hyphanet.org/
Please explain how "the new freenet" tackles censorship resistance.
https://web.archive.org/web/20001017133926/http://freenetpro... "Freenet is a peer-to-peer network designed to allow the distribution of information over the Internet in an efficient manner, without fear of censorship."
https://web.archive.org/web/20050201110519/http://freenetpro... "Freenet is free software which lets you publish and obtain information on the Internet without fear of censorship."
https://web.archive.org/web/20150206152355/https://freenetpr... "Share files, chat on forums, browse and publish, anonymously and without fear of blocking or censorship!"
today: "Hyphanet is peer-to-peer network for censorship-resistant and privacy-respecting publishing and communication."
the new freenet: ?!?
Primarily through the same core mechanism as the original Freenet design: decentralization and relaying requests through multiple peers such that no individual peer sees the entire request path.
The new design also supports pluggable anonymity systems such as mixnets and onion routing. In some respects these are stronger than Hyphanet's approach because relay selection can be chosen intentionally by the user's node rather than emerging implicitly from network topology.
The main architectural change is that anonymity is no longer treated as a single mandatory mechanism baked into every layer of the system. Different applications can make different tradeoffs depending on their requirements.
My question is whether freenet is designed to be resistant for active adversaries with deep packet inspection capability, particularly like the Chinese firewall that is also observed to do statistical timing analysis of packets? Is there any possibility to apply obfuscation to the peer to peer connection? And is there any mechanism to aide peer discovery (DHT?)
You're welcome :)
> My question is whether freenet is designed to be resistant for active adversaries with deep packet inspection capability, particularly like the Chinese firewall that is also observed to do statistical timing analysis of packets? Is there any possibility to apply obfuscation to the peer to peer connection?
Freenet's transport protocol is a custom encrypted protocol over UDP, but it is not currently designed to evade sophisticated deep packet inspection or timing analysis by state-level adversaries like the Great Firewall.
That said, the transport layer is modular, and we would absolutely accept contributions adding traffic obfuscation or pluggable transports, subject to the usual tradeoffs around latency, bandwidth overhead, and resource usage.
> And is there any mechanism to aid peer discovery (DHT?)
Freenet uses a distributed small-world routing topology for peer discovery and efficient message propagation. It isn't a conventional Kademlia-style DHT, but conceptually it serves a similar purpose.
The network is designed to self-organize into a small-world topology.[1]
[1] See the "Distance" graph at the bottom-right of the circle visualization - http://nova.locut.us:3133/
Even now when people in the US are organising against a fascist regime it's mostly WhatsApp and maybe Signal.
Example publication: https://journals.sagepub.com/doi/abs/10.1177/135485651880663...
> What are the content patterns on Freenet? Four patterns were identified. Freenet is (1) an archive of deviant data resistant to censorship (2) a space dominated by content associated with masculinity, (3) a nonmarket space where commercial exchange is non-existent, and (4) an empty space with many requests not returning information, and many flogs abandoned. We asked a third question: How does the analysis of Freenet inform current understandings of hacker culture? Freenet, we suggest, can be understood as a type of digital “wilderness”. It is a singular darknet space, supporting a distinct set of hacker practices
Practically: people in Hyphanet blog about stuff they dare not blog about in the clearnet -- anything from radical politics (from all kinds, left, right, libertarian, …) over personal opinion pages to wilder stuff like magick (yes, in that spelling).
Not to forget the Russian Poet who’s posting daily poems with the goal (as he wrote) that those poems still survive after police knocked at his door.
(besides talk about hyphanet and privacy tech)
So yes: I don’t understand the downvotes either, because it’s a legitimate question with a pretty clear answer: yes.
You're moving the debate here. The question was "How are the goals different?" from the project leader (who ought to know better), not whether moving them makes sense.
Others could argue that software nobody uses for its stated purpose has failed; but you are right that is technically a different discussion than the one you started.
A question you haven't answered.
https://freenet.org/about/faq/
It was slower than Kazaa/bittorrent, but it was far harder to work out who was shareing what. (if memory serves it also chunked files up so they weren;t on the same machine, but that could be me misremembering)
As you can with the new Freenet, you just get a menu of options instead of being forced to use a one-size-fits-all approach to anonymity.
It would surprise me if this would not be a common interpretation of these texts alone among the readers here.
As for the general reputation of the OG Freenet in this lineage, to the extent I'm aware, anonymity was pretty much the defining characteristic. More or less everything else in the user experience suffered to some extent compared to other chat and file sharing services because of this "focus".
Perhaps.
Though reusing the name for an entirely different project with a different codebase is disingenuous to say the least.
That won't do his reputation any good, especially in a field where reputation matters.
Same project, same goals, and it's not even the first time we started with a fresh codebase - we did it in 2008.
> That won't do his reputation any good, especially in a field where reputation matters.
This drama never comes up anywhere except HN where it seems to be the obsession of a small number of vocal people who never have anything to say about the substance of the project. I don't lose any sleep over it.
Many on here beg to differ.
Interestingly, there seems to be very little overlap between the people giving substantive technical feedback and the people most upset about a 3-year-old naming controversy.
This is a false narrative, from the Freenet FAQ[1]:
Why was Freenet rearchitected and rebranded?
In 2019, Ian began developing a successor to the original Freenet, internally named “Locutus.” This redesign was a ground-up reimagining, incorporating lessons learned from the original Freenet and addressing modern challenges. The original Freenet, although groundbreaking, was built for an earlier era.
This isn’t the first time Freenet has undergone significant changes. Around 2005, we transitioned from version 0.5 to 0.7, which was a complete rewrite introducing “friend-to-friend” networking.
In March 2023, the original Freenet (developed from 2005 onwards) was spun off into an independent project called “Hyphanet” under its existing maintainers. Concurrently, “Locutus” was rebranded as “Freenet,” also known as “Freenet 2023,” to signal this new direction and focus. The rearchitected Freenet is faster, more flexible, and better equipped to offer a robust, decentralized alternative to the increasingly centralized web.
To ease the transition the old freenetproject.org domain was redirected to hyphanet’s website, while the recently acquired freenet.org domain was used for the new architecture.
It is important to note that the maintainers of the original Freenet did not agree with the decision to rearchitect and rebrand. However, as the architect of the Freenet Project, and after over a year of debate, Ian felt this was the necessary path forward to ensure the project’s continued relevance and success in a world far different than when he designed the previous architecture.
> The new "Freenet" does not have anonymity as a design goal anymore,
Because the new Freenet will have a menu of anonymity options rather than committing to a one-size-fits-all approach, while also addressing the issue of illegal content[2].
[1] https://freenet.org/about/faq/#why-was-freenet-rearchitected...
[2] https://freenet.org/about/faq/#how-does-freenet-handle-harmf...
There was no "year of debate".
You came to the mailing list and announced it for the first time as a finalized decision already,
without any prior debate with the original team.
The "board" you cited as the body which allegedly discussed it did neither join the mailing list discussion,
nor were you willing to hand out their contact info.
It's all public for anyone to see on the mailing list archive:
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
https://www.mail-archive.com/devl@freenetproject.org/
- https://www.mail-archive.com/devl@freenetproject.org/msg5534...
- https://www.mail-archive.com/devl@freenetproject.org/msg5534...
Gee, I can't imagine how that mailing list could ever be toxic.
Identitarianism is a cancer, that has been fed via social media algorithms. We seem to have invented a machine for rewarding all of the wrong incentives. Who would have thought that phenomena like audience capture & polarised thought bubbles would be in the palm of the hand, directing thoughts and forming unbreakable opinions on an array of issues that otherwise wouldn't even be on the radar?
I don't think that this is a left, right or in between thing. Identitarianism had infected the entire political spectrum.
BTW: Perhaps I'm wrong but I don't take the Wikipedia definition of "identitarian movement" and identitarianism. I'm thinking entirely about identity politics. "If you're associated with person X you must be Y", or "If you believe A you must be a B". Highly policed thought bubbles. Ostracism. Cancelling.
As a result, today, with technology that can enable mass communication of thought, there are important conversations that can no longer happen in society.
Unfortunately with that perspective, I end in in the same camp as unabashed bigots and real Nazis.
But here's the problem. This whole phenomenon is most prevalent in western style democracy. You cannot take that person's vote. You can engage with them and try to change their mind (but also be open to having your own mind changed too, otherwise it's a disingenuous enterprise). Or you can eject block and cancel. If anything, that just drives them further from your social/political group. Hence the person who you blocked and cancelled starts to look around at the other "so called evil people" outside the bubble, and realise that many of them might be refugees from pleasantville , just like you. You can only see your former bubble after your pushed or pulled out of it.
Bubbles can suck people in, but they can also push people out into the gravitational pull of other bubbles.
* You made the mailing list post on 22 Jan 2023.
* Elon Musk first used the phrase (on Twitter, at least) on 19 Dec 2021. [0]
* As of May 2022 at the latest, he was regularly using it in tweets, including ones with tens and hundreds of thousands of likes. [1][2][3]
* By the end of 2022, "woke mind virus" was well-known enough that other users were cracking jokes about it. [4][5]
[0] https://xcancel.com/elonmusk/status/1472371245744373760#m
[1] https://xcancel.com/elonmusk/status/1516600269899026432#m
[2] https://xcancel.com/elonmusk/status/1526975113597489154#m
[3] https://xcancel.com/elonmusk/status/1527356085090545664#m
[4] https://xcancel.com/ditzkoff/status/1602283284947427329#m
[5] https://xcancel.com/ndrew_lawrence/status/160521361079977984...
Edit: do they all like the letter X, too? I think in this list it's just a coincidence, but maybe?
Edit because I can't post a new comment: https://news.ycombinator.com/item?id=46608061
Some of the things you say in these threads might be "right" but I can assure you that many of them are not effective, which is counterproductive to the goal you are trying to achieve.
A culture where people are expected to constantly self-censor to avoid bad-faith interpretations is unhealthy and corrosive.
Just because you have a belief about something doesn't make it right to always assume the worst from people and that you always have the best answer.
I tend to avoid people that don't come from a place of good faith. And I feel that attacking people because you might be right about something is coming from a place of bad faith and isn't always the best course of action. There is a place for that, when it comes to your freedom being violated or something, but when it comes to having discussions with people, we are all human. Ego can be a determinant.
Again, as we are wondering into tumblr style debates here (ie not listening and just saying what you think they said)
There is a difference between being "right" and being "effective"
Or to put it another way: "perfect is the enemy of good"
However I will break it down a bit more. You agree with me that there is such thing as a horizon of "acceptable opinion" for people? Some have larger windows, some much narrower.
If we agree on that, I would ask, what happens if someone goes in hard (rhetorically) with a viewpoint that is outside of "acceptable opinion"? You begin to discount their opinion, regardless of evidence. Or it requires a much high bar to accept _any_ opinion from that person.
Which leads back to the original point, you may be correct, but you are unable to persuade anyone else that you are correct, because you are not speaking the same language and gently pulling them to your viewpoint.
Hence the "you can be right, or you can be effective"
I think it’s a category error and an ad hominem attack to bring it up in a debate with someone. It doesn’t mean your wrong or can’t still beleive they were virtue signaling, if that’s what you mean by standing by what you said, but more than one thing can be true and that being your reaction is not honest engagement with the criticism… I don’t care think it’s about the joke very much, it’s not especially funny but not all humor has to be, and I don’t love their reaction to it either, but I think you’re confusing the feedback you’re getting here and there and probably elsewhere that your opinions should change… a sibling comment spoke of being right vs effective, and there’s something to that, but there’s also being right vs having a growth mindset, about being open to genuine conflict that sometimes brings new perspective or insight… But that doesn’t happen when one side shuts down the other with ad hominem attacks or uncharitable assumptions. To be fair, it doesn’t happen online in mailing lists or discussion forums at all very often. Maybe you only get these kinds of reactions here and when people seem more real to you in person you engage differently… I know most people engage differently online than in person, and different pseudonymously than using real names. Someone else here compared you to Linus, and there’s probably something there? There’s no doubt you brought some vision and insight to both these projects, as he did, but something changed for him some years back that was a growth moment and caused him new perspective on how he engaged with people online. The same could still happen for you, and it wouldn’t mean you were giving in to a “woke mind virus”, it would mean you were growing.
I was in the midst of obviously baseless allegations being made against me, not because of anything I actually said but because some very nasty[1] people disagreed with a naming decision I had made.
If you ever find yourself in that situation you are way past the principle of charity.
I'm not saying I couldn't have handled it more gracefully and probably would today, remember this was an obscure mailing list post from 3 years ago that someone dug up.
[1] This is not to suggest that everyone who disagreed with my decision behaved badly, it was a small minority
This is grim.
If you stand by it I'd say good.... luck, yeah, good luck, you're singlehandedly the gravest enemy of the project.
If you think a specific statement was wrong, harmful, or dishonest, then explain why. I'll wait.
That is what is wrong with it.
> I stand by every word I said in that thread
A warning sign.
Look, if everyone around tells you says it sounds like a donkey, looks like a donkey and walks like a donkey, maybe check with a vet?
It's not a conspiracy and not that hard. You'd be embarrassed if you u saw what we see. And indeed, you destroyed the credibility of the project with that.
> someone picks a specific statement
> "If the use of a single phrase... is enough to make you dismiss someone entirely"
Bro, you asked for a specific statement. Was GP actually supposed to provide N specific statements, where N is a hidden number known only to you?
I've met a lot of folks in software who think contradicting themselves in order to "gotcha" the other person is some form of being clever. You can't really have success reasoning them out of it; they think being incorrigible is the same as winning.
I never said that.
How does bringing in "the woke mind virus" or "virtue signaling" into a technical conversation help build your movement vs. cause people to tune out?
Specificity is literally gaslighting.
It's dishonest because it pretends that people behaving in a way that you don't like are somehow infected by some (literal or metaphorical) contagion, when I am not aware of any evidence that this is the case.
I'd be delighted to be proven wrong on either of the above with studies or other serious sources. I'll wait.
See the cases of:
- The Ada Initiative
- DongleGate
- James Damore
- Bret Weinstein and Evergreen state (there's even a documentary by Mike Nayna about this)
Just to name a few.
Hyperventilating over the phrase "woke mind virus" or calling Musk a nazi a few dozen more times will not work.
You're the square, and your favored ideology lost.
We now even have BlueSky serving as the verifiable echo chamber of the idiots, and it's absolutely hilarious how they just can't stop attacking each other over there.
Calling for sources while questioning one of the most visible forms of social activism of the last decade is pure gaslighting btw.
And no, asking for sources is not gaslighting, no matter how much you say it is. It’s important to me that my beliefs are backed by evidence, and so you’ll have to forgive me that I just can’t assume that “a woke mind virus is a thing that exists” is a valid claim.
@sanity posted a sibling reply which I can’t reply to because it’s [dead] for some reason. In that reply they do give a couple of examples of recent literature that they say supports their claim. I will freely admit I’m not familiar with the work they’re citing so I’m going to look into it. Upon a brief look at a summary of the Lukianoff and Haidt work, I don’t think it actually addresses the claim which I was asking for sources for, but I will reserve judgment until I read it.
"The woke mind virus" really? You used that non-ironically? This is not something a serious or sane person would say for real.
Why do you get to bypass the HN global rate limit?
Dude like this asshole would be fine with us keeping drinking fountains and lunch counters segregated, because thats how we've always done things.
Remember folks, there’s no such thing as “too much perspective” and when you get it wrong you look like this silver -haired, privileged , rich as fuck bigot.
Incorrect, I raised the issue with the lead maintainer over a year prior to that announcement.
> You came to the mailing list and declared it as a finalized decision.
As the project's architect I'm entitled to make decisions about the project's future direction.
> It's all public for anyone to see on the mailing list archive:
> https://www.mail-archive.com/devl@freenetproject.org/msg5526...
I stand by every word I said in that mailing list thread.
The previous lead maintainer, Steve, voiced their frustration with your decision here:
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
To which you sent a brash reply, which sounds like you don't know Steve's position in the community:
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
To which the current lead maintainer, Arne, said he agrees with the sentiment of Steve:
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
So if you discussed this with Arne for a year, then why does he agree with the frustration of Steve?
And even if the discussion with Arne happened, it still was a backroom decision:
Two people are not representative on a project with plenty of developers and an active community.
> As the project's architect I'm entitled to make decisions about the project's future direction.
A sense of entitlement is not a leadership quality.
A leadership quality would be to admit a mistake:
That repurposing the name was not only bad for the original project,
but also for the new one (because these discussions will haunt it forever),
and to then rename the new project to a fresh name which no other software used before.
Whether or not it was the right decision will be determined by the outcomes, which so far are promising, because we have a working network that does things that the old architecture could never do.
Nothing about the name change prevented existing users from continuing to use the software just as they had been doing, and many of them said they agreed with the decision.
I honestly only ever hear about this drama on HN, it's a non-issue anywhere else we get attention.
That's beside the point though. I was pointing out the hypocrisy. This sidestepping and deflection seems to be a trend with you, both here and in the mailing list.
No point in responding to me though if it's just to grandstand. You've made it apparent to me that I want nothing to do with your project. Cheers.
Good then that we haven't, in fact we set ourselves a very difficult goal and achieved it. Not that we don't still have a lot of work to do.
> You've made it apparent to me that I want nothing to do with your project. Cheers.
You seem to have nothing to say about the substance of what we're doing so I'll get over it.
https://www.mail-archive.com/devl@freenetproject.org/msg5526...
And that repurposing the name would cause lots of damage.
they were saying they debated with themselves,
before making the decision.
I'm sorry, but nothing following that even comes close to proving that it's a false narrative. Quite the opposite actually.
> To ease the transition the old freenetproject.org domain was redirected to hyphanet’s website, while the recently acquired freenet.org domain was used for the new architecture.
So in that aspect it seems more user friendly than a hard fork.
He has forked the project (to something that does not share the same goals so "fork" is arguable here), took the name, the cash and the goodwill.
We went from "we have enough donations/donators" to "how do we pay for the upcoming AWS bill?".
As someone who has been fairly active on the "old freenet", I have never cared about money nor funding... but I cannot help but notice that some has likely been misappropriated. Things like the SUMA award (https://web.archive.org/web/20150320201527/http://suma-award...) were awarded specifically for "protection against surveillance and censorship" that the "new freenet" does not even aim to provide.
"The board" of the non-profit seems to have been culled just before the decision. I don't know why, I wasn't on it. Maybe @agl can shime in (he was).
All I know is that this could have been handled better. It's what I wrote back then on https://www.mail-archive.com/devl@freenetproject.org/msg5527...
How do the goals differ, specifically?
> but I cannot help but notice that some has likely been misappropriated
You had no visibility into the project's finances, yet you're publicly implying financial impropriety without evidence.
I've raised substantially more funding for the new Freenet in the past 5 years than was raised during the entire prior 20-year history of the project.
> were awarded specifically for "protection against surveillance and censorship" that the "new freenet" does not even aim to provide.
In what way does a decentralized network with optional anonymity not protect against surveillance and censorship?
> "The board" of the non-profit seems to have been culled just before the decision. I don't know why, I wasn't on it. Maybe @agl can shime in (he was).
You also acknowledge here that you don't know what happened. Those board members' departures were at their request because they were no longer actively involved in the project.
> All I know is that this could have been handled better.
I'm sure you're right about that. But my experience at the time was that the disagreement was fundamentally about the outcome, not the process.
The fact that evidence is not provided, if anything, is an indication of potential wrong doing.
I also note that you did not actually respond to what I said. This is additional indication of some potential wrong doing.
No, that's not how evidence works.
You're starting from the assumption of wrongdoing and then treating the lack of evidence as confirmation of your suspicion.
Meanwhile we've spent the last 5 years publicly building a working decentralized platform.
And you are still not addressing the question here, which only compounds the suspicions.
I win this argument, and you lose.
I win this argument and you lose.
lol
This isn't even the first time we did a ground-up redesign/rewrite of the Freenet codebase, we did this in 2008 with the 0.7 release.
https://case.edu/ech/articles/c/cleveland-freenet
Number of contributors or pull requests isn't a good metric at the moment since the advent of Claude Code et al. has seen a dramatic uptick in both everywhere.
You can have a very technically successful project, but it doesn't mean it'll be used.
Well, that name pretty much dooms the project to a slow death in obscurity.
And even without agreeing on whether people should be anonymous on the Internet,
it could be agreed that replacing a software which guards against a certain threat model (repressions) with one which does not,
without changing the name, is not exactly a wise decision.
We will also have a decentralized reputation system that will protect people from being exposed to unsavory or illegal content, a common criticism of the old Freenet architecture.
I know you designed the thing, and that was a great effort, but what a miss when compared to the vast majority of freenet users priorities.
Similarly, reputation systems aren't inherently coercive, they're more analogous to spam filtering or trust heuristics, mechanisms for deciding what to prioritize - but ultimate control always remains with the user.
I’m not a fan of “think of the children“ arguments but the Internet cannot actually be a complete free for all and “freedom of speech” is not some magic shield that overrides all other ethical considerations. CSAM is not a particularly high bar and frankly if you want people to throw in with you then you can’t brush it off so lightly.
Yet you're making one.
> the Internet cannot actually be a complete free for all
Yet in many important ways, it is.
As much as publishers would like to shut down Scihub, it exists. The Pirate Bay famously persists. Nation states with entirely opposed legal systems connect and interoperate to at least some degree.
The OP said: "Extremely depraved things are not the only thing to use freedom of speech for, and freely speaking can result in all kinds of repressions."
Which is objectively true.
You're throwing reporters, political dissidents, whistleblowers, minority groups, and just regular people who don't appreciate the Stasi in with the child pornographers which some might take as an insult and offense.
What kind of criminal does Phil Zimmermann look like to you? We had this argument already in the 90s.
And yet, it's materially all anonymity is actually for in practice, within a margin of error. Tor - mostly crime & CSAM. Crypto - mostly crime. 4chan - mostly degeneracy, some crime. Faceless Corporations - used for crime, and things that should be crimes, but hide under other names.
Imagine an application where an authorized group of users can create and vote in polls, using cryptographic signatures and public/private keys for user verification.
What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied?
Blockchains solve this by having state get more authoritative as blocks age. To undo the `poll_didnt_reach_quorum` state transition from 2024, one would have to rewind all blocks that have been created since, and PoW / PoS ensures that this is incredibly costly to do.
On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates?
> It feels like the state merging approach just pushes the hard problems onto the user, without giving them the tools to solve those problems properly.
We've created many of these tools, and have used them to implement practical applications like group chat, a CMS, and a social network, and we and others will build many more tools over time. Designing applications for Freenet can require some creative problem solving, but each problem only needs to be solved once.
> What prevents me from connecting and saying that "everybody's state is wrong, that poll in 2024 which didn't reach quorum actually did, because I voted in it, here's my vote." How can the state merger know that the existing state has been valid for two years, and that the vote shouldn't be retroactively applied?
You could solve this similarly to Bitcoin by having a mechanism that "locks" poll results at a particular point in time to prevent subsequent additions, analogous to how mining repeatedly locks in the blockchain.
> On a related note, how does your design prevent sybil attacks, where one participant floods the network with many large contracts and large state updates?
Peers in the network track cost/benefit of each connected peer, so if a peer starts to consume a lot more resources than it provides then its neighbors will disconnect, a kind of immune response.
I'm sure that once the network is big enough to attract large-scale attacks we'll need to adapt our approach, but I think we have a solid starting point.
- The synced value is a history of client updates, sorted in some eventually consistent order (e.g. by hybrid logical clocks). Merging takes the union of the update sets.
- The user-visible value is the result of processing these updates in order, using arbitrary contract code.
This is overkill for simple last-writer-wins values, but it lets you support fairly general data types & arbitrary update functions, including ones that preserve application-specific invariants.
The Automerge CRDT library works like this already [1][2], but it only allows specific updates to JSON data. Sharing code via your contracts solves the hard part of generalizing that to arbitrary data & updates.
[1] https://automerge.org/
[2] https://arxiv.org/abs/1805.04263
Yes, in fact you can implement this within the current framework, for example with our group chat River, each room state maintains a list of the N most recent messages sorted by (approximate) timestamp.
The idea is that you can adapt the merge logic to the needs of the specific application, and I think a time ordered event log will be a common pattern.
One weakness is that we trust the message author to provide an accurate message timestamp, however bad behavior such as manipulating timestamps can be addressed by banning the user from the room.
(the main thing I've been wanting to try: rather than graphql, send a WASM blob along with your request to a server, and just run it to filter fields in the response / pipeline requests / define "fail if any err / pair errors with requests" for concurrent requests. arguably you could even have it control callee-internal retries.)
The issue was that Freenet requires that intermediate peers can cache the contract state as they're passing it back to the requestor so in the end I decided against it, but might revisit in the future.
but for e.g. mobile apps with a trusted backend? probably great. you could even just send hashes of the WASM blobs because they will often be identical (and the full blob if that fails), and some serialized data to serve as args that vary (e.g. page-size limit of the third internal request), and you'd have an absurdly flexible system with fairly small requests. I'm just not sure how small, or if it'd end up computationally worth it compared to graphql / sparql / etc.
For example, if Freenet were to reach scale, it could eventually need some kind of economic primitive around it. Something similar to how Filecoin handles decentralized storage, but for app state. One way to do this could be paying peers to keep app state available, serve it reliably, etc. and prove they are doing so.
So there are a lot of possibilities but for now users are motivated by a desire to see the network succeed, and that seems to be a sufficient motivator at our current scale.
Freenet's approach works well for things like group chat, where temporary inconsistency is mostly just an irritation, but for a cryptocurrency it is fatal.
I'm not saying you couldn't build a cryptocurrency on Freenet, but you'd still need a solution to that problem.
Currently it appears centralized, but in principle it'd be pretty easy to shift it to a web of trust instead, and hosts can choose what they allow and how much they value it.
(zero-knowledge proofs seem probably rather important to adopt tho, as right now it'll tie you to a stable pseudonym)
- You participate in a secret cabal, and don't want participants' identities be visible to each other.
- You're a journalist, and want to give your informants in sensitive matters, or from oppressed countries, a way to securely interact with you, so that you won't be technically capable of reporting their identities.
- You're selling illegal goods or services.
I'd say that in the first two cases I would consider running a separate copy of the network, because it apparently involves one supernode, and I might want to control the supernode (or maybe not).
> We've developed a unique (AFAIK) solution to the consistency problem, every contract must define a "merge" operation for the contract's associated state. This operation must be commutative, meaning that you can merge multiple states in any order and you'll get the same end result.
Where can I learn more about this? How is this different from CRDTs/CmRDTs?
Thank you!
> Where can I learn more about this?
If you don't mind watching a video I gave this talk back in March that should be fairly comprehensive: https://youtu.be/3SxNBz1VTE0?si=R4ifrsfEUJfvjDPx
If you would prefer an article I recommend: https://freenet.org/about/news/summary-delta-sync/
> How is this different from CRDTs/CmRDTs?
It's very closely related, you can view Freenet contract state as a CmRDT, where the details of the merge operation are specified in the webassembly contract.
They describe it as a commutative monoid, which means it has associativity and commutativity. CvRDTs also need idempotence, so they can handle duplicate data. Either they are idempotent too (which would make it semilattice-like), or the network protocol handles the deduplication outside of the data itself.
Letting the payload/application define the merge operation is clever. I assume it would mean contracts could opt in to idempotency if it doesn't already exist.
The other bit Freenet has added is doing all this with DHT routing and subscriptions, rather than a more basic peer mesh. This is very different to a blockchain and means it probably isn't suited for anything transactional.
> CvRDTs also need idempotence, so they can handle duplicate data. Either they are idempotent too (which would make it semilattice-like), or the network protocol handles the deduplication outside of the data itself.
Freenet's summary/delta synchronization mechanism implicitly disregards duplicate updates. The idea is that a peer A creates a "summary" of a contract's state which is sent to the other peer B which then creates a "delta", which contains anything in B's state that isn't in A's state. The delta is then sent from B to A bringing A's state up-to-date. Thus the contract defines a custom synchronization mechanism for its state which can be very efficient.
These summaries and deltas are just arbitrary bytes as far as the framework is concerned, their meaning is entirely up to the contract.
> The other bit Freenet has added is doing all this with DHT routing and subscriptions, rather than a more basic peer mesh. This is very different to a blockchain and means it probably isn't suited for anything transactional.
That's correct, Freenet doesn't guarantee a global consensus although in practice contract states will converge within a few seconds. This is good enough for applications like group chat and social networks but for a cryptocurrency you still need to solve the double-spend and global ordering problems.
but "makes sense" and ways to optimize that can change massively with context. e.g. for a chat app, as soon as you see "deleted message X", you can reasonably drop X and all past and future changes to X because they won't be shown by anyone (don't even need to sync them). if you do that with "deleted chars 87..93" in a text editor, past-edits that you receive in the future might affect the behavior (it might add chars before those, changing what that range means), so you can't simply forget those chars (e.g. an easy option is to replay all events that occur after an event syncs, but that means retaining all events forever). the semantics you choose and what you do with the data affect your outcomes a lot.
tbh this is one of the reasons I like the idea of a WASM-defined algorithm. no one algorithm will be "best" for all data, and the storage/computation/transmission savings can be extreme.
and when played out of order, it's guaranteed to resolve to foobaz eventually or immediately, depending on when messages are received
when you encounter the scenario of a fork, there's usually a fork resolution rule, e.g. D: { "prev_hash": "<hash of B>", "content": "foobazbar" }
to resolve C vs D, sort lexicographically, choose direction of sort order and pick first
When you have non-continuous data due to messages dropping, e.g. you have B and perhaps an E that builds on C, you can either use the same lexicographic rule, or make the hash basis a combination of timestamp and hash, so you get temporality and lineage.
As for deletes, you have either the single set approach of simply making the message content empty and that _is_ the delete, or you have the 2-phase sets, where there exists an add set and a delete set.
Quite a few ways to approach it, but commutativity can be readily preserved.
So there is no one approach to this, rather you design the approach based on the application, and since contracts are just webassembly they are extremely flexible.
[1] https://github.com/freenet/river
A cryptocurrency-based solution like you suggest will undoubtedly be one of a menu of reputation bootstrapping options that will develop over time.
Don't get me wrong, this is awesome. I think it is built on a subtlety bad premise. I think it is time to start build organizational nomic games on this sort of contract system, literal organization governance, for systems like this to thrive.
> Reputation systems have been a theoretical idea for a while, but we haven't come up with anything sybil-proof without centralized identity management.
I don't think it's accurate to say that we haven't come up with anything. The original Freenet has had a decentralized web-of-trust plugin for over 20 years[0].
It's far from perfect, in practice it seems to have empowered a small number of people with disproportionate influence - but that's due to solvable design issues, it's not a sybil problem.
It's also important to distinguish between sybil-proof and "raising the cost of sybil attacks to the point that they're manageable".
I do agree with your broader point that there is massive scope for building truly decentralized governance systems on Freenet. I've done some thinking about it but it's still very speculative[1].
[0] https://github.com/hyphanet/plugin-WebOfTrust
[1] https://freenet.org/about/news/799-proof-of-trust-a-wealth-u...
And sure, they can be, if they adopt patterns that allow it. I can also find plenty of counter-examples. I don't think "humans are less vulnerable to sybil attacks than automated systems" is a weakly-defensible stance at all.
Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web.
How can anonymity be built on top of this system?
For ghost keys issuance, like with other privacy products, I'd really like to be able to buy redeem coupons in real life, not through stripe and all other online payment providers.
I'd say not working on mobile is probably the main one right now. Peers bootstrap into the network in seconds typically, and contract updates typically arrive at subscribed peers in under 2 seconds which was the design goal. The Freenet binary is just 10MB, and disk usage is fairly minimal as even the largest contracts are < a few MB.
> Is there a solution, or ideas, for DNS equivalents? I know the I2P approach (and remember that GNUNet had some unique approach as well), which can be workable in practice with "trusted registrars" as jump hosts. Name resolution feel even more important to solve in decentralized web.
Contracts in Freenet are identified by a hash of the contract webassembly + contract parameters - so the contract's identity is tied to its function. This is effectively a generalization of Freenet's "Signed-Subspace Keys" - which were also adopted by GNUnet.
> How can anonymity be built on top of this system?
Most likely through a mixnet or onion routing built on Freenet's contracts and delegates. If you don't mind listening to videos this was discussed in depth on a recent Freenet podcast[1].
[1] https://youtu.be/sfdsljrnJiI?si=tTs2qNglrYJOImn2
Been chatting a lot with the HolePunch/Tether folks, and their work is impressive, particularly the use of the DHT for all signaling, Tailscale-inspired (aka Birthday Paradox) NAT hole-punching, an entire JavaScript runtime, etc. I'm curious about some of those details in Freenet. In particular, does it do fully decentralized hole punching?
Either way, congrats!
> What's it look like over the wire?
Encrypted UDP, but likely identifiable based on timing etc - we're not trying to hide it right now - the focus is more on decentralization.
> In particular, does it do fully decentralized hole punching?
Depends on what you mean by "fully". When peers first start up they need to connect to a "gateway", a freenet peer that can receive unexpected inbound UDP. But gateways are only required to introduce peers to the network, after the initial introduction they form new connections through the network.
Right now we run these introductory gateways but will decentralize it over time.
Curious about mobile though, you mentioned iOS is the main blocker because of wasm restrictions. Is the plan to run the peer on desktop and have mobile just connect to it, or are you expecting people to run a full peer on Android?
Citation needed? IIRC, the general advice for running a Tor relay is "don't, unless you want an endless supply of abuse complaints". So you'd require a jurisdiction that ignores abuse complaints.
Now, whether giving up anonymity was worth it is a separate issue.
Freenet seems to not interoperate with the existing WWW as much, while at the same time giving more specification on a specific routing and WASM validator. The existing WWW and Braid leave those decisions up to each particular host/authority to decide.
I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives?
Great work it seems, so far. I will yet have to really look through it all. Congratulations on this.
> I wonder though, what is your idea of a future, where freenet plays an important role in most peoples lives?
While I realize this is wildly ambitious, my goal is that Freenet could ultimately replace the world wide web and the client-server architecture more generally which I view as inherently concentrating power in the hands of a few (which it has done).
I also would like to see an emphasis on local-first approaches.
This experiment, in the spirit of UNIX, composes git and text files to form a social network:
https://github.com/dharmatech/9social
Video demo: https://youtu.be/q6qVnlCjcAI
It is hard to grok what Contracts, etc. etc. allow you to do in the abstract so working through how it allows us to build a decentralized GitHub might be a good anchor in a tangible use case.
The freenet-git work is quite recent but we do feature River, our group chat app, fairly prominently on our installation page[1] so that people can quickly try out something useful. River is by-far the most fully developed app so far.
[1] https://freenet.org/quickstart/
OK, time for inception... 9social on freenet-git
¯ \ _ ( ツ ) _ / ¯
Think of it as going back to the Internet's decentralized roots.
I integrated "Fair Tunes", which tried to pay musicians for mp3 files, long before any label was selling mp3's.
(Edit: I just remembered Freshmeat automatically rejecting Snarfzilla because they were so sick of projects ending in *zilla. The owner thought it was cool and added it after I emailed. No idea why I used 'snarf'. I've never said it out loud.)
[1] https://sourceforge.net/projects/snarfzilla/
I am thinking about making a public proxy available so people can try the network itself without installing it, but we've made installation as quick and painless as possible.
https://www.youtube.com/watch?v=JWrRqUkJpMQ
Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.)
I think understanding the old one and the issues it ran into would be helpful for understanding the context, and the motivations for the changes.
Or to put it very bluntly: what is this, why should I care, and why not just use the old one?
Thanks
If you don't mind I'll quote the FAQ[1]:
The previous and current versions of Freenet have several key differences:
Functionality: The previous version was analogous to a decentralized hard drive, while the current version is analogous to a full decentralized computer.
Real-time Interaction: The current version allows users to subscribe to data and be notified immediately if it changes. This is essential for systems like instant messaging or group chat.
Programming Language: Unlike the previous version, which was developed in Java, the current Freenet is implemented in Rust. This allows for better efficiency and integration into a wide variety of platforms (Windows, Mac, Android, MacOS, etc).
Transparency: The current version is a drop-in replacement for the world wide web and is just as easy to use.
Anonymity: While the previous version was designed with a focus on anonymity, the current version does not offer built-in anonymity but allows for a choice of anonymizing systems to be layered on top.
> Which then led to people storing Bad Stuff, and this is somehow addressed in the new version? (I also read some stuff about friends and trust in the previous one, but haven't looked into properly.)
The new version doesn't claim to provide anonymity as part of the platform itself although anonymity systems can be built on top of it. I'd also refer you to this FAQ [2].
[1] https://freenet.org/about/faq/#how-do-the-previous-and-curre...
[2] https://freenet.org/about/faq/#how-does-freenet-handle-harmf...
Ed: I guess you'd need a way to run wasm in wasm, and a way to author wasm contracts - and there's not yet a wasm-hosted rust compiler?
Ed2: I'm not up to date on the state of self-hosted wasm compiler/languages... But I did come across:
https://github.com/remko/waforth
I guess it's time to dig out the thesis[t] again and look at movable code and p2p classifications again ...
[t] https://ics.uci.edu/~fielding/pubs/dissertation/net_arch_sty...
It was amazing and led me to get far more acquainted with the cyberpunk scene. It was this alternative separate internet from what the rest of the world saw with all of the good and bad that brought.
I've been meaning to set it up again and get back into it. I will say for everyone pining for the Internet of yesteryear freenet is it. Go and explore it it is everything the 90's Internet was like, super slow, crazy unhinged nerds all over the place random collections of links, crazy.
Thanks for all you've done Ian
Edit: Btw what is the best way to support the project and get involved?
If you're in a position to support the project financially you're more than welcome to donate[1], we're a 501c3 non-profit and all funds go to support development.
If you're a developer and are interested in building on Freenet I suggest starting with https://freenet.org/build/manual/tutorial/, you can also join our Matrix room[2], or install Freenet[3] and chat with us on River[3], our decentralized group chat.
[1] https://freenet.org/donate/
[2] https://matrix.to/#/#freenet-locutus:matrix.org
[3] https://freenet.org/quickstart/
https://news.ycombinator.com/item?id=40469711 - Ian Clarke explains the next generation of Freenet [video] (2023)
Also Freenet is much more general, you could think of Napster like a shared hard drive, whereas Freenet is like a shared computer capable of running decentralized applications like group chat, social networks, search engines, etc.