Nimbus is a system that allows users to specify:
- Their personal details
- A list of things they are interested in
- A list of things that they are seeking
- A list of things that they are offering
Their Nimbus device will then find other Nimbus devices that are nearby and compare its user's list with those of the other device. If matches are found (e.g.: One users is offering something that the other is seeking, or both users share a common interest) then the users' contact details are exchanged so that they may get in touch.
When users specify the things they are interested in / seek / offer they choose an appropriate type from a pre-defined hierarchy of categories. This enables much more sophisticated matching than if they just typed the names of their things. For example, if one user is seeking a car he/she would pick a category like:
Physical Item → Vehicle → Motorised → Car
Another user may be offering a specific type of car, such as:
Physical Item → Vehicle → Motorised → Car → Truck → Pick-up truck
Since the second user's pick-up truck is a type of car it would match the first user's query although the names “Car” and “Pick-up truck” are quite different.
Purpose of this project
We are developing Nimbus as an open specification that anyone can implement. Our specification documents define the exact requirements for a Nimbus implementation as well as the formats that Nimbus uses to exchange users' data. Our hope is that others will take our finished specification and create Nimbus implementations on a large variety of platforms and devices.
We are also developing our own reference implementation of Nimbus in Java. This will demonstrate the capabilities of Nimbus and may be used by others as a template for their own implementations or to test their own implementations against.
Both the spec and our reference implementation are currently under development. You can check out the work so far in our CVS. Nimbus is being developed as an open-source project so you are more than welcome to join us and help create Nimbus!
Nimbus & NAF
It has become apparent that the low-level parts of Nimbus that take care of discovering other devices on a network, establishing whether or not they support Nimbus and handling the communications could be useful for many more applications besides Nimbus. We therefore factored all this functionality out into a seperate layer called the “Nimbus Abstraction Framework” (NAF).
NAF has been designed to be a general purpose abstraction layer that can be used by any application that needs to discover compatible applications on a network. Although NAF is still currently part of the Nimbus project we intend to spin it off into a seperate project of its own soon.