@cindex Philosophy
@node Philosophy
@chapter Philosophy

@c NOTE: We should probably re-use some of the images lynX created
@c for secushare, showing some of the relations and functionalities
@c of GNUnet.
The primary goal of the GNUnet project is to provide a reliable, open,
non-discriminating and censorship-resistant system for information
exchange.
We value free speech above state interests and intellectual
monopoly. GNUnet's long-term goal is to serve as a development
platform for the next generation of Internet protocols.

Participants are encouraged to
contribute at least as much resources (storage, bandwidth) to the network
as they consume, so that their participation does not have a negative
impact on other users.

@menu
* Design Principles::
* Privacy and Anonymity::
* Practicality::
@end menu

@cindex Design Principles
@node Design Principles
@section Design Principles

These are the GNUnet design principles, in order of importance:

@itemize
@item GNUnet must be implemented as
@uref{https://www.gnu.org/philosophy/free-sw.html, Free Software} ---
This means that you have the four essential freedoms: to run
the program, to study and change the program in source code form,
to redistribute exact copies, and to distribute modified versions.
(@uref{https://www.gnu.org/philosophy/free-sw.html}).
@item GNUnet must minimize the amount of personally identifiable information exposed.
@item GNUnet must be fully distributed and resilient to external attacks and rogue participants.
@item GNUnet must be self-organizing and not depend on administrators or centralized infrastructure.
@item GNUnet must inform the user which other participants have to be trusted when establishing private communications.
@item GNUnet must be open and permit new peers to join.
@item GNUnet must support a diverse range of applications and devices.
@item GNUnet must use compartmentalization to protect sensitive information.
@item The GNUnet architecture must be resource efficient.
@item GNUnet must provide incentives for peers to contribute more resources than they consume.
@end itemize


@cindex Privacy and Anonymity
@node Privacy and Anonymity
@section Privacy and Anonymity

The GNUnet protocols minimize the leakage of personally identifiable
information of participants and do not allow adversaries to control,
track, monitor or censor users activities. The GNUnet protocols also
make it as hard as possible to disrupt operations by participating in
the network with malicious intent.

Analyzing participant's activities becomes more difficult as the
number of peers and applications that generate traffic on the network
grows, even if the additional traffic generated is not related to
anonymous communication. This is one of the reasons why GNUnet is
developed as a peer-to-peer framework where many applications share
the lower layers of an increasingly complex protocol stack. The GNUnet
architecture encourages many different forms of peer-to-peer
applications.

@cindex Practicality
@node Practicality
@section Practicality

Wherever possible GNUnet allows the peer to adjust its operations and
functionalities to specific use cases. A GNUnet peer running on a
mobile device with limited battery for example might choose not to
relay traffic for other participants.

For certain applications like file-sharing GNUnet allows participants
to trade degrees of anonymity in exchange for increased
efficiency. However, it is not possible for any user's efficiency
requirements to compromise the anonymity of any other user.
