|
Proximity
[600.647 - Advanced Topics in Wireless Networks]
Personal Networking Tool
|
|
|
|
|
|
Components
User profile
Before joining the system a user must define his own profile. The
profile contains information like name, nickname, email, location,
interests, friends etc. There are 3 types of elements which define
a profile:
Category |
- the basic element of defining profile; a category is defined
by a name, description and value (examples: name, location,
email); some default categories will be default by users can
add their own categories.
|
Group |
- a group of interest (like JHU, Formula1 etc); any user can
join a group by simply adding it in his profile; a 'General'
group is defined but the user can add his own groups.
|
Friend | - defines a direct friend. |
Every 'category' and 'group' will have a policy which defines how
that information will be passed to other users. There are 4 types of
policies:
Public |
- information is provided to everybody who requests the
profile.
|
FFriend |
- information is available for direct friends and friend's
friends.
|
Friend |
- information is available only to direct friends. |
Disabled |
- information is not available for anybody. |
The 'friend' element does not require a policy flag since the
profile of friends will be advertised based on their own policies
(i.e if a friend of mine has a 'friend' category in his profile I
will not publish that information).
A suitable format for the profile seems to be XML. The DTD schema
might look like this:
<!ELEMENT profile (category*, group*, friend*)>
<!ELEMENT category (name, description, value, policy)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT value (#PCDATA)>
<!ELEMENT policy EMPTY>
<!ATTLIST policy type (public, ffriend, friend, disabled) "friend">
<!ELEMENT group (name, description, policy)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT friend EMPTY>
<!ATTLIST friend name CDATA #REQUIRED>
|
Profile example:
<profile>
<category>
<name>Username</name>
<description>displayed name</description>
<value>Londo</value>
<policy type="public"/>
</category>
<category>
<name>Name</name>
<value>Londo Mollari</value>
<policy>public</policy>
</category>
<category>
<name>Email</name>
<description>email address</description>
<value>londo-nospam@deepspace-b5.com</value>
<policy>ffriend</policy>
</category>
|
<category>
<name>Location</name>
<description>location</description>
<value>Babylon5 Station</value>
<policy>public</policy>
</category>
<group>
<name>B5-Politics</name>
<description>Babylon 5
ambasadors</description>
</group>
<group>
<name>Alpha Centauri</name>
<description>Alpha Centauri
citizens</description>
</group>
</profile>
|
"Hello" sequence diagram
A first contact between two applications (APP1 and APP2) will take
place as follows:
- APP1 periodically broadcast a "Hello" message revealing his
identity. The identity can be a minimal information about the user:
full name, nickname, fingerprint of his certificate and a version
number of his profile.
- upon hearing the "Hello" message from APP1, APP2 will consult
his profiles' repository, retrieve his profile, strip all
information based on his policy and then the APP1 the resulting profile.
- APP1 will store the received profile in his profiles' repository.
"Search Profile" sequence diagram
If a user became interested in a certain user (he can find about him
by inspecting a list of friends of one of his friends) he can setup a
periodic search for him. The message exchange will take place as
follows:
- APP1 broadcasts a profile query. To save bandwidth he can
publish a list of profiles he is interested. If the list is really
long he will split it in moderate size chunks and request them in a
round robin fashion.
- upon hearing the query, APP2 will consult his profiles'
repository and if he has the requested profile and the policy allows
him, he will send it to APP1.
- APP1 will store the received profile in his profiles' repository
and will remove the profile from the search list.
Network visualisation
Every profile contains a list of friends which can be used to build
a connected graph. We plan to use a open source software (i.e OpenJGraph) for displaying the graph.
When a profile a friend is updated the network must be rebuilt
(incremental operation).
Besides hiw own network, additional networks can be built using the
collected profiles (based on various searches) which are not
related to personal network a friends.
Online friends
The application will display a list of friends that are on-line (people
that are on the same network). It will also display the list of
unknown users on line.
This list is grouped by the interests of the people.
Apart from viewing a categorized list of friends, the user can also
view his network of friends as a graph.
Other features: private chat, status messages etc
Two friends who are on-line can engage in a chat. Also a user can
specify his preferences telling the system who can communicate with
him. The software program will have options dialog where the user can
specify one of the following:
- Allow only my friends to contact me.
- Allow the people in this list to contact me (* mean everybody).
- Do not allow the people in this list to contact me (* means everybody)
When somebody contacts us, the application check to see our
settings. If the person is allowed (as per the user setting) a chat
window will pop up on the user's screen.
Otherwise the application sends the contacting person a
CANT_COMMUNICATE message.
The chat will be private communication using user's IP address.
Also we plan to implement status messages wherein the application
broadcasts status messages on certain events.
Last update: Wednesday, 11-May-2005 13:59:26 EDT
|