Student Application Template
Name: Nik
Contact:
email: nikvaes@gmail.com
- irc: nickname: nikv
- oftc: #debian-soc
- freenode: #apache-camel #jitsi
Mailing lists:
Github: https://github.com/nikvaessen
Background: I'm currently a student at Maastricht University, The Netherlands, enrolled in their Knowledge Engineering course. The course list can be found here. I live near Maastricht, whichs lies in the south of the netherlands, near the border of belgium. I have coded in C, python and java. I started looking up on tutorials on coding in Python about 3 years ago. Shortly after I came across CS50, a very nice online introduction to Computer Science with C as the main programming language. A year ago I started my bachelor, which main programming language is Java. After a lot of assignments and 2 major projects I feel that I am the most experienced coding in java. The two big programming projects I've worked on is creating a Tetris and Pentris game accompanied with a bot and an application to solve the knapsack problem of optimally filling a truck with a certain product set. Both of these university projects required me to figure out what kind problems I was facing was and how to optimally solve them. Outside of university I recently made a Twitch bot getting statistics of twitch channels.
Why me?: I might not have as much experience in software development as some other applicants. I am however very motivated to get more experience and more than willing to spend my summer throwing myself into the deep and getting hands-on experience with coding outside of university projects. I feel that I'm able to pick up new information fairly quickly and that this will definitily be useful the coming summer. I'm looking forward to working with a mentor who will be able to point me in the right direction when(probably not if
) I'll get stuck. I'm eager to be given feedback on my work to be able to improve myself and the code. That this endeavour will lead to improving libre software is only a plus.
My hardware: My main working enviroment is an Ubuntu Desktop. I also own a Acer c720 chrombook which runs Debian 8 and a raspberry pi.
Project title: Improving WebRTC, Apache Camel and Jitsi
Project details: My goal this summer is to work on 3 different projects, all of them improving free communication in some way. The first project is to implement SIP message support in Apache Camel(https://issues.apache.org/jira/browse/CAMEL-9190). The second goal of this proposal is to make a web tool for validating SIP and XMPP settings, as well as making test calls and giving feedback on latency and codecs (https://project.freertc.org/projects/rtc-server-probe-development/issues?set_filter=1). At the end of the summer I want to improve Jitsi by working on ICE and TURN support for SIP (https://project.freertc.org/issues/52) and to fix a bug with continued prompts for SIP passwords (https://project.freertc.org/issues/53).
Synopsis: ICE and TURN support for Jitsi, SIP message for Apache Camel, server probe for WebRTC, SIP, XMPP, STUN and TURN. .
Benefits to Debian: Improving the functionality of both Jitsi and Camel will be a step in the right direction of making it more attractive for users to move to debian, especially when there are good alternatives for Skype.
Deliverables: More functional software in an improved Jitsi and Apache Camel as well as a tool for verifying connectivity to a WebRTC server.
Project schedule:
Phase 1 - up to 23th of May - Getting familiar with the software and community: Learn more about Jitsi, Apache Camel and WebRTC. For example try to compile them from source and try to read the relevant code. Read about SIP and NAT and try to make some write some do-it-yourself code to learn how to use them. I might also be able to visit the mini-debconf in Vienna. Things I am planning to read (open to suggestions from mentor):
https://www.ietf.org/rfc/rfc3261.txt to get an understanding of SIP
http://camel.apache.org/developers.html to get insight into Apache Camel
https://github.com/jitsi/jitsi/blob/master/CONTRIBUTING.md on how to contribute to Jitsi
http://www.openbsd.org/faq/pf/nat.html and https://www.ietf.org
My mentor requested I start working on the first project, implementing the sip MESSAGE method as a test of coding skill. As I'm still busy with school and cannot fully focus on the task, I've only been able to do some partial implementation. Most of time has been spent trying to to understand the Apache code and getting more familiar with the SIP api. A lot of work still needs to be put into this project. The pull request can be found here: https://github.com/apache/camel/pull/948.
23th of May - GSoC timeline for student to begin coding
Phase 2 - 23th of May up to 27th of June - Apache Camel:
week 1 (23-05-->29-05): Start work on implementing SIP message support in Camel
week 2 (30-05-->05-06): Finish work on implementing SIP message support in Camel
week 3 (06-06-->12-06): Release test SIP message support in Camel
week 4 (13-06-->19-06): Start setting up developer enviroment for Jitsi. Work on fixing the password promt bug
week 5 (20-06-->26-06): finish work on fixing the bug, test, and submit mid-term evaluations
27th of June - GSoC midterm evaluation deadline
Phase 3 - 27th of June up to 23th of August- WebRTC server probe:
week 6 (27-06-->03-07): Set up infrastructure to test the harvesting and traversal, get to know the relevant RFCs
week 7 (04-07-->10-07): Bring the existing ice4sip branch in Jitsi up to date
week 8 (11-07-->17-07): Refactor shared code that still lives in the XMPP part to share it with SIP
week 9 (18-07-->24-07): Initial harvesting on caller-side
week 10 (25-07-->31-07): Add the results to the INVITE SDP on caller-side
week 12 (01-08-->07-08): Detect ICE on callee-side and start harvesting
week 13 (08-08-->14-08): Create streams based on the selected candidate pair
week 14 (15-08-->21-08): Release test Jitsi and improve documentation
23th of August - GSoC timeline for students to stop coding
Risk management: To back up my work, I will push all code I wrote at least at the end of every day. If my desktop breaks, I can almost immediately start working on my laptop. If my internet connection fails, which is has never done before, I would be able to go to friends or family or even my university to push code and communicate with my mentor(s). Power outages are almost non-existent.
Exams and other commitments: I will have courses up to 27th of May, and exams in the week of 30th of May up to 3th of June. From 6th of june up to 26th of june I have a 3 week long group project.
Other summer plans: After school is done on the 26h of June I don’t have any summer plans except for GSoC!
Why Debian: I’ve been using Linux and learning about free software for about 8 months now. I see this project as the perfect way to get more familiar with the FOSS and especially the Debian community. It is also a perfect way to make my own operating system better for myself and everyone else.
Are you applying for other projects in SoC?: No.
Revision on the project: During the summer, it became clear that implementing ICE for sip turned out to be more complex and time-consuming than expected and that it would not get anywhere close to a working place during the alloted time period for GSoC. Together with my mentors, we decided on another project involving Jitsi, namely implementing speech to text in jitsi meet. The revised schedule for the second part of GSoC can be found below:
Week 6 (Jul 4 - 8): Get familiar with the new code of jitsi-meet and lib-jitsi meet and the javascript environment of browsers, specifically the ?MediaRecorder API .
Week 7 (Jul 11 - 15): Start with an “audio recording” module. It should be loaded by the app, should set up access to the information that it needs (e.g. register to events). Should provide an entry point you can call from the console. Use the ?MediaRecording API to record files and store them on disk.
- Week 8 (Jul 18 - 22): Learn about the speech-to-text service which the module is going to use.
- Week 9 (Jul 25 - 29): feed the recorder files to the speech-to-text service and get the results and metadata back
- Week 10 (Aug 1 - 5): create a transcript of the call based on the results of the recorder files
- Week 11 (Aug 8 - 12): buffer
- Week 12 (Aug 15 - 23): final week. Clean up, document (in-code docs, create a blog post, etc).