GSoC 2012 Midterm Interview
Half-time for our Google Summer of Code projects - time to pause for a moment and see what has been accomplished in the last few weeks. We asked our students Edo Monticelli, Martin Hundebøll and Spyros Gaster to bring their work to a state of a working prototype, which can be found in their respective git repositories on https://git.open-mesh.org/ or on the wiki in their respective project pages (Edo: GSOC2012_BW, Martin: Fragmentation, Spyros: BackwardsCompatibility). We have also interviewed them about their experiences with the Google Summer of Code, which we don't want to hold back. :)
Question: The midterm of your GSoC project has been reached. Can you describe in a few sentences what you have achieved so far and which tasks remain for the second half of this GSoC ?
Martin: I am working with a new implementation of the fragmentation feature in batman-adv. The current implementation only fragments packets of type BATADV_UNICAST, but a more and more features are added to batman-adv, other types should be fragmented as needed.
While we are at it, we also want to add support for more than two fragments per packet, and merging of fragments if they are forwarded on an interface with large enough MTU.
So far, I have developed a working prototype of the new fragmentation. It is (main-)feature complete in the sense that our goals for the new fragmentation are implemented and work: packet-type-independent, multiple fragments, routing of fragments. The solution is based on a encapsulation-of-encapsulation, where (the encapsulating batman-adv) packets with size bigger than MTU, are split and encapsulated with a fragment header.
Now I need to make the code SMP- and architecture-safe, and of course find and fix bugs. Also, my mentors will probably have a lot of suggestions that I need to consider and work with.
Spyros: My project is extending the batman-adv protocol to be backwards compatible through the use of tvlv(Type Version Length Value) information messages. So far I have made a working prototype for the project which transfers the gateway announcement tvlv. Now I have to polish the existing code, do some bug-fixes (thank you for your remarks everyone) and finally include the right function calls in various places in the code so as tvlvs are part of the protocol.
Edo: I am implementing in kernel space a protocol for the bandwidth measurement, in order to have a lightweight approximation of TCP behavior. At the moment the protocol is working with fixed size window and cumulative acknowledgment.
What should be done in the next month is a lot of testing and bugfixing. Some features are still missing, like the possibility to choose if a node is sender or receiver.
Question: Looking at the past weeks what have been your greatest challenges and how did you master them ?
Martin: It is always wonderful to live in the world of SKB-pointers, where the whole thing may break, if you forget to (re)set a single pointer in the skb-struct. I have spent quite some time with printk's and skb->foo's :)
Spyros: I had some trouble making myself comfortable with the linux kernel coding style and learn how to interpret the kernel panic logs. Even though I'm not a pro at both of them I have at some degree mastered them with a solid amount of help from the mentors and the community and some scolding of course.
Edo: The worst moment was at the beginning, when I had to start coding with very small knowledge of the batman code and no experience of kernel-space programming. The greatest difficulties were bound to kernel related techniques and features, like workqueue and locks.
I have been able to overcome difficulties by looking at the batman code that manages similar issues and with the community help (mentor and IRC people).
Question: What has been the most exciting experience relating to your GSoC project so far (e.g. mastering a technique, learning new approaches, successes, etc) ?
Edo: When the project worked. Also to solve some hard bug has been of great satisfaction!
Martin: I find it very exciting that I can develop and contribute an entire feature to batman-adv (i.e. fragmentation). By being the author of such a feature, one feel responsible for it and get to take one step up the "batman-adv-developer-ladder".
Spyros: Pretty much everything about gsoc has been exciting but if I have to pick just one aspect I choose the part that I'm working with others on a code-base written by them. So far I had only done university assignments which even though they were enlightening enough, they were just newbie-level example code compared to the GSoC requirements. Now I hope I get to see how the pros do it.
Question: Could the batman-adv organisation (website, community, mentors, individual supporters, etc) have done anything different to facilitate your life as GSoC student ? Was there something you considered too complicated or even scary ?
Spyros: No, the organisation has already provided more than enough for me. The mentors provide much of their time for feedback and tutoring meetings and the community is there when I have a question however stupid the question is.
Edo: In general I found the batman organization adequate and of great help.
Martin: I think my mentor(s) should visit me in Denmark. If not during the GSoC time, then at least within 2012.
If I should mention one serious improvement also, it could be more assistance when defining the project goals and writing the application.
Question: Do you have any advice, words of wisdom or valuable feedback you'd like to share with future batman-adv GSoC students (with regards to expectation, preparation and time consumption for example) ?
Edo: I found effective to agree with my mentor and the batman community on the tasks to develop and how to develop them, so that the project could benefit of their advice. So the help of the community for my has been fundamental.
Martin: If you want to be a GSoC-student with batman-adv in 2013, you might as well get started now. Download the batman-adv source, install it on three laptops and get your first mesh running. Then buy a book about SKB's and kernel development, and ask on IRC, if there are any low hanging fruits, that you can pick to become familiar with batman-adv.
By getting familiar before the beginning of next years GSoC, you make it a lot easier to fulfill the goals!
Spyros: Start early, never stop, familiarize yourself with everything first, listen to the mentors, and above all when in trouble and you cant find the answer online ask at the channel. You are in open source and the greatest thing is the community and the incredible geeks which are part of it. Oh and buy the mentors many beers when you see them, put that gsoc money to good use :P(kidding)
Thanks a lot to the students for their good work, keep it up!
The B.A.T.M.A.N. Team