Proposal
Making Waartaa one-stop communication/collaboration tool for organizations.
Proposal Description
Waartaa, at present, is a great irc client as a service but it needs some focused amount of contribution and dedication to make it a one stop irc client/communication-tool for open source organizations, individuals and developers. In this proposal I am trying to cover what needs to be done and how they should be implemented to make Waartaa better, so that it turns out as a beneficial tool for open source community.
An overview of proposal
The main features that needs to be implemented during project are:
- Building a central hub for searching/reading channel logs
- Account settings and log-in with external services(Facebook,Google)
- Admin Interface/dashboard
- HTML-5 mobile app
- Video/Audio integration on top of WebRTC
- Using Blaze as the UI Engine
- Using a testing framework
- Freedom to export logs in different formats
Building a central hub for searching/reading channel logs
Building a central hub for searching channel logs will remove the pain of scrolling to view a certain chat log. A user should have the option to search through the chat logs if required. Though we can use mongodb full text search to accomplish this feature but for better performance, I would like to implement this feature using elasticsearch. For elasticsearch I would use the node-elasticsearch-client in which most of the elasticsearch apis have already been implemented but we also have to take care of automatic sync between mongo collections and search indexes with observeChanges method of meteor. As this feature is most required and little tough to implement I would like to have proper guidance from the mentors while implementing this feature.
Account settings and log-in with external services(Facebook,Google)
Though Waartaa provides log-in with Git-hub, I would like to implement external log-in services with Facebook and Google. For this we have to add packages like account-google and account-facebook or we can use logInWithExternalServices method of meteor, the main task during implementation of this feature will be not creating two accounts for a single user for which we have to store the email of the user which can be done in Accounts.onCreateUser(fn). Reference To make Waartaa more user friendly we need to have an option by which users can mange their account related information and where they can add their preferences. The account setting options should appear in an overlay. To achieve this feature we can write a template named account-settings and we can bind events(like click and submit) on it.
Admin Interface/dashboard
To have an Admin Interface is a vital requirement of Waartaa. I would like to implement an Admin Interface that provides options to mute or remove an user.
HTML-5 mobile app
To have a mobile app for any product is quite essential, as we have more potential users there. Waartaa is made with bootstrap so it is not that hard to make it complete responsive so that it can be accessed and viewed from any devices like mobiles and tabs. But our main concern will be rendering less data on client side for small devices. After accomplishing this feature we can port waartaa as a hosted app for Firefox OS.
Video/Audio integration on top of WebRTC
Video/Audio conference will be a great feature to implement in waartaa, it would help organizations and individuals to contact/collaborate efficiently. To implement Video/Audio integration we have to use WebRTC and it's three apis:
- MediaStream(getUserMedia)
- RTCPeerConnection
- RTCDataChannel
By using these apis we can have initial handshake between clients and can have a p2p communication, which will be good for the performance metrics. The main point of concern will be implementing WebRTC inside the meteor ecosystem as WebRTC is better served by a mechanism where we can have low level access to session connection information.
Using Blaze as the UI Engine
With meteor 0.8.0 Blaze will be released so we have to be prepare to use blaze. With blaze we can have different animation hooks like insertElement, moveElement, and removeElement. It will make significant changes to existing apis, while introducing new ones as well. So we have to re-factor our code to support Blaze.
Using a Testing framework
In Waartaa it is much needed to add a testing framework like laika so that we can test our codes effeciently. Laika interacts with both server and client so we can write our tests for the both. One of major drawbacks of Meteor is that it has no official testing framework, so my choice will go with Laika.
Freedom to export logs in different formats
We should give the user an option to save his chat logs if he wants. I am not sure how this feature will be implemented but I am sure with a little guidance and help from mentors I will implement this feature.
The need you believe it fulfills
As I already mentioned Waartaa needs some dedicated amount of contribution to make it better, implementing the above mentioned features will surely help Waartaa make better. The following needs will be fulfilled once the proposed project is completed:
- Building a central hub for searching/reading, will be the most important feature to implement as it will provide a great way to search through the chat logs and it will also make Waartaa more user-friendly.
- Adding external log-in services is required in a web-app at present time, it saves the pain of registration process and users will be more likely to give Waartaa a try with external log-in services enabled.
- Admin Interface is required to stop any span kind of activities.
- With meteor 0.8.0 we have to move to Blaze so it is better to be prepared for that.
- By using a testing framework we can have the insights of our code-base.
Any relevant experience you have
The project would require firm knowledge of JavaScript and meteor.js, JavaScript is my language of choice and it feels like home to me. My main works have been on JavaScript, though I am new to meteor but I have already started to get my hands dirty with meteor. As my hobby project, I have built a twitter-clone with node.js, mongodb and socket.io and I hope that gets counted as a relevant experience.
How you intend to implement your proposal
- I will use the elasticsearch for better searching/reading of channel logs.
- For log-in with external services I would use account-google and account-facebook packages or logInWithExternalServices method of meteor, whichever suits the best. For managing account-setting a simple overlay can be used, for which I have to write the template and I would bind events like click and submit on it.
- For HTML5 mobile app, we have to play with the stylesheets and the major point of concern will be rendering less data on client side for smaller devices.
- For Video/Audio integration WebRTC will be used, with it's great apis we can implement this feature within meteor ecosystem.
- Implementing blaze and integrating testing framework will be quite new task for Waartaa so it would need proper guidance from mentors.
A rough timeline for your progress
April 21st to May 19th (Community bonding period): Interact with mentors, getting familiar with implementing a new feature, getting started to research on implementing central hub for searching/reading channel logs.
May 19th to May 26th (1 week): Implementing Central hub for searching/reading channel logs.
May 26th to June 2nd (1 week): Account-setting overlay and external log-in services.
June 2nd to June 16th (2 weeks): Implementation of Admin Interface.
June 16th to June 23rd (1 week): HTML-5 mobile app.
June 23rd to June 25th: Complete all mid-term evaluation related formalities.
June 25th to July 9th (2 weeks): Video/Audio integration with WebRTC
July 9th to July 23rd (2 weeks): Moving Waartaa to Blaze.
July 23rd to August 6th (2 weeks): Integration Laika in Waartaa
August 6th to August 13th(1 week): Writing documentation.
August 13th to August 20th(1 week): Perform a general code clean up and prepare for final evaluation.
August 21st: Pencils down
My plan is to continue contributing to the project post GSoC.
Any other details you feel we should consider
I have constantly been in touch with my mentors. Whenever he has mentioned a technology or language that may be required for this project, I have made the effort to immediately act upon it and have spent the past couple of weeks familiarizing myself with everything I may need to implement this project successfully.
I have university exams between 15th May to June 2nd, so during this period I will not be devoting my full time to the project otherwise I will be devoting my 6 to 7 hours per day to this project.
Have you communicated with a potential mentor? If so, who?
Yes, I have been in touch with Ratnadeep Debnath and Sayan Chowdhury.