fred

Anonymously share files, browse and publish "freesites" and chat on forums.
09 Feb 202058142

Build Status Coverity status

Freenet

Freenet is a platform for censorship-resistant communication and publishing. It is peer-to-peer software which provides a distributed, encrypted, decentralized datastore. Websites and applications providing things like forums and chat are built on top of it.

Fred stands for Freenet REference Daemon.

Building

We've included the Gradle Wrapper as recommended by the Gradle project. If you trust the version we've committed you can build immediately:

POSIX / Windows PowerShell:

$ ./gradlew jar

Windows cmd:

> gradlew jar

We've configured it to verify the checksum of the archive it downloads from https://services.gradle.org.

Testing

Run Tests

To run all unit tests, use

./gradlew --parallel test

You can run specifics tests with a test filter similar to the following:

./gradlew --parallel test --tests *M3UFilterTest

TODO: how to run integration tests.

Run your changes as node

To test your version of Freenet, build it with ,./gradlew jar, stop your node, replace freenet.jarin your Freenet directory withbuild/libs/freenet.jar`, and start your node again.

To override values set in build.gradle put them into the file gradle.properties in the format variable = value. For instance:

org.gradle.parallel = true
org.gradle.daemon = true
org.gradle.jvmargs=-Xms256m -Xmx1024m
org.gradle.configureondemand=true

tasks.withType(Test)  {
  maxParallelForks = Runtime.runtime.availableProcessors()
}

Contributing

See our contributor guidelines.

Licensing

Freenet is under the GPL, version 2 or later - see LICENSE.Freenet. We use some code under the Apache license version 2 (mostly apache commons stuff), and some modified BSD code (Mantissa). All of which is compatible with the GPL, although arguably ASL2 is only compatible with GPL3. Some plugins are GPL3.