sTeam Project Implementation Idea’s

GSoC2016Logofever_logoFOSSASIA 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.

sTeam Implementations

The possible scenarios where sTeam can be used are described.

  • sTeam is good to build websites where people collaborate and communicate over documents.
  • sTeam Can be used as a knowledge sharing portal in schools or colleges where videos are streamed or the teacher gives a feedback on homework/assignments.
  • In offices for collaboration of files which are sent through the hierarchy to be reviewed and receive feedback.
  • It can also be used as a code collaboration platform with easy commands to move around and integrate code. (A commit/push github like implementation).
  • Multiple collaborators can edit document at once.( Keeping in mind the complications, this can be done by making use of timestamps and locks for concurrent access )

Feel Free to contribute your own idea’s about sTeam implementations.

sTeam Command Line

GSoC2016Logofever_logoFOSSASIA 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.

Why do we need command line for sTeam?

To access the server while it is running, inspect the data it has stored and make adhoc changes.

  • What utilities does sTeam command line provide to the user?It primarily provides proxy objects to the same objects in the server.
    Function calls on these objects are sent to the server and the result is sent back.
  • What dependencies do we need to execute the sTeam command line?The COAL protocol implementation is needed, which is part of the server code.
  • How to access the sTeam command line?run ./debug.pike in the tools directory (/usr/local/lib/steam/tools) of the server installation.
  • How to execute commands in the sTeam command line?Start with getting an object:
      me;  
      OBJ("/home/steam");  
      GROUP("steam");  
      USER("root");  
    

    Then call functions on that object.

  • What are the different commands which can be executed on the command line?Any function that the object supports.
    Check the source sTeam classes in /server/classes/
    In addition there are special function only available in the client, such as “create();”, which allow you to create new objects.
    Common function would be to “list Rooms;” , “List Gates;”.
  • How to use edit.pike?Run ./edit.pike Path to the created object. For eg. if a txt file is made with the address /home/steam/foobar.txt
 ./edit.pike /home/steam.foobar.txt
  • What errors can user face while running sTeam in command line mode?If you run a function that takes to many server resources, the connection drops.
  • What new features can be implemented in sTeam command line?See the Idea’s page

Enhancement Ideas For sTeam Platform.

GSoC2016Logofever_logoFOSSASIA 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.

Ideas for enhancement of tools of sTeam collaboration platform

These were the ideas which were mainly focused on during the development of sTeam commandline in GSOC’15.
Some of these idea’s were implemented during GSOC’15. More new utilities will be added to sTeam platform during the course of development in GSOC’16.
These are the various ideas on the enhancement of tools in sTeam collaboration platform collected from participants of GSOC’15.

1.)Adding users through command line.

2.)Desktop notification for mail incoming.

3.)Sending mails through command line.

4.)Implementing TLS with pike.

5.)Commandline IRC client to chat in a group.

6.)Make import-from-git script better.

7.)Implementing export-to-git script.

8.)Packaging to simplify deployment of sTeam

9.)creating groups; adding people to groups; requesting membership through commandline.

10.)Error-free installation of sTeam. (atleast add solutions to the error messages)

In edit.pike
11.)Support for text editors(other than vim) for remote editing of database contents.
12.)When doc is pike script, then compile it inside server. On fail, error should be presented to user.
13.)If edit client changes a document and is different, user should be alerted.

14.)Tab completion with debug supporting:

Remote sTeam objects
Object attributes
sTeam constants

15.)When sTeam closes, commandline hangs. This behaviour should be prevented and user should be automatically reconnected.

16.)Make debug client more interactive.

17.)Commands to show:

current location
list objects
list gates to other locations.

18.)Change location(enter a room,leave a room) and use objects.

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.