Understanding the guiding lines for our development process

We built this software with several goals and guidelines in mind. They all came from joining a large number of "books of dreams" and initially people reacted quite sceptically to this list. Yet, all that we are using today as everyday tools was "crazy dreams", just some 5-10 years ago.

Here is the list of requirements we started from:

  1. Write as little software as possible. Break the system in layers and use whatever Open Source tool that can perform the layer's job.
  2. Ensure co-operative content production. We want people to be able to freely add and edit things.
  3. Low spam. We need to make any spam-bot simply useless.
  4. No server/bandwidth expenses. Our system must be able to serve content on the net if anyone wants to use it for that, but it shall never force anyone to start large fund-raisers to pay for servers and bandwidth.
  5. No digital barrier, so no stoppers for those who cannot connect to Internet. People shall be able to fully work off-line. When no Internet connection is available it must be possible to send and receive content exchanging supports like RAM keys. This is especially vital for countries in which expensive public infrastructure cannot be expected to grow out of thin air overnight.
  6. No central servers, no central control. So no group of people who has larger powers than anyone else. In instead, all users shall be able to "build a fence" and live as they please behind it. This must be true both at individual and corporate level. We aim to be a general purpose repository like the WWW, where everyone is free to publish what they please, and people are free to choose who and what is of interest to them.
  7. Possibility to store corporate private info. A group of people or a company may well want to keep their data secret, or to sell access to their data.
  8. Content usability. A network that can potentially group billions of nodes, each of which can store specialized content, builds up to a pretty complex puzzle for anyone who wants to become part of it. We needed a good compass for users.

We assembled our pick of technologies based on these requirements. In the next chapters we shall discuss what layers are responsible for co-operative content management and what pre-existing tools have been chosen to perform the related tasks.