sTeam (Structuring Information in a Team)

GSoC2016Logofever_logo
\FOSSASIA bring’s people together to share, create, develop and make things with Open Technologies and software. We organize science hack labs, Open Tech events, meetups and coding programs with developers, designers and contributors.
Checkout the FOSSASIA Idea’s page for more information.
(ˢᵒᶜⁱᵉᵗʸserver) aims to be a platform for developing collaborative applications.
sTeam server project repository: sTeam.

What is opensTeam?

sTeam (structuring information in a team) is an open-source environment for the structuring and maintenance of virtual knowledge spaces. It provides a wealth of different mechanisms to support communicative and cooperative learning and work processes.

arealstruktur

 

Virtual knowledge spaces combine synchronous and asynchronous forms of collaboration with the administration of hypermedia documents. Students and teachers meet in virtual knowledge areas, where they share and modify arrange, annotate and link documents through mutual views. This form of open, collaborative interaction with materials is supported by suitable methods of access permissions and user group management.

The main focus of sTeam is on techniques for distributed knowledge management and establishing of an arena for internet-based methods of cooperation. The concept of self-administration enables the creation of individual knowledge structures for single users as well as for user groups and the development of virtual communities. Mechanisms for social awareness, synchronous whiteboards and cooperative construction of knowledge also form the focus of our research.

sTeam has been developed at the University of Paderborn (Germany) supported by funding of the DFN (Deutsches Forschungs-Netz – german research network).

open-sTeam server

sTeam Server Architecture

Before explaining the server architecture it is important to distinguish between server and web interface. Moreover, there is not just one single webinterface, but possible different clients using the server. This includes our administration interface (sometimes people think of this as the steam system), but also different php interfaces (like BidOWL, openSMT and Sifa – see http://phpsteam.open-steam.org/ for our php interface) and different stylesheet sets (check http://steamware.open-steam.org).

The connection between the server and the steam administration interface is the http protocoll modul of the server and the libxslt module to transformation of steam objects to html code using XSL Stylesheets. The web interface itself is a collection of those Stylesheets and Scripts for execution (this is mostly done through HTML-Formulars, which are send to the server as POST-Requests – these Requests are send to Scripts). For PHP and Java (check http://javasteam.open-steam.org/ ) the COAL-Protocoll handles the connection. For web-applications the PHP/Java-Code is executed within a webserver (usually Apache).

The server itself is the collaboration backend of the application. It can be divided into several parts:

The server is object oriented, with the basic class Object. An Object has many Properties (called Attributes), a unique environment and a list of permissions (ACL).All objects are persistently stored by the server. A database (usually MySQL) is used as the main persistence layer.The server loads different modules, which add functionality to the server (Security, XSLT, LDAP, …). The server starts external services (on the same machine), which are connected by the COAL-Protocol. Those services act independently and if a service fails it is restarted by the server (this behaviour is similar to apache services). Modules and Services interact through Events, which are managed by a global event dispatcher. Groups and Users are special kinds of objects (derived from the Object class). When a request is performed within the server a User become active (user logs in, authorization is checked). Each user can be member of different groups. Each group holds several users and possible other groups (called sub-groups). Permission is usually bound to groups, which are stored inside an objects ACL.

Virtual Knowledge Spaces

The steam server is room-oriented. The unique environment of an object (see above) is usually a room (or a container). A room is a container of objects with connections to other rooms (called Exits or Connections). These connections express semantically related rooms and enable the movement of users from the current environment (room) to the target room. Rooms are also meeting places for users and can be distinguished from containers by this criteria.
Technically, rooms compose a context for users and objects. This is used by events and permissions:

If an action takes place in an object an appropriate event is raised in the objects environment. Therefore, the event can be monitored by subscribing to the environment instead of subscribing to each single object.
If an object is moved to a new environment the permissions of the new environment (room) apply also for the moved object. At the same time, the permissions from the last environment do no longer apply for this object. In both environments the local permissions (bound directly to the moving object) apply.

PHPsTeam

The API is used to interact with the server in php.
For web-applications the PHP/Java-Code is executed within a webserver (usually Apache).

https://github.com/open-steam/phpsteam
(Feel free to explore and contribute.)

JavaSteam

The API “JavaSteam” can be used to interact with a sTeam server using Java.
To communicate with the Server the API uses the COAL Protocol.