Before we start, I’d like to point out that these are my personal opinions. They do not necessarily reflect the positions of the whole freenet project. – (ArneBab)
Zilion: When did you became a freenet developer? Why?
Arne Bab: I started to contribute in 2013 when groklaw closed down the leaks from filesharing trials with the words:
“There is now no shield from forced exposure… The foundation of
Groklaw is over… the Internet is over” – Groklaw, Forced Exposure
That was my wakeup call: I knew I could no longer just be a user. I knew I had to fight. And I knew that the conceptually strongest system we have is Freenet.
Zilion: Freenet has 18 years of continuous development, from here to there, how do you see your growth?
Arne Bab: When I started using Freenet around 2006 or so,¹ we had no automatically updating websites so people used images which linked to future versions of the site: If they showed up, there was a new version. I think back then jSite actually had a template which automated that. Now we have USKs which implement versioned data on the immutable Freenet links. Also we now have Sharesite which makes it a matter of minutes to create your own website in Freenet, without requiring any HTML skills.
¹: August 2006 is the earliest time I can trace back in my local files. I might have started earlier, but I don’t remember the exact time I started using Freenet.
We had no censorship resistant communication platform back then: All we had for discussing stuff was Frost, which looked really nice and had a fun and well thought out interface — but what so easy to spam that it could be blocked by any script kid. It still exists, but it’s still just as spammable. And nowadays we have FMS (spam-resistant forums) and Sone (microblogging) and FLIP (chat) and Freemail (email). And we can use pyFreenet to build arbitrary communication applications with built-in spam protection by using Freenet as their backend. For a proof-of-concept see babcom_cli: https://github.com/ArneBab/lib-pyFreenet-staging/blob/py3/babcom_cli
Also we had no option for Darknet: Any attacker could always find every single Freenet user by collecting IPs. Now we have the option to only connect to friends, and to exchange confidential messages between friends. This darknet option actually required a full rewrite of the networking structure, which was done in 2007.
Back in 2008, Freenet would become pretty much unusable when we used lots of subscriptions to be notified of updates. With lots meaning a few hundreds. Nowadays it stays usable with 10 000 subscriptions — thanks to the anti-spam plugin (Web of Trust) pressure-testing it. This is only one of many examples of optimizations which became necessary to make Freenet work well in actual usage.
And we had no mp3 filter. Nowadays we have it, and several audio shows have been appearing on Freenet.
One point I contributed to myself is the link-length fix: The structure of the network was pretty broken due to its self-optimization being skewed by local requests. We fixed that by forcing a minimum number of short-distance links — which roughly doubled the speed of Freenet and the lifetime of files within Freenet. With the old structure efficient small world routing only used around 10% of the connections of your freenet node, and now it actually uses most of its connections.
So that’s for the short “what’s new in Freenet”, and I’m sure I missed a whole lot of things.
Zilion: Many know that Java is a bad language, even more so for an anonymous network, how do you see it? Do you think it was a intelligent choice?
Arne Bab: I think Java was the right choice back then, and it’s still a decent choice today. It is safe from out-of-bounds access and many other common problems in C, and it is pretty fast — roughly 1/3rd of native C by the unscientific metrics of the benchmarks game (which are still the best public metrics we have). This makes it roughly number 3 in speed among common languages. Also many, many people are able to write Java, though it’s not the prettiest language to write and does have nasty surprises for beginners (but these typically just keep you from getting your code compiled, they do not creep up in the running system).
And from the viewpoint of security it is pretty good if you’re not trying to use it to run untrusted programs from websites. There might be many security fixes every year, but most of these are related to sandboxing of java applets — which simply isn’t relevant for Freenet, because it’s running as a locally installed application where untrusted code isn’t in the threat model. There is an issue with implementing cryptography without side-channel attacks in Java, but given that we have even less people than GnuPG and given the huge gaping holes which were OpenSSL which is used virtually everywhere, I think getting the protections of Java is a pretty good tradeoff.
So, I actually argued in favor of Java. Java was the first real programming language with which I failed to actually learn programming (back then contributing to Phex). The second was C++ (at university) and the language with which I managed to really understand programming was Python — which then led me to understand C++ a few years later, and to stop loathing Java around 3 years ago. Yes, that means I still pretty much hated Java when I started to contribute to Freenet, but I considered contributing to Freenet to be more important than my preferences in programming languages. Nowadays I’d say luckily, because Java isn’t that bad after all.
According to this report:
“I’ve been using Freenet for over a decade and in that time I feel like the project has not made any significant progress. It has only grown incomplexity and “…as we know, Complexity is the enemy of security.” -Steve Gibson. I hope that some of the recently donated money will be put towards simplification.
Finally, I’m simply tired of being regularly exposed to unlabelled child pornography.”
Zilion: Complexity and child pornography is being a nuisance to people, how do you (developers) intend to deal with it?
Arne Bab: These are two very different issues, so I’ll address them separately.
Complexity is something to reduce step by step. In my opinion the worst offender here is the user interface which uses pretty deep hierarchies. But then I did not travel deep into all the different layers in Freenet, so I’m sure there is a lot more complexity I did not yet stumble upon. This is something which happens when a project grows, even more so if there is a single paid developer among many free-time contributors who do not have the time to review all the code written by the paid developer. The fast solution for one who is deeply embedded in the whole code is often the hairy solution.
We’re working at reducing that complexity and the reasons for rising complexity. For example the next branch currently contains changes which cut out many of our custom grown solutions and replaces them with standard stuff. And we nowadays have stronger code review in place, with the coding time more equally spread among the team members, so new code actually gets seen by others — and changes which increase complexity are called out.
Unlabelled child pornography is pretty much a thing of the past, thanks to anonymous index authors who take care to label stuff clearly. In the main bookmarks of Freenet there are only index pages which filter out any porn and all child porn. So at todays state of Freenet, you’re unlikely to stumble over child pornography if you’re not actively searching for it. Or using Frost.
Zilion: Frost vs FMS, what is your choice and why?
Arne Bab: FMS. Frost has the far superior user interface and some interesting features like private boards and read-only boards, but it’s so easy to spam that I could pretty much spam it into oblivion using my poor overworked homeserver and less than two days of scripting.
Zilion: For people who do not know Freenet and have never had contact with it, what can you point out from positive and negative?
Arne Bab: negative: It doesn’t look and feel like a modern web app. Yes, this is a big deal, since user interfaces have come a long way in the past 15 years. The anti-spam plugin is still pretty resource hungry. And Freenet does not work on your phone, yet (and it would take skilled hackers investing quite some time to make it work *well*, due to battery, storage and connectivity restrictions of smartphones), however there’s an app for connecting to a Freenet which runs on your home computer: https://github.com/louboco/Icicle
positive: Freenet with FMS, Freemail and friend-to-friend messages gives you pseudonymous, public and confidential communication, while the clearnet essentially only gives you public communication. This restores possibilities you have with purely analog communication, possibilities we’re losing bit by bit while the analog world is more and more becoming a mirror of clearnet communication. Also it is really easy to create your own websites in Freenet: just activate the Sharesite plugin.
Zilion: Repressing illegal content does not become effective, because we know that if one falls, two more appear again. A work of conscience would bemuch better than repression.
What do you think about people who use Freenet just for illegal purposes? And what is your concept of freedom about that?
Arne Bab: I cannot stop them without enabling others to stop legal usage they happen to dislike. Therefore free speech in technology is something which actually is binary: If you add the option to censor anything, you open the gate to censorship of everyting. Illegal usage is something for police to tackle: If what people do is so problematic that it warrants setting a handful of skilled investigators to the hunt, they can track down most people by conventional means — like analysis of the writing style or getting them to send a package by mail — especially if money is involved. Adding censorship to technology makes that weapon much too easy to wield.
If money is involved, your anonymity is already blown on a theoretical level — which is even more true with the fully traceable bitcoin — therefore I do not worry about Freenet for large-scale criminal activities: It does not benefit organized crime, because people who can launder money can already buy clearnet servers anonymously.
Zilion: What expect from the future in Freenet?
I need to answer this in two steps:
– What do I expect to happen with high certainty?
– What features would I like to see?
I expect that we will first of all be re-consolidating our release structure within a few weeks, so we’ll be able to quickly release contributions again. There are already some changes which only require a few hours of work to complete: they are already published as pull-requests at https://github.com/freenet/fred/pulls. One of these is the Winterfacey theme, which makes Freenet look and feel much more modern. Another likely change are the improvements to the Windows installer which were developed with funding from the DuckDuckGo donation. Given that we decided to fund it,¹² I also think we will get Darknet invitation bundles and improvements in CSS3. This is the basic stuff.
¹: For details on the task, see https://firstname.lastname@example.org/msg29782.html
²: Results of the poll we did among users and developers are available in archives of the freenet devl mailing list: https://email@example.com/msg29628.html
Features I would like to see the most are an implementation of the fix for the pitch black attack³, adding the chat plugin to the official plugins (with some additional privacy protections) and loading chat and Sharesite by default, so new users can directly start to communicate and write their own websites without having to understand the plugin-system. Additionally we should fix bugs in the Keepalive plugin and make it official, too: this will allow people to selectively preserve content in Freenet. Also I’d like to see support for checking m3u files which would give us convenient radio-like playlists over Freenet (I started working on that a year ago but got sidetracked) and for checking modern video and audio formats. There are some sites which show that it is possible to compress half an hour of video down to 30 MiB using vp9 and opus. With this level of compression, Freenet could support streaming video on a typical DSL line and websites in Freenet could use the video-tag to create a decentralized youtube (I can easily add the tag, but we need the checking for video formats before we can go there). Last but not least I deeply wish that we will see completion of the scaling fixes⁴ for the anti-spam plugin (Web of Trust) and then the re-activation of Freetalk — a convenient forum system over Freenet which we had to disable a few years ago because it hit scaling problems.
On top of these, I hope that someone will find the time to implement steganographic transport plugins which disguise freenet traffic as something else — like mumble group-chat. Different from the last time this was attempted, we could now build on the work done by the Tor project for this. And it would be great to have more features for direct communication between friends. We have these truly confidential communication channels with your darknet friends, but we’re not actually using them for much yet.
³: I wrote an article which describes the pitch black attack and a successful simulation of its mitigation: http://www.draketo.de/light/english/freenet/mitigate-pitch-black-attack-simulation-works
⁴: For details on the scaling fixes and a full cost estimate, see https://bugs.freenetproject.org/view.php?id=3816#c12182
Zilion: Can you tell us how Opennet and Darknet works, and its pros and cons?
Arne Bab: Very short version: In Opennet you connect to random strangers. In Darknet you connect to people you know personally. They differ by vulnerabilities which exist in Opennet but do not exist in Darknet:
– Opennet cannot ever be secured against an attacker who creates lots of centrally controlled Freenet nodes (a sybil attack). They can connect to everybody and watch the majority of communications. In Darknet that requires tricking the majority of people into manually connecting to attackers. In Opennet attackers can even try to surround a node completely by attacking its existing peers and then watch every request which enters and leaves the node. In Darknet that requires first getting a connection to a node and then attacking all the (unknown) darknet peers.
– In Opennet it is possible to find all users because at some point the seednodes will have told you about all of them. In Darknet connections are only between friends and you must use social engineering to trick people into betraying their friends. Which is many orders of magnitude more expensive than simply creating a few hundred Freenet nodes and talking to the seednodes.
Some details beyond security:
– In opennet your Freenet chooses a number between 0 and 1 [0..1) on first start. This is its location which stays fixed. Then it connect to a handful of seed nodes and ask them for references of people which are close to this location. To find these references, the seednodes send a request in Freenet to your location. You then try to connect to all nodes which take part in routing this request.
– In Darknet your Freenet also chooses a number between 0 and 1. However it only connects to people you explicitly added. Since it cannot change the connections, it swaps its location with other Darknet nodes in the network
As an intermediate step while you do not have enough darknet nodes to run full darknet, there is hybrid mode: Opennet with some Darknet connections. This is already much more secure than pure Opennet, because you cannot be surrounded completely.
TLDR: Use Darknet when you know at least 5 people who use Freenet. Use hybrid when you know fewer Freenet users (and convince more people you know to use Freenet). Use Opennet when you know no other Freenet users (and convince people you know to use Freenet).
Zilion: I imagine it must be busy, so I want to thank you for your time! You have a message or consideration for peoples?
Arne Bab:Please try out Freenet ( https://freenetproject.org ), and install FMS (see http://freesocial.draketo.de/fms_en.html), because that’s where you can currently get the most feedback, and you need feedback to keep motivated.
And if you have some coding experience — regardless of the language — you can fix many of the problems you may find in Freenet. Parts of its code might be complex, but most of the stumbling points for new users can be fixed without diving too deep. And if you’re searching for deep problems, you can find those in routing and mitigating statistical attacs. In any case, please join us in the #freenet channel on irc.freenode.net: https://webchat.freenode.net/?randomnick=1&channels=%23freenet&uio=d4
Nowadays many people are talking about re-decentralizing the web. Freenet already provided truly decentralized services in 2007, and nowadays you can actually create an anonymous identity, upload it to a secret key in Freenet, write down the key, burn the computer⁵ and recover the identity at another computer. A proof-of-concept for this is implemented in babcom_cli (see my answer about growth).
⁵: You don’t really need to burn the computer (but you could do it and still recover the identity if you do it within around two weeks ☺ ). There’s a transient operation mode which can be used on a live CD so nothing gets written on your disk.
And whatever you see, do what you need to do to stay happy. If you let yourself become cynical, you’ll only harvest regret. I still regret the time when I wrote a cynical answer in IRC which hurt a very enthusiastic contributor, and I want to use this chance to say sorry. If you want to improve the world, do it with a smile. And remember the wise words of the writer Ursula K. Le Guin:
“We live in capitalism, its power seems inescapable – but then, so
did the divine right of kings. Any human power can be resisted and
changed by human beings. Resistance and change often begin in
art. Very often in our art, the art of words.” — Ursula K. Le Guin
Live and find joy and a larger reality in your life. Live a freedom
which you will remember happily when you think back in twenty years. We
need to have fun to challenge the power of the one (ring which binds
them all — well, actually the one per mill, but the difference is
smaller than it seems ☺).
Zilion Web: Very thanks!
Arne Bab: You’re welcome — and thank you for the interview!
means being political
without realizing it.
Learn more about Arne Bab in: draketo.de
Know more Freenet: https://www.freenetproject.org
The interview was given Zilion Web!