Summer Coding 2010 proposal - CHASM-mfm

The Project
CHASM, the Cryptographic-Hash-Algorithm-Secured Mirroring solution. The idea is mentor suggested.

Responsibilities


 * I will be responsible for implementing a segment of an application-level protocol designed by the project creators. The new protocol will facilitate the efficient communication between all nodes in the system and provide a specification for node interaction. The segment I will be primarily responsible for, is the communication between the upstream and downstream nodes in the system. A time sequence diagram for this segment can be found here . I also will be responsible for developing a library that will simplify the usage of Unix domain sockets for message passing within the system. Test code, probably along the lines of a mock object, and documentation will also be of a primary concern.

Timeline


 * Gantt chart.

Experience


 * I have developed a small program in the same domain before, but it is honestly trivial and does not compare. Like most students, I have written a lot of small programs in various programming language paradigms, and I also have done some larger projects that were deadline oriented. Last year I had an internship at a major corporation fixing bugs. Through the experience I acquired a better understanding of the TCP/IP protocol suite, and, as a result, how to use tools such as ncat, tcpdump and wireshark to debug applications. Following and slowly contributing to the Linux Kernel, however, has lead to the biggest growth for me as a developer. It has given me an understanding of how large-scale systems evolve, and the professional development methods used to attain the end result.


 * Nevertheless, I still lack the necessary credentials for obtaining a position in open source. Depending on the outcome, I hope this opportunity will open some doors for me so that I may contribute to other open source projects and, eventually, maintain a few packages. I truly believe that I will be able to successfully complete the project simple due to being a highly motivated individual and for the absolute _passion_ I have for systems programming.

Community Benefit

 * 1.
 * Q: If your project is successfully completed, what will its impact be on the Fedora community?


 * Ben Boeckel (mentor):


 * Hopefully it will make the mirrors more reliable (I know that I get 404s every now and then when the mirrors are in the middle of a sync). Also, it will decrease the time it takes updates to be pushed out to mirrors; currently it takes 15 minutes to do a simple check if there is anything to do. Mirrors will also be able to verify that they have correct information (hash checking is currently discouraged for Fedora right now). What users/developers will see is faster propagation of updates across servers. [And] sysadmins will have better performance since we don't thrash the disk cache when doing a check for updates (should also help with disk lifespan).


 * Matt Mooney (me):


 * The CHASM solution will provide a robust mirroring infrastructure that will overcome the flaws associated with the current method of mirroring. Each deficiency has been systematically analyzed so that none of the previous implementation problems within the old method will be repeated. The protocol is designed specifically for this purpose and should provide a modern solution to the problem.


 * John 'Warthog9' Hawley:


 * This has the potential to dramatically simplify the process of mirroring content, not only Fedora but for the greater Open Source community. CHASM in essence is the idea of a stateful rsync mechanism, which has a number of benefits for dedicated mirrors from no longer needing to perform a full filesystem scan on each sync, distributing bandwidth across multiple mirrors to allowing more frequent syncs of individual mirrors.  The benefits are quite numerous, and CHASM is the project that seems to be stepping up to the plate to help with this effort, and it's something that I and kernel.org are very interested in.


 * 2. If I were to get stuck and the mentors we not around, I would first ask the fedora-summer-coding mailing list or IRC, if that did not solve my problem, I would pose my question to a mailing list that is of the same domain as the question. Of course, this is only after I use all of my own resources to solve the problem, but I guess if I was stuck that would mean I already did.


 * John 'Warthog9' Hawley:


 * This particular project has several extra places to ask questions, and most of which should likely take president (or at least rank as high as) fedora-summer-coding mailing list. For starters CHASM itself has a mailing list, and a number of developers who are going to more intimately know and understand the inner code workings of CHASM.  This is particularly important since CHASM is a new project, and there are not many people outside the core developers who are going to be familiar with it.  Secondly outside of the core developers there are a number of 'users', mirror admins who are interested and quite keen to help guide and shape CHASM into something that is usable and useful to administrators, they should be consulted as well.  Thinking of this as something specific to fedora-summer-coding is a bit of a misnomer, this is a much larger and much more diverse project and is going to take a lot of discussion outside of direct Fedora lines for this to be truly successful.


 * 3. I will ask the mentors to create a mailing list for the project so that any interested parties may subscribe.

Miscellanea

 * 1) * I am somewhat of a command line junkie so I do not foresee this as being an issue.
 * 2) * I have met both of the project mentors, Robert and Ben, through IRC, where we discussed the project in greater detail.
 * 3) X-Large
 * 4) One of my great learning experiences from my childhood was playing music. I started to play the piano around the age of 5 and continued for about 4 years (I did go on to play the drums in elementary school and one year in junior high). Playing the piano was something I really enjoyed and, I feel, benefited from throughout my scholastic career. To this day it is still one of my favorite instruments to listen to.
 * 5) Not really, but I do always find it interesting to find out a person's favorite open source project. I guess I will not say mine as it might start a flame war.
 * 1) Not really, but I do always find it interesting to find out a person's favorite open source project. I guess I will not say mine as it might start a flame war.