Thursday 30 April 2015

Google Summer of Code 2015 : FOSSASIA : Weekly update : 1



Lets-chat 




I got accepted for self-hosted online communities communication with OTR encryption : Back-end as a student developer under awesome mentors  +Tong Hui , +Mario Behling  and (soma) +Manuel Munz   under the organization +FOSSASIA . In fact,  +Tong Hui played a crucial role to encourage me to contribute to lets-chat. I am looking forward to work with him this summers. This is 






I will be first implementing the OTR encryption chat and then plans to link it with lets-chat .

Firstly, I would like to provide a brief description about OTR encryption, OTR encryption or Off The Record messaging will enable the users to have private conversations using lets-chat. OTR is an encryption tool for real-time chat, is easy to setup and provides a smooth user experience as well. Symmetric key cryptography is used through OTR encryption and hence the same key is used by the sender (Alice) and receiver (Bob) to encrypt the plaintext to ciphertext  and to decrypt the ciphertext to plaintext.   




Moreover, since the communication channel is insecure, for encrypting the communication, OTR uses Diffie-Hellman key exchange algorithm.  In short, Alice and Bob are able to exchange secret keys in such a way that they can derive a shared AES (Advanced Encryption Standard) key that is impossible for an intruder to decipher. This protocol hence ensures deniability and perfect forward secrecysince this protocol uses new key for each message. Interestingly, OTR encryption can be used on any internet chat protocol such as Google talk, lets-chat etc. 

I plan to implement the following features under FOSSASIA this summers under Tong Hui :
  • Generate long lived key : This step is going to be expensive as it might take seconds
  • Since OTR uses new key for each message, for each receiver, the sender wishes to communicate to, instantiate an OTR object
  • Implement function to send a message to the receiver
  • Implement function to receive a message to the sender
  • Ensure Symmetric key encryption
  • Ensuring the sender’s message is encrypted to obtain cipher text
  • Ensuring the receiver’s message is decrypted to obtain plain text
  • Close private connection when the chat is closed
  • Easy connectable API for front-end reuse


Note: I will be implementing the OTR encryption in group chats at first  and make sure that the code is efficient enough to use in lets-chat. 

After that I wish to implement the following :
  • Display status online/offline
  • Display fingerprints
  • Resolve bugs if any
  • Maintain proper documentation of back-end work



Looking forward to learn, code and develop this summer !




Some important links :



Thursday 16 April 2015

Google Code In 2014 Wrap up : KDE

KDE : Experience freedom 


KDE is an international free software community producing an integrated set of cross-platform applications designed to run on LinuxFreeBSDSolarisMicrosoft Windows, and OS X systems.


 It is known for its Plasma Desktop, a desktop environment which is provided as the default work environment on many Linux distributions, such as openSUSEMageia and Kubuntu. 








KDE project serves as an umbrella project for many standalone applications and smaller projects that are based on KDE technology. Recently KDE participated in Google Code In to provide young contributors an opportunity to get involved with KDE and inspire them to get involved with open source. 


During December, KDE managed to create over 100 tasks, with over 29 mentors. 

It gradually increased to over 277 tasks by the next month. It was great to see such an active contribution by the students to KDE and the mentors made sure the students are well equipped with the tasks. Marble managed to create maximum tasks among the KDE projects with over 50 out of 277  tasks. 



Also, for the young contributors, KDE provided over 65 beginner tasks which helped them to get involved with open source.

 Later, the students were expected to go ahead with non-beginner tasks to help them foster their skills. KDE provided tasks of varied types ranging from code, documentation/training, design, quality assurance and outreach/research. 


Some twitter follow ups : 








It was overwhelming to see a synchronous and healthy student mentor relationship while Google Code In. 

The students performed well with the highest score by Mikhail Ivchenko and second highest by Ilya Kowalewski . 

We thanks Google Code In to help KDE to encourage young students to get involved with KDE. 



-Heena Mahour 
co-administrator of GCI 2014 under KDE

Sunday 12 April 2015

Vagrant: Why and how



Why I am using Vagrant?


  • Vagrant provides easy to configure, reproducible, and portable work environments built on top of industry-standard technology and controlled by a single consistent workflow to help maximize the productivity and flexibility of you and your team.

  • Using the vagrantFile, the project developers are able to run the code in the same environment, against the same dependencies, all configured the same way.




Purpose of Vagrantfile :



  • Mark the root directory of your project. A lot of the configuration of Vagrant is relative to this root directory.

  • Describe the kind of machine and resources you need to run your project, as well as what software to install and how you want to access it.

How to build Vagrant?


  • Make sure your system is updated. Since I was earlier using Kubuntu 13.04 which is not supported by vagrant, I upgraded Kubuntu 13.04 to Kubuntu 13.10 to Kubuntu 14.04 to be able to run it

  • Check your system and download vagrant through this link 

  • Perform the following bash commands :
$ mkdir vagrant_directory
$cd vagrant_directory
$vagrant init
$vagrant box add ubuntu/trusty64


  • Now, open the vagrantFile and do the following :

Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64
  • Now, open and terminal and do the following :
$vagrant up 
To prove that it is running, you can SSH into the machine:
$ vagrant ssh
To access the vagrantfile of my system, visit github: fallacy321/vagrant

To have a look at my terminal : pastebin