VeniVidiVoti library

Technical architecture

Some of the technical choices made on this system, and the uml diagrams.

Project owner
i18n  December 10, 2002

Classes diagram

vvv.core package/a>
vvv.histo package/a> 0 2 2002-12-10 16:02:27.421 3.0 Project owner Project owner 2

When a person translates a text in a particular language, she is then a translator of this language.

To each translation, translator, text and language are associated a numeric value called "karma".

Any person can moderate up or down a translation's karma, and indirectly the karma of all associated elements: translator, text, language.

A translator can override an existing translation if his karma is larger than the translation's.

0 2 2002-12-10 16:02:27.421 4.0 Project owner Project owner 2

A person authentificates herself in the system when logging, this authentification is used to determine what is readable and/or writable.

Passwords are (still) kept in the clear in the database.

Anonymous emails are never read from the database.

0 2 2002-12-10 16:02:27.421 5.0 Project owner Project owner 2

There are different kind of choices available, the most widely used concern every non-container element and allow to set a level.
This level could be designed in three major ways:

persons agreeing ("yes") volume ("yes" or "no") difference between people agreeing and people disagreeing

The first method doesn't account for disagreeing people, which mean an element with a high number of "yes" would be considered interesting even with an higher number of "no".

Just looking at a volume would mean that elements with a high volume of "no" (ex: 90%) would be considered important.

Taking the difference between "yes" and "no" is the only solution to scale well with volume and to really account for agreeing and disagreeing people.

0 2 2002-12-10 16:02:27.421 6.0 Project owner Project owner 2

Delegations embody two major features, they are done on one element and its sub-elements, they can be overriden with other delegations or choices.

At first, I thought delegations could form a cycle without any trouble: ie person A delegate her voice to B, B to C, C to A (A->B->C->A). But after two weeks trying to come up with some algorithm, I finally gave up, so delegations which could result to a cycle are now refused.

Another difficulty was determining the number of voices given to choices, the tree of delegations potentially leading to very complex calculations. To handle that, sub-delegations are introduced at every step in the tree to propagate overriding choices or delegations.

0 2 2002-12-10 16:02:27.421 7.0 Project owner Project owner 2
i18n  February 22, 2003


Basically technology is about presenting web pages to the user so he can propose, choose or delegate his choices on the different elements composing a text.

The pages are produced using a SQL database (ie: PostgreSQL), the J2EE server jBoss, and the XML publication motor Cocoon.

i18n  December 10, 2002

Use Cases

The use cases for this system are very simple, and can be presented using:

Person Propose Choose Delegate (one's choices to another person) Consult (of course) Elements (like texts, chapters, articles, preferences, actions, links or messages).

i18n  December 10, 2002
SourceForge Logo

Processed by Apache Cocoon 2.0.4 in 4.322 seconds.