Improvements on Waartaa
GSoC 2014/Student_application_shilpita
Proposal Description
The goal of this project is to improve on an already existing open source communication tool, Waartaa. It would involve building and implementing such features that would allow Waartaa to be used as a hub for connecting several IRC servers. It would also involve development of features for personal messaging and video/audio conferencing.
Proposal
The main tasks of this project are:
- Building a central hub for searching/reading channel logs for Open Source Communities and projects.
- A HTML mobile app.
- Overlay for adding user preferences and account settings.
- Creating an admin dashboard.
- A video and audio conference facility on top of HTML5 and JS Technologies.
Building a central hub for searching/reading channel logs for Open Source Communities and projects
Building a central space for searching or reading channel logs would help the user to retrieve those messages that had been written in the past or while user was away or even before they joined the channel. It has three parts:-
- Storing and managing of channel logs.
- Searching or browsing through channel logs.
- Viewing channel logs.
- For creating a central hub for reading/ searching channel logs we would need to store channel logs. For storing channel logs I would use the managing tool, Logstash. Logstash is a tool for collecting logs, parsing them and storing them for later use.
- For allowing user to search through or browse these stored channel logs searching techniques need to be implemented. I would implement this using Elasticsearch. Elasticsearch is a scaleable, real-time search used for searching through logs or data. Previously stated Logstash is a part of Elasticsearch family.
- For viewing of these logs by user I would use a viewing tool namely Kibana. Kibana is a user-friendly way to view, search and visualize log data. It is a browser based interfaced to logstash and elasticsearch.
Providing channel logs that could be read by user anytime, is a feature that would provide Waartaa a more user-friendly feel. Allowing user to view the channel log of a Open Source Community or project before joining it would help the user to know what discussions happen in the channel and also inspire users to join new channels.
A HTML mobile app
The rise in the use of mobile devices has made it very necessary for a website to be available as a mobile app. Apart from this in Waartaa we are concerned about the connectivity of the user to the various channels and what better way than to provide them Waartaa as a mobile app that stays in their mobile devices which they carry wherever they go. For development of a mobile app based on HTML5, use of mobile development tools like Sencha Touch working on Android, iUI working on iPhones would be useful. These development tools use plain HTML, CSS and JavaScript to build native-looking webapp. To provide reactivity and realtime data sync we’ll communicate with the server via DDP websocket protocol. Then with the objective DDP library and android-ddp-client library native UI to Meteor.js will be obtained.
Overlay for adding user preferences and account settings
A user must be provided with facilities for adding user preferences like joining a channel or leaving a channel, adding other preferences like selecting a IRC server etc. To make Waartaa more user friendly facilities must be provided to change account settings. For implementing these I plan of designing an overlay that would appear on top of the chat page and allow the user to manage their accounts and handle their preferences. For the design of this overlay I am thinking of working with jQuery plugin Chardin.js. Chardin.js is a jQuery plugin creates a simple overlay to display instructions on existent elements.
Creating an admin dashboard
An admin dashboard is to be designed that would help the admin to handle the activities of the various channels. It would allow the admin to remove a user if they behave as a spam in a particular channel without restarting the server.
A video/audio conference facility
A real time video/audio conferencing facility will help in richer collaboration between the collaborators. As this is not an integral part of the IRC protocol, a custom implementation would be required in its place. Preliminary research indicates that WebRTC would be most suited for this kind of communication. WebRTC is an API that supports browser-to-browser applications for voice calling, video chatting and peer-to-peer file sharing. It includes sets of asynchronous events i.e. signalling, incoming/outgoing calls, presence, chats etc and the involves these asynchronous events in real-time. I will start by looking into https://github.com/dylntrnr/Meteor-Webrtcio as a reference. This is a standalone meteor project which aims at running WebRTC within the Meteor ecosystem. Internally it uses the webrtc npm package. Building upon this I will first try to make this into a Meteor module and then include it in waartaa by integrating the present accounts system and providing the end user with an easy to use and intuitive UI to initiate and control such communication.
The need you believe it fulfills
In my opinion this project will give a great boost to the Waartaa project. The developing a central hub for searching/ reading a channel logs of Open Source Community or project has been one of the task of prime importance (as told to me by @rtnpro) and it would eventually have many benefits.
- It will help user to read channel logs without joining the particular channel and thus help them understand what discussions are done on the channel before joining.
- It would inspire user to join various channels as they would have been made aware of the channel.
- It would help the user to be continually aware of the discussions going on in a channel.
Having an admin dashboard will help the admin to manage who joins or leaves a particular channel. It would also help to avoid spammers in various channels.
A mobile app for Waartaa would make IRC available for users on their mobile devices thus making Waartaa accessible from anywhere.
Any relevant experience you have had
I have been working on PHP, Javascript and HTML for quite some time and have done projects on the same. I have been studying Meteor.js and Node.js which have been used in building Waartaa. I am also working on elasticsearch family which is used for storing and parsing chat logs and would be used for creating the central hub for searching/reading channel logs in Waartaa. This would serve as the starting point of the project
How do you plan to implement your proposal
My end-semesters would be ending in the first week of May. After that I will be able to devout around 8-10 hours a day(or more if necessary) for around 3 months till the last week of July. After that my college reopens but still I'll be able to devout around 4-5 hours a day. My plan is to work taking one goal at a time and strictly following deadlines specified by me in my timeline. All the time I will stay very actively in contact with the assigned mentor taking in feedback and making the changes as and when necessary. Also, I wish to lay more stress upon quality than quantity. That is to say I'll try to code the things perfectly, as bug free and robust as possible rather than trying to implement more features.
Final deliverable of the proposal at the end of the period
- A display to view and search the channel logs.
- An overlay for the user to add preferences and handle account settings.
- An admin dashboard.
- A HTML mobile app compatible for android.
- If time permits a peer to peer video/ audio conferencing facility.
Timeline
21st April – 19th May
- Insight of the project details.
- Discussing with mentors on how to implement a particular feature and how to begin working with it.
- Studying in detail the project and elements of the project.
- Bonding with the organisation.
19th May – 2nd June: Setting up a hub for collecting logs open source community channels.
3rd June – 18th June: Creating a UI for viewing the logs.
19th June to 9th August: Mobile app development.
23rd June: Mid-term evaluation.
9th August – 20th August: Testing and documentation.
22nd August: Final submission.
Have you communicated with a potential mentor, if so who
I have been in contact with @rtnpro @sayan. I have discussed my project proposal with them and sought their suggestions to improve my proposal and present in the current form.