Summer of Code 2006 proposal
A module to implement the IRC protocol
gsivek AT mit DOT edu
This project will provide, by the end of the summer, a fully functional, customizable, and stable IRC daemon to be integrated into the Apache web server via an external module. It will feature complete standalone server support as well as the ability to connect to other IRC servers (at least those running the same Apache module, with interoperability with other servers provided as time allows). Administration of the server will be provided through both standard Apache runtime configuration directives and through a standalone script, similar to apachectl, which interacts directly with the running daemon. I will provide full documentation in parallel with my development efforts as the summer proceeds.
Deliverables and Results
I aim to complete this project in several stages.
- Studying the IRC protocol and server architecture
- This should be completed by mid-June.
- Deliverables: A server design plan.
- I expect to have a [possibly very] basic server up by the second week of July.
Deliverables: An alpha-version module with minimal, but sufficient, functionality to serve as the proof of concept
- Adding customization via the Apache httpd configuration files
- I will have configuration options by the middle of July.
- Deliverables: A set of runtime configuration directives for the existing module functionality, to be extended as the server is extended.
Building administrative scripts to control an already-running daemon, in the style of apachectl
- I will provide administrative controls for the httpd administrator by the end of the third week of July.
- Deliverables: A standalone script which will interact directly with httpd.
- This will occupy the remainder of my summer until I begin graduate school in mid-to-late August.
- Deliverables: additional features as noted in the RFCs and as suggested by my mentor and the Apache community.
Note that these dates are left intentionally inexact to allow for unforeseen circumstances or for adjustments as may be necessary. Please feel free to estimate the above dates as June 18, July 10, July 17, July 24, and August 15. I will also note that I have no expected travel plans or other commitments between the beginning of June and the middle of August, so I will be able to work on this project full-time.
About the Author
I am in my fourth and final year as an undergraduate at the Massachusetts Institute of Technology, with a double major in mathematics and computer science and a minor in economics. I will be attending the University of California at Berkeley in the Fall for a Ph.D. in mathematics.
I have been coding in various languages for over a decade and running Apache web servers for five years, but I also have prior experience writing Apache modules; see my research project on reducing Apache server load through BitTorrent technology at http://pdos.csail.mit.edu/6.824-2004/reports/jwolfe.pdf, where I was responsible for designing the Apache module and the test suite. I also have extensive experience in the Linux-Apache-MySQL-PHP (LAMP) architecture, having written MIT's student government electronic voting code, among other projects.
My coursework at MIT includes a course in computer systems engineering and a graduate course on distributed computer systems engineering, as well as the software engineering lab. My relevant skills include proficiency in C, Java, PHP, Perl to a lesser extent, the standard GNU development tools (gcc, automake, etc.), CVS, and a host of other smaller languages and tools. Awards and recognition in computer science include being a three-time finalist in the USA Computing Olympiad, receiving the Best Design award in MIT's Software Engineering Lab, and competing on MIT's ACM programming competition team.
Finally, my motivation for this project is threefold. First, my previous coursework and individual projects have included work on smaller servers and server design in an academic setting; I wish to augment this with solid, mentored practical experience. Second, I am a longtime OSS user and programmer. I have greatly benefitted from the community, including a heavy reliance on the Apache web server, and have a strong desire to give back to the community for which I have so far been only a passive participant. Third, I believe I can provide code at the level of quality to which Apache users are accustomed, so breaking into the OSS community with my name attached to such a prominent product may serve as a significant stepping stone to future involvment in Apache and in other free software. It is my hope that you agree I have the motivation and ability to succeed and produce a truly worthy IRC daemon this summer.