Hey there! This is my first blog post, and in this article I’ll describe my experience of the IETF 102 hackathon which was held from July 14 to July 20, 2018 in Montreal, Canada.
If you haven’t heard about the IETF (Internet Engineering Task Force) before, it is “the premier Internet standards body, developing open standards through open processes to make the Internet work better.” (ISOC – Internet Society).
Based on the belief that open standards are crucial and central to the Internet, the IETF organizes hackathons every year to give developers a chance to experiment with new technologies and implement new web standards.
IETF 102 was the third IETF hackathon that I participated in remotely from Mauritius. I woke up early on Thursday, July 12, 2018 and took the bus to Reduit. From there, we headed to Pointe-aux-Piments – a nice coastal village in the north of Mauritius, where we stayed for 4 days. Once there, we setup our equipment like laptops, chargers, cables, and made ourselves comfy in the new environment.
After setting everything up, we formed 2 teams: Implementation and Inter-operability.
1) Inter-Operability Team
The inter-operability team consisted of Kifah and some first-timers, namely: Nathan, Jagveer, Avishai, and Daniel. Their task was to test how well the various SSL/TLS libraries like nss, TLS lite, mbed TLS, WolfSSL, BoringSSL, OpenSSL inter-operate with each other by doing a TLS 1.3 Full Handshake, Session Resumption, and 0-RTT. The idea is to take each one of the above libraries, one at a time as client and server, and perform an inter-operability testing with another library in the list.
2) Implementation Team
The implementation team consisted of Logan, Nitin, Codarren, Nigel, Rahul, and myself. Another first-timer of the implementation team was Veegish, who managed to write a Drupal module to detect HTTP 451. (See RFC 7725). Hats off man!
Allocation of tasks for the implementation team:
Logan: Implement TLS 1.3 in Git & CURL
Nitin: Implement TLS 1.3 in PHP-CURL
Codarren: Implement TLS 1.3 in Mercurial
Nigel & Rahul: Implement TLS 1.3 in NRPE
Veegish: Write a HTTP 451 Drupal module
Muzaffar: Implement TLS 1.3 in Socat
What is Socat?
As part of the implementation team, my task was to add support for TLS 1.3 in Socat – an open-source utility that “establishes two bidirectional byte streams and transfers data between them.”
After the TLS 1.3 implementation in Socat was complete, Kifah and I locked down on a bug in httperf – another open-source tool in which I had already implemented TLS 1.3 during the IETF 101 hackathon back in March 2018. I also seized the opportunity to make some more improvements in httperf.
Outcome of the IETF 102 Hackathon
At the end of the hackathon, everyone on the implementation team had a working implementation of TLS 1.3 in their respective projects, and Veegish had a working Drupal module that was able to detect the HTTP 451 error code.
As for the inter-op team, they managed to find a case in which one library couldn’t interface well with another one. They’re going to file bug reports about this issue, and hopefully this will be fixed in the next release of the libraries concerned.
The pull requests for httperf (PR #60 & PR #61) were merged on the very same day. As for Socat, I received an email from the Socat Project a few days later informing me that the changes will be integrated in the next release of Socat. Yay!
Apart from sitting in front of our laptops and delving into code for long hours, we also took the time to relax in between coding sessions to have pizza, listen to music, eat more food, go for walks along the beach, and swim in the pool!
Overall, IETF 102 was a very fun and challenging experience in which we got to improve our programming and debugging skills, and contribute to real-world projects. I’m really excited for the next IETF hackathon and I’m looking forward to make useful contributions to more open-source projects in the future.
You might also be interested in reading the other participants’ thoughts and experiences about the IETF 102 hackathon: