Welcome to P2PSP Google Summer of Code (GSoC) 2015 project ideas page. We will use this page to develop possible project ideas. Please note that anyone who is interested can participate in this process. You do not have to be a GSoC student or mentor to suggest possible project ideas. If you want to suggest an idea, please, send an email with the subject "GSoC 15 Ideas" to info [at] p2psp.org. You can also join the team at https://launchpad.net/~p2psp and subscribe to the mailing list.

As you know, we participated in the Google summer of code 2015. One of the projects accepted for our organization was "NAT traversal via hole punching Set of Rules" by the student Max Mertens. In this post, Max tells us about his experience. Thanks!

Peer-to-peer software is a great idea, as you do not need a central server and save bandwidth necessary for relaying. As I have been interested in networking and protocol development for a few years, I was happy to find the P2PSP organization and that it is participating in the Google Summer of Code 2015. So I asked the P2PSP developers if they would need an implementation of NAT traversal in their software, and applied for GSoC with the project "NAT traversal via hole punching Set of Rules as a Python implementation". The main idea of the NAT Traversal Set of rules (NTS) is that two peers (computers) that are each behind a different router (Network Address Translator, NAT) can connect to each other, without prior configuration of port forwarding and without UPnP or similar techniques. This enables multimedia to be streamed between such peers, e.g. between PCs or mobile devices each behind a home router.The mentors Vicente González Ruiz and Juan Pablo García Ortiz accepted the project ("any improvement in the NAT's war is also interesting for us") and I was very happy to be able to work with this organization over the summer.

I began with the project by examining existing NAT traversal software and setting up a testing environment. Then I worked on a simple Python script doing nothing but NAT traversal. After testing and improving it, I added the NTS classes to the P2PSP software and added more and more functionality, until NAT traversal was working for all theoretically possible combinations.

Virtual network setup used for testing; each box represents a virtual machine or Linux network namespace.

During the project, I sent status report emails once or several times a week, and my mentors Vicente and Juan Pablo helped me if I was unclear about P2PSP code or principles, and they had creative ideas on extending the NTS code. Also they were always open to merge changes to existing P2PSP code that were necessary or helpful during development.A few practices emerged that were helpful during development: To stick closely to the timeline that was planned in the proposal and to keep track of outstanding tasks, I had a frequently updated task list with finished tasks for each week and a to-do list sorted by priority. This way it was easy for my mentors and me to see how many tasks are left and what is to be done next. Documentation can turn out to be much more work than necessary if you document any change you made to the project. So I aimed at documenting each small part of the code just after it was finished and was not likely to be changed much anymore, and finalized the documentation before the midterm and the final evaluation to fully match the code.

Here you have some key points that you should consider to include in your GSoC application:

What project would you like to work on and why?

Propose an idea of how are you going to develop the project. Please, try to give as much information about this topic in your proposal, for example, milestones, time scheduling, deliverables, etc.

Tell us about your experiences in free software development. Point us to a code sample: something good and clean to demonstrate that you know what you're doing, ideally from an existing project. Please, include your contributions in GitHub, Launchpad, Google Code, etc.

Why do you want to work with P2PSP Project in particular?

Will you be working full-time on the project for the summer, or will you have other commitments too (a second job, classes, etc)?

What is your ideal approach to keeping us informed of your progress, problems, and questions over the course of the project?

How can we contact you to ask you further questions?

What school are you attending? What year are you, and what's your major/degree/focus? If you're part of a research group, which one?

P2PSP is an open application-layer protocol for the real-time streaming of media content over a peer-to-peer overlay, where every peer is connected with each other following a push-based fully connected mesh scheme. This project was born of the necessity of teaching about computer networks in a more exciting way to students of computer science at University of Almería (a small university in the south of Spain) and … it worked!

In 2015 was the first time we participated as a mentoring organization in the GSoC program. We supervised three excellent students withgreat ideas. Their work has not only consisted of writing code but also thinking about new algorithms and researching about the problem in depth. We’d like to outline their projects.

NAT traversal via hole punching Set of Rules (Max Mertens)Connection-ﬁltering-NATs are becoming increasingly frequent, and this is a situation thathindersthe connectivity between peers. In this project Max worked in proposing and creating an extra functionality to handle those peers that are behind restricted-cone NATs and symmetric NATs. Max coded and tested his implementation in different scenarios.

Implementation of Content Integrity Set of rules for P2PSP (Ilya Shakirov)Pollution attacks are a challenging security-related problem in peer-to-peer streaming platforms. We proposed two different theoretical strategies in order todetect a pollution attack in the context of the P2PSP live streaming system. In this project, Ilya coded the strategies, got statistical results and proposed improvements for the strategies.

We are excited to announce that we have been selected as a mentor organization for the Google Summer of Code (GSoC) 2015. We have a lot of ideas that you might be interested in. You can even suggest new project ideas!

The student application period begins on Monday, March 16, 2015 at 19:00 UTC and finish on Friday, March 27, 2015 at 19:00 UTC . If you are an interested student, please start by reviewing our Ideas Page. If you dont like our ideas, we will be sad about it, but you still can participate with other organizations. The list of accepted organizations is available at http://www.google-melange.com/gsoc/org/list/public/google/gsoc2015

As you know Google Summer of Code 2015 has come to an end. We have participated this year with three students and six mentors. We are proud to announce that all our students have passed the final evaluation, so they have completed their projects successfully.