Destruction breeds Creation.

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.

User Utils

User  convenience is an important aspect for any application to succeed. The sTeam root user should be able to create or delete a user. A command to add / delete a user was added successfully.

The root user should be able to add new user’s using the command line.
The parameter’s like username, password, email-id etc. should be asked and then the user should be created.

Issue. Github Issue Github PR
Create a user. Issue-58 PR-59
Delete an object Issue-56 PR-57
Delete a user. Issue-69 PR-70

To create a new user:

create_user username password email

The current users can be found by running the command

 _Server->get_module("users")->get_users();

Similarly a command to delete the user was added to the steam-shell.

The user should be able to delete the objects created/existing inside the user area. A steam-shell command needs to be added to delete the objects from the command line.

The usage of command to delete a user inside steam-shell.pike. Only the root user can delete other user.
Command:

delete_user username

UserActivities
In order to delete an object which can be a container, document or a room in the current steam directory, run the command;

delete test.pike

The object would be deleted.

Tab-Completion Module

The tab completion module of the sTeam shell was analyzed during this period. The tab completion module has an issue whereby it doesn’t lists the options on pressing the tab after  ".

query_attribute("

After pressing the tab after ” the options should be listed. But this is not the case. The bug needs to be resolved.

Tab_completion

 Import from git script

The import to git script can now import a single file into the sTeam directory.

The feature for this was added.

Issue. Github Issue Github PR
Add utility to support single import in import-from-git script . Issue-16 PR-76
sudo ./import-from-git.pike gitfolder/xyz.mp3 /home/sTeam/

The xyz.mp3 would be imported to the sTeam directory.

Import-script

The future work would include resolving the tab_completion module issues and enhancing the import script to support the feature where by a user would be able to specify the name of the file in the sTeam directory.

Tabs, Logs and Export.

 

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.

Logs

Week 3 included working on to provide support for logs and exporting of the content from sTeam directory to a git repository. Week 3 also witnessed a breakthrough in sTeam development by Siddhant Gupta who was able to successfully implement the TLS protocol in pike.

The Logs were displayed erroneously. Also the user was not able to scroll down the log to the latest message.  During the course of the week the golden ratio script used in the program was updated to it’s latest version.

Also the editor is opened using sudo command so as to access the vim scrips in the /usr/local/lib/steam/tools directory.
The files are opened using the vim command:
vim -S script -c edit filename1|sp filename2

Only one buffer is accessible at a time. In order to switch the buffer to log buffer the command is CTRL+Ww. Enter this command directly without entering the vim terminal using :.
The log buffer would be accessible, can be edited and scrolled down to the latest log message.

Issue. Github Issue Github PR
Access the log window till the end. Issue-20 PR-48
Open appropriate log window when a sTeam command is executed. Issue-49 PR-51

ScrollToLatest

The logs were displayed erroneously. Ideally the log should be displayed based on the buffer where the sTeam function is called and accordingly the relevant log buffer should be called and display the output. This error was fixed.

MultTabs

The log is displayed in the file named after the file which is opened and concatenated with the suffix “-disp”. In Vi the  :% buffer stores the value of the current file. Consequently this value was concatenated with “-disp” to display the buffer accordingly. The Vi script can be seen below.

ViFunc
Export to git script.

The later phase of the week saw that the export-to-git script was tested vigorously.  All the known issue’s based on the script were replicated in the system and solution was found for them.

The export to git script is now capable of exporting multiple sources at a time. If the last argument is always the target repository then any number of previous arguments can be sources.

Issue. Github Issue Github PR
Support Multiple Source arguments Issue-14 Issue-19 PR-54
Include Source-name in branch name and add branch description. Issue-9 PR-55

Example command :
./export-to-git.pike /home/sTeam/file1 /home/coder/file2 /home/sTeam/container3 ~/gitfolder

The export-to-git script also exports the source name in the branch.  To help distinguish between the branches, we need more descriptive names:

./export-to-git.pike /sources/ /tmp/export-test/

This should create the branch sources-cur_time. Also when a file is specifically exported:

./ecport-to-git.pike /home/coder/demo1.txt /temp/export-test/

would create a branch with name home/coder/demo1.txt-cur_time. This is done to avoid ambiguity between files with same name existing in different locations.
Also a description is added fo the branch name using the git command
git config branch.<branch name>.description "describe branch"
To view this description go to the folder where the branch is exported and then enter the git command
git config branch.<branch name>.description

Export to Git script executing when Multiple Source arguments passed and the modified branchname.

GitExportAndBranchName
Branch Description

BranchDesc

Enhancement of steam-shell plugin and Import from git.

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.

Indentation of Output made independent of the screen-width.

The week 2 saw that the work done till date is tested and looked out for errors. The pull requests made by all the other contributors were tested individually. The errors encountered in them were resolved and the solutions updated in the code base.

There were errors encountered in the Pull request. These needed to be modified. The notable one’s were the Indentation of the output displayed by the look command in the steam-shell. The earlier display was taken into consideration that the default size of the linux terminal is 80 char long. However this can differ from individual to individual terminal settings. Therefore the module reference of pike was studied and a method to display the contents in the output of ls command format was written down. Thus now the output is independent of the screenwidth of an individual.

Issue. Github Issue Github PR
Indentation of output in steal-shell. Issue-24 PR-42

Indentation

Also there were minor errors in the edit.pike script. These were resolved too. The edit.pike was not able to exit the program. Therefore an exit(0) call was made. This resulted in the edit.pike being able to exit successfully but a new error was introduced in the steam-shell.pike. When the edit.pike command was called inside it, the steam-shell.pike would exit on successfully completing the edit command. The steam-shell should not exit in this case. There were changes made in the VisTeam.pike, edit.pike and applauncher.pike in order to get the utility working correctly.

Issue. Github Issue Github PR
Edit.pike hangs on closing Issue-29 PR-44
Edit command closes the steam-shell abruptly Issue-43 PR-44

The steam-shell vim plugin was modified and the support for multiline commands was added. Now the user can type the commands in multiplines, format them and then execute them. The output will be displayed in a new tab.

Issue. Github Issue Github PR
Integrate sTeam-shell into Vi. Issue-37 PR-41

An example of it can be seen below:-

ListGates
Output:

OutputMult

The import-from-git.pike script is used to import contents from a normal git repository into the steam directory. The import from git script was studied and understood initially. The issue’s listed were replicated in the system and a possible solution for them was found out.

The script has support for importing multiple documents at the same time. Also the objects imported supported only text mime type. The script was modified to support other mime types by initially detecting them through an external process. However later in the server/factories/Document_factory.pike file the auto detecting of mime type was found out and used in the code. Now the mime types are detected and updated successfully for documents of other mime types like MP3, jpg,png etc

Issue. Github Issue Github PR
Auto-detect Mime type. Issue-18 PR-45

ImportMimeType

The contents of objects of types other than text mime type were not been read by the existing process. As a result this resulted into creation of empty objects with the set mime type. The process to read the contents were modified and the contents of objects of other types were set accordingly. The content is read in the form of a string. Since every object can be read as a string.

However in the import-from-git an issue was encountered. Indexing over Null value with set_contents for every object created by the script. On running the script again the earlier object is successfully imported but the same error is encountered over the next object to be imported. This issue would be looked down in the coming week and tried to solved. Also support for importing single objects will be provided.

Error1

Integrate sTeam-shell into Vi and Indentation of output in the look command to display like ls

 

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.

Indentation of sTeam-shell output

During the 1 st week the Indentaton of the output in the look command in steam-shell is formatted to be displayed in the way the output is displayed when the ls command is executed.

The module reference provided by the pike language is used for formatting.

he screenwidth of the the user is calculated using the command tput rows.
This value is then passed as an argument to the write function to display it in the form of output of an ls command.
The example of this can be seen in the modref by Pike.

Issue. Github Issue Github PR
Indentation of output in steal-shell. Issue-24 PR-42

Example:

write("%-$*s\n", screen_width,"Given a\nlist of\nslosh-n\nseparated\n'words',\nthis option\n"+ "creates a\ntable out\nof them\nthe number of\ncolumns\n"+"be forced\nby specifying a\npresision.\nThe most obvious\n"+"use is for\nformatted\nls output.");

Output:

 Given a          list of          slosh-n
 separated        'words',         this option
 creates a        table out        of them
 the number of    columns          be forced
 by specifying a  presision.       The most obvious
 use is for       formatted        ls output.

The following chnages have been made in order to incorporate the changes:

IndentationCodeChange

Integration of sTeam-shell into Vi

For integration of sTeam-shell.pike into the Vi, the steam-shell is made compatible to be run when a command is passed as an argument to it. The changes have been made in steam-shell.pike and the applauncher.pike. Also a new file called as VisTeam.pike is created. When this is executed it validates the user and opens two vi buffers. One for typing the command and the other to display the log/ output of the executed command.

A steam-shell.vim vi plugin is created so as to be able to run the Steam function in vi. Whenever this function is executed the selected text in the vi visual mode will be executed.

The results are displayed in the log buffer in a new tab. Since the already existing vim scripts Golderratio.vim and watchforchanges.vim divide the command buffer and the log buffer in the ration 2:1, the output is not visible in the logs. Thus a newtab consisting of the logs is opened.

 

Issue. Github Issue Github PR
Integrate sTeam-shell into Vi. Issue-37 PR-41

InsertIntoVI

Execute the command:

ExecuteCommandsTeamDisplay the output:

DisplayTheOutput

Let the Coding Begin….!!!

GSoC2016Logo
fever_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.

Let the Coding Begin…!!!

Finally May 23, 2016 sets in.

The paths of glory lead but to the grave.
-Thomas Gray

The path of the GSOC journey is a bed of thorns and roses.

The community bonding period has elapsed and the real GSOC journey begins

GSOC-timeline

The community bonding period has lead to some real constructive work been done in the project.
The installation and deployment of the sTeam was largely dependent on the linux environment. This was a major hurdle for the development process.
Also the installation process of the sTeam project was quite cumbersome. These had to be improved.

The community bonding period was spent in addressing these issues.

For simplying the installation process I began with the creation of the .deb package. There was a .deb package for the earlier versions of sTeam. The .deb package was made to incorporate the new changes.
Finally a decision was made to rename the sTeam package to societyserver.
This renaming has lead to several deb source config issues in the package.

debianpackage

These issue’s will be addressed during the later part of the Summer.

In order to facilitate development in all the environments and give the user the ease from the cumbersome installation steps a docker image was made for the sTeam project.
This docker image contains all the necessary dependencies to start the sTeam server.
It also includes the sTeam UI and the Rest API along with it’s dependencies. These have already been installed and developer can start collaborating to it.

docker-image

The docker image can be found at :


https://hub.docker.com/r/ajinkya007/societyserver/

It has all the necessary information for it’s usage and installation.

The community bonding period also included in me exploring the import and export from git commands, the usage of steam-shell, resolution of some minor bugs in it, integrating the steam-shell in vi. This period also witnessed me getting hands on with the other repositories of the societyserver.org.
The repositories which were analyzed and explored include :-

https://github.com/societyserver/sTeam-web-interface-gsoc-2015
https://github.com/societyserver/steam-rest

So having formed a strong bond during this period, the real showdown begins from May 23, 2016.
The coding period has began, and the time to put words into action has come….
Happy Summer GSOC’ers  🙂

Talk is Cheap, Show me the code !!!

Bond, Community Bond

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.

Bond, Community Bond

The bond was very highly covalent :p

The community bonding lead to sharing of knowledge between all the developers all around the world, their views and opinions on various technologies used in the current times.

The community bonding period saw to it that interaction between the organization mentors, developers , project mentors and colleagues and GSOC’ers all round the world takes place on a regular basis.

The interaction was initiated by Lays Rodrigues by forming a facebook group for 2016 GSOC’ers.


https://www.facebook.com/groups/GSoC2016/

The personal webblog can be found at ;


https://laysrodriguesdev.wordpress.com/2016/05/

Lays has also taken an initiative and created a map where by all the GSOC’ers in the world were mapped according to their place of residence. This can be seen at :

The community bonding period also ensured that I got included in the developer groups of the various organizations for ensuring that the development happens throughout the summer.

Notable include : sTeam.devel group

Additions to the FOSSASIA, Societyserver and PlanetGSoC organizations on github.

sTeamDevGroup
OrgList

 https://github.com/ajinkya007

One of the project which would be having the links to the majority of the blogs published by the GSOC’ers during the course of Summer is Planet GSoC developed by Rohan Verma.

Planet GSoC is Google Summer of Code Blog Aggregator.

This can be found at :

http://planetgsoc.github.io/

In the Queue…

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.

The GSOC 2016 unraveled so far…..

The Organizations were declared on 29th March 2016.
The Proposal Submission period was from 15th March-25th March 2016.

TimeLine

sTeam is a project under the organization FOSSASIA mentored by Martin Bähr.

Since then the activities done so far include:-

1.Installing the application on Linux Platform.

sTeam was successfully installed on Ubuntu 12.04, Ubuntu 14.04, Ubuntu 15.04 and CentOS 7.

2.Understanding the workflow of the application.
3.Bonding with the community on the IRC server irc.freenode.net channel #steam-devel and #fossasia.
4.Discussing and planning the enhancement idea’s with Mentor and associates.
5.Finding the possible area’s of application improvement.
6.Searching the archive’s to understand the platform more thoroughly.

The original website http://www.open-steam.org has been closed but the archives can still be accessed at : Archive of http://www.open-steam.org
Archive of http://server.open-steam.org
Archive of http://steamware.open-steam.org
http://societyserver.org/

7.Contributing to the project wiki.
Documenting the extracted information from the archives to the wiki pages categorically.
8.Reposting issues and solving them.

Issue’s reported : Issues.
Pull Requests : Pull Requests.

9.Writing a proposal and submitting it on the Google Dashboard.
10.Help other people to understand the application and guide them through the installation procedure.

After submitting the proposal, it’s the waiting period for the announcement of the students selected for GSOC 2016.
The selected students would be announced on 22nd April 2016.

A period filled with excitement and nervousness.
The one month period should be well utilized for the better understanding of the application by working on small bugs and staying interactive with other colleagues on IRC and work collaboratively.

Hoping to be selected for GSOC’16.
For the love of FOSS I look forward to contribute FOSSASIA organization by the Google summer of code platform or otherwise.
Finger’s crossed.
May the best candidates be selected for the event!!!
All the best to all the contestants participating in the event. :+1:

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.