From Fedora Project Wiki
Line 7: Line 7:


===Any relevant experience you have===
===Any relevant experience you have===
I have got decent experience working with Javascript technologies both on client and server side. During my internship, I worked on this project called [http://engineering.hackerearth.com/2014/01/21/introducing-codeplayer CodePlayer] which required good understanding of Javascript.
I have got decent experience working with Javascript technologies both on client and server side. During my internship, I worked on this project called [http://engineering.hackerearth.com/2014/01/21/introducing-codeplayer CodePlayer] which required good understanding of Javascript. I was able to complete the project in a short span.


===Deliverables and Implementaion===
===Deliverables and Implementaion===

Revision as of 06:33, 20 March 2014

please use this template to organize your proposal

Proposal

Overview and The Need

Waartaa is an open source communication tool for teams and groups. It is built on top of IRC. Currently, Waartaa is an IRC client as a service and it supports centralized logging, 24x7 idling, notifications and unique identity to a user on IRC across multiple clients/devices, and also a rich UI for awesome user experience. Waartaa is built on top of web technologies like Meteor (a Nodejs framework), MongoDB for data storage and twitter bootstrap for UI design and responsiveness. It runs seamlessly across various platforms with the same look and feel.

Any relevant experience you have

I have got decent experience working with Javascript technologies both on client and server side. During my internship, I worked on this project called CodePlayer which required good understanding of Javascript. I was able to complete the project in a short span.

Deliverables and Implementaion

Sub-tasks that I will be completing during GSoC period are:-

  • Build a central hub for searching/reading channel logs for Open Source communities and projects.
  • Use the log search framework to empower nifty addon features like: permalinks in mail notifications, app notifications, bookmarks, etc.
  • Video/audio conferencing facility on top of HTML5 and JS technologies.
  • Admin console panel

Build a central hub for searching/reading channel logs for Open Source communities and projects

Centralized logging is one of the important components of Waartaa. It removes the pain to sync logs across multiple IRC clients and devices. Logs gathered can be used to build the following features:-

  • A separate standalone log browsing and search page accessible to the public. This will serve as a global directory of chat logs. There'll also be an option to join a server channel directly from the search page. Basic search interface will provide filtering by nick, full text and datetime ranges.
  • Create permalinks for each chat log in the search interface. The permalink will show a page of chat logs containing the particular chat log, which will be highlighted. The permalinks need to be generated during handling incoming chat message so that mail notifications can contain the permalink.
  • Notifications will also appear inside the chat interface (similar to Facebook notifications). The notifications will point to the permalink for the chat logs.
  • A bookmark could be implemented using the same permalink concept. We just need to map user to permalinks in some collection, lets say:
Bookmarks {
 server_name: String,
 channel_name: String,
 message: String,
 type: String,
 permalink: String,
 user: String (username),
 user_id: String (user._id)
}

where in the user can search/filter logs in page. These bookmarks saved will be shown on user's dashboard page.

Implementation details

After talking to the mentors, Ratnadeep and Sayan told me they have already explored different technologies and ElasticSearch seems best fit for the purpose. Currently, the logs are stored in MongoDB and the plan is to move them to ElasticSearch.

Waartaa-ElasticSearch integration

I plan to push new logs from Waartaa to ElasticSearch in an async way so that the app does not incur any slow down. If some issues come up with this approach during load testing this Waartaa-ElasticSearch integration, which I presume to be because of network IO setup latency, I will implement a task queue to throttle network connections to ES at a given point of time and send log data in chunks. This will allow us to send more data in a single network transaction. That said, my focus is to use as less dependencies as possible and I will add a dependency only if there's no alternate way.

Video/audio conferencing facility on top of HTML5 and JS technologies

To not over burden the servers, its best to setup a peer-to-peer connection for audio/video conferencing.

In this regard, WebRTC offers Browser-Agnostic solution. Anyone with a web browser and a microphone can make calls to anyone else with a web browser and a microphone. If one or both parties has some sort of video camera, the call can also involve video. Furthermore, Javascript APIs involved in enabling peer-to-peer communication are simple enough to use and with only 5-6 lines of Javascript code a WebRTC client can be created. However, only limitation it has is that it requires up-to date graphic cards.

It will be kind of an experimental feature considering the limitations of WebRTC. We’ll keep improving along with WebRTC.

Waartaa will serve for doing the initial handshake between clients and further communication between them will be peer-to-peer. This feature will be available only for Waartaa users as it is not related to IRC, but a good thing to have for effective communication and collaboration.

I looked at this demo example:- [1] It seems tangible to implement it in atmost two weeks.

Admin console panel

Admin console panel will give useful insights into the data to admin(s) like:

  • Information on users online
  • Information on active users (weekly, monthly etc.)
  • Show node-irc client status: servers/channels listening to for a user, and allow admins to control the node-irc client (connect/disconnect/disable/enable) if needed.

A rough timeline for your progress

Any other details you feel we should consider

Have you communicated with a potential mentor? If so, who?