researchstudio-sat / webofneeds

Finding people to cooperate with. Protocol, not platform. Decentralized. Linked Data. Open Source.
http://researchstudio-sat.github.io/webofneeds/
Apache License 2.0
63 stars 20 forks source link
decentralized java javascript linked-data matching matchmaking protocol rdf

Web of Needs

Finding and cooperating with people. Protocol, not platform. Decentralized. Linked Data. Open Source.

Join the chat at https://join.slack.com/t/webofneeds/shared_invite/enQtNzc0NjM0MzY3NTIyLTMwZmY1YTljMjMzYjJhMjJkYjYxM2MyMDdmMjU4ZTE4MDM4NWFiNDJiNWMyZGNjYTliYjA4NWYzY2RjMGY5YWE Join the chat at https://gitter.im/researchstudio-sat/webofneeds

This software is for people who need something, have something to offer, want to discuss something etc. - in short: who wish to connect with others for some reason.

  1. They publish a posting about it online
  2. They get recommendations on matching postings created by other people
  3. They start chatting with some of the creators of these other postings
  4. Maybe they'll meet. Maybe one will buy from the other. Maybe they will start a company, plant a tree, get married, found a party...

That's it, basically. Try our demo on matchat.org! And then run your own servers!

interaction-diagram

Overview

The Web of Needs is a decentralized infrastructure that allows people to publish documents on the Web which make it possible to contact each other. The document may contain a description of a product or service required or offered, a description of a problem to be solved with the help of others, an invitation to social activities, or anything else users may think of. Some concrete use cases are described here. On the abstract level of description, the document can be said to represent an interest in or a need for some kind of interaction with others.

As this document or entity is the central and indivisible building block of the system, we refer to it as an atom. Each atom has a globally unique identifier and an owner, i.e., a person or other entity that creates and controls it. When atom owners want to communicate with each other, a connection object is created for each atom involved.

Web of Needs is built out of three main components. Owner applications enable users to create and manage their atom objects. They can be any type of UI application like web applications or mobile apps for example. Owner applications publish atoms as RDF documents to won nodes on the Web. When atoms are published on the Web, independent matching services can crawl them (or subscribe for atom updates at won nodes) and look for suitable matches. A protocol is in place to inform the won nodes and atom owners of possible matches using hint messages. Based on this process atom owners can initiate connections to other atoms and start communication and other transactions.

Anyone can run any of these components. They can all talk to each other.

Demo

A demo deployment of the Web of Needs with a simple owner application, one won node and one matching service can be tested at https://www.matchat.org

Running WoN

There are two ways of running WoN locally:

1. Docker

The "fastest" way to run the WoN locally ist to use the provided Docker container and setup. We recommend this solution if you want to try the WoN locally for the first time to have a quick hands on. For running WoN with Docker locally follow the steps in the WoN with Docker Documentation.

2. Tomcat

The Tomcat solution of running the WoN locally is mainly for development purposes. If you focus on just one aspect in the WoN you can combine the Docker and the Tomcat setup e.g.: Working on the WebApp, you just need to run the WebApp locally on tomcat and the Node and Matcher still with Docker. To do so we recommend Eclipse as IDE and you can find the setup documentation here.

Development

How to write a bot

Basic information about bots is provided here. To write a new bot, we recommend to use the bot skeleton as a template, providing all needed functions for a bot in the WoN.

How to write a matcher

For the development of a matcher we recommend using the Tomcat-setup mentioned above. After having that up and running, you can continue with the following documentation-parts: Basic information about the matcher service is provided here. To integrate a new matcher, or matching algorithm we recommend to use the matcher skeleton, providing all needed functions for a matcher service in the WoN.

How to write a WoN web application

For the development of a won-owner-webapp we recommend using the Tomcat-setup mentioned above. After having that up and running, you can continue with the following documentation-parts: Basic information about a WoN web application is provided here

How to set up a WoN cloud instance

Information coming soon here

Further resources

Papers and further Information