/r/Freenet
A platform for censorship-resistant communication and publishing.
freenet.org - Official website, focused on the new version of Freenet (formerly "Locutus")
hyphanet/fred - Fred, the original codebase now spun-out into an independent project called Hyphanet
Rules:
/r/Freenet
I try to get into freenet, the websites download fıne but i just cannot seem to download anything else. I try to download the FMS software and my browser gives a warning about how unsafe that file might be. I click to download anything option aaaaaand. Nothing happens. How do i download these stuff ?
u/sanity
Just curious. Seems like it'd be a bit tough to use contracts if we don't know which ones exist 😅
Would it be done by having it built-in to freenet or would a contract itself keep an index / directory of other contracts?
Every time I execute the run script, I’m told the service is not running as a wrapper and that Freenet won’t be able to autoupdate. Fixing the auto update mechanism seems pretty well impossible atm.
This release resolves the last blocker for Freenet / Hyphanet 0.8 by providing an official Debian package. Additionally it optimizes the networking and data transfer core and provides many improvements for website authors and user experience.
There are five larger areas of improvements:
Install Freenet / Hyphanet for Windows, for GNU/Linux, macOS and other *nixes, or for Android. See the download page for more information and other platforms.
You can also read the release announcement on
Hyphanet as privacy core.
Starting with this release, Freenet / Hyphanet has an official Debian package built automatically via github actions. This was the most important high-impact-task and the last release blocker of version 0.8 in our Roadmap. Big thanks to DC*!
With this finally realized, the next step is to get in contact with the many privacy focussed distributions which build on Debian to make hyphanet-fred
available where it is most important. Once this is done, tools which build on Hyphanet — like FMS, but also jSite and tools from pyFreenet — can be packaged to work out of the box, using Hyphanet as an ordinary background service. That’s a step towards Hyphanet as decentralized, privacy-preserving communication backend for other applications.
Distributions for which there already are packages include Gentoo (official: the pioneer), Arch (inofficial), and Guix (inofficial).
Another step towards this is accepting the Schema hypha[net] to simplify writing browser extensions that forward hypha:-links to Hyphanet.
Optimized Hyphanet core.
The networking layer was optimized significantly. Searching packet types is often stopped early and common or cheaper checks are done before less common or time-consuming checks. This gives significant reductions of CPU load, especially for very fast nodes.
Juiceman fixed a bug that limited MTU to 1280 where not needed.
And recently failed and data not found cooldown times were reduced to 5 minutes and 3 minutes, reducing one of the big annoyances when accessing a site quickly after upload.
On the data transfer layer healing was optimized. After 1495 strongly increased the amount of healing to keep large files available for longer, 1498 specializes healing to keys close to the node location. This reduces healing per file, but improves privacy, because healing inserts are then more similar to forwarding — they mostly send data close to the nodes location — and it reduces the network load of healing, because the specialized healing inserts need fewer hops to reach the optimal storage location in the network.
Optimized core features.
For website authors, more CSS elements, selectors and combinators (:checked
, word-wrap: anywhere
, focus-within
, ^=
, $=
, *=
, >
, +
, ~
) and additional HTML elements (summary
, details
, <meta name="Viewport"...>
) are available. This strongly expands the possibilities of websites in Hyphanet, because Javascript or webassembly are no viable options in an environment where a privacy breach could put people at risk. We’ve seen with Java applets, that untrusted code will always break out of its containment. The CSS improvements in contrast provide a safe way to enable limited interactivity.
Streaming support via m3u lists was improved to allow accessing segments of up to 200MiB.
And using -1
as version in a USK now properly finds version 0
, if this is the only existing version.
Far from the core, but essential for usage.
In addition to these changes deep down, there are a number of directly visible improvements.
The plugins KeepAlive and Sharesite are updated (the latter now uses the new Night Zen Garden style). The UPnP2 plugin is now visible in simple mode. It can replace UPnP and should work better. On the flipside the Library plugin is moved to advanced plugins, because it does not work reliably enough.
The plugin list is easier to navigate by removing the defunct option to download plugins from the clearnet and by adding better styling. Downloading from the clearnet was an unnecessary privacy risk since we’ve been bundling essential plugins with the installer for a few years now.
The noderef for friend-to-friend connections is shown in simple mode again, because it is robust enough with the changes in recent years. This should remove a barrier to adding direct connections and enabling fully confidential messages between friends.
There are new configuration options to allow connecting via local services. That’s a step towards making it easy to add a second layer of security, for example confining connections to a local network. Thanks goes to s7r for these changes!
When bandwidth detection fails, the upload bandwidth now defaults to 160KiB/s. Also the NLM config is now disabled statically. This was a testing setup which could still be active in old nodes, but it would break connectivity nowadays.
The default bookmarks include the Opennet SeedNodes statistics, the generate media site to create decentralized streaming sites, and the high-impact-tasks. The bookmarks are also re-ordered to be a better match for newcomers. Starting category: first steps, clean spider, Index of Indexes. Software category ordered by ease of use from fproxy.
There were a number of Java 21 fixes, including all our tests (thanks to Bombe!), and improvement to the github actions (thanks to AHOHNMYC).
In addition there was a lot of polish. Bert Massop (welcome back!) and Veniamin Fernandes replaced our homegrown CurrentTimeUTC with modern Java options. Alex fixed the pronoun used in strings. Bombe added getters for all direct field access in the node. Hiina reduced logging level of store warnings so no unneeded backtraces are created for node with large stores and Juiceman updated code to use more modern structures.
Time-dependence of compressor selection was removed. This caused non-determinism for inserts and could cause keys to be non-reproducible on systems with faster or slower network.
Recovered core safety on Windows.
And finally the new exe signing workflow we built to fulfill the requirements of SignPath, our new windows installer signing provider for the upcoming releases, runs the verify-build script on every release to ensure that the jar we release has actually been built from the sources. This provides a second safety net, in addition to anonymous users running the script and posting the results (thanks to all who did this — please keep it up, otherwise people have to fully trust github). The release is not yet byte-by-byte reproducible, because the jar MANIFEST defines among other info the exact java version used to compile it, and the java version available differs by distribution and time, so it would get harder over time to verify the build. Instead its verification ensures that there are no functional changes by comparing the content of the decompressed jar with a clean build from the sources.
A special thanks goes to Bombe for many careful reviews!
Join our core.
If you want to help us get better, please chat with us in <a href="https://web.libera.chat/?nick=Rabbit|?#freenet" id="chatlink" class="btn button-custom btn-custom-two">#freenet @ irc.libera.chat</a>. And give us time to answer, we’re all volunteers and might not be in your timezone.
To get into development right-away, have a look at one of the Freenet / Hyphanet Projects or just get fred and fix something that annoys you.
And to take on something that makes a big difference, have a look at the high-impact tasks.
In addition to coding, spreading Hyphanet, joining the community, writing a decentralized website, and other ways to contribute within Hyphanet, you can join the awesome team of translators at transifex. They are the reason why we’re able to support several different languages, the often unseen heroes who make our work accessible to those who need it the most.
Hyphanet is the original Freenet,
a peer-to-peer platform for
censorship-resistant and privacy-respecting
publishing and communication.
I worry about my child and the Internet all the time, even though she's too young to have logged on yet. Here's what I worry about. I worry that 10 or 15 years from now, she will come to me and say 'Daddy, where were you when they took freedom of the press away from the Internet? --Mike Godwin, Electronic Frontier Foundation
What about the name „Hyphanet“? See Freenet renamed to Hyphanet.
That Hyphanet can keep moving forward and help people worldwide to exercise their basic rights and freedoms is the work of amazing volunteers, both contributors and people running Hyphanet nodes.
Thank you for your contributions, and thank you for using Freenet / Hyphanet!
-- AB
Install Freenet / Hyphanet for Windows, for GNU/Linux, macOS and other *nixes, or for Android. See the download page for more information and other platforms.
I've not been able to find an index that's been updated since 2018 at the latest, are there any that are updated often?
i want to use a slow NIC for freenet (wlan2), instead of the default gateway NIC(usb0), how do i do that? preferably using the NIC's name rather that ip address
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.xxx.xxx 0.0.0.0 UG 232 0 0 usb0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
yyy.xxx.vvv.1 * 255.255.255.255 UH 331 0 0 wlan2
192.168.xxx.0 * 255.255.255.0 U 232 0 0 usb0
Hi, I have a home server setup where I run a bunch of stuff. Since it stays on 24/7, I would prefer to run hyphanet from there. I used the headless install method with Java. I don't know if there is another way to do it. Port 8888
is already being used by other software, and I noticed it already assigned proxy port to 9999
. I have added my server's local ip to the allowed hosts in freenet.ini. When I try connecting to the server via that port from a different machine, I just get connection reset on Firefox and 'page isn't working' on brave/chromium. How do I solve this?
A quick curl -L 10.0.02:9999
on the host machine shows it is working, but I can't make it work outside of the machine. I re-posted because reddit deleted my other post after I linked to my config file.
I had found this index and i wanted to use it but it said i needed an XML Librarian plugin and that I would have gotten it if I had clicked "Search Freenet"
unfortunately I don't see that option, nor do I see it on the list of official plugins on my plugin page, so I wanted to ask if anyone had a key or a way to point me to one?
Hello -- someone should be able to help me on this. I installed correctly (at least I think ;) and it ran set up successfully (said all was ok), but now when I click on red icon to start up freenet it just stays red and won't start. I have an Intel Mac with high sierra 10.13.6 os. Installed Freenet version: new_installer_offline_1497 from hyphanet site, changed directory to Library upon install (wanted to put into Apps). All came out ok - I see red icon but doesn't turn to blue... Thanks if you can help.
Currently you need to donate money to get a ghost key, and this is a way to counteract spam. Fair enough, but after it launches won't it become free? Otherwise it does go against what it stands for in my opinion.
NixOS is not using a wrapper so Hyphanet's own updater cannot update it. How do you update the system?
So far what I see is a well thought out project and I am excited to see what it's capable of! 100% props to the team! 🥳
I was reading through the documentation for Freenet and it defines an alternative (by design and principle) version of Hyphanet's storage. Namely using contracts for decentralized storage. Which begs the question: how would it handle synchronizing large amounts of queries of large files from a well distributed network?
I assume that multiple nodes will have their own copy of the files, but for every node to process the deltas (aka, what's different between your file and mine) for multiple nodes at a large rate seems like a massive bottleneck. I'm sure this has been solved but hadn't been made clear since this is such a niche scenario (albeit common in the traditional internet client-server model). Examples would be large collaborative projects that work on real-time data (states). For example: the state of a game, where multiple streams are connected to a single state that needs to be constantly modified and updated for everyone connected.
Another question came to mind about initial network discovery. Essentially the bootstrap problem. A single source of failure if attacked. What techniques would there be to prevent using a bootstrap node?
I also questioned how streaming would work, but I read a page later and saw the concept of Freenet Transfer Protocol (FrTP) which essentially answered my question for data streams. 🙂
I'm not a Rust developer, but I'd be excited to develop some apps when Freenet becomes stable enough to use. I'm looking forward to its development and hope it turns out well!
I have watched several of Ian's videos that describe that Freenet is a Key/Value store where the Key is a hash of the WebAssembly code that enforces a contract around state changes to the value.
The question I have is "why"? Perhaps I need a bigger picture view of how someone builds an app with this? I have seen the example tutorial and that makes it clear "how" to implement a contract and a web application that uses it, but not why the system was architected this way.
I can see a contract essentially describing the data type and access policy of the value, but how do you have multiple values of the same contract etc.?
Sorry if this is covered somewhere and is more clear there - please let me know if so! And thanks for the hard work on this, definitely sounds interesting, and hence the questions. :)