Summer Coding 2010 proposal - CHASM

About your project
What is the name of your project? Cryptographic-Hash-Algorithm-Secured Mirroring solution (C.H.A.S.M.)

Does your project come from an idea on the Summer Coding 2010 ideas page? https://fedoraproject.org/wiki/Summer_Coding_2010_ideas_-_CHASM

CHASM, the Cryptographic-Hash-Algorithm-Secured Mirroring solution, is a project that is to help alleviate a lot of the pains that mirrors have in organizing and verifying their content. The project can be thought of as a stateful rsync daemon in some respects, and solves a problem that kernel.org and a number of other large mirroring infrastructures have been looking into for several years now. This is ultimately a project that will be used by a greater portion of the larger mirroring infrastructures and as such has a lot of need for high performance and good design. This is a project to help get CHASM to a usable and production quality state, it is currently in the middle of a rewrite into C++ for performance reasons and there are still several aspects that may need to be flushed out.

What is the timeline for development of your project? Timeline for project (Currently very rough and subject to change)

Week 1 - starting June 1: Planing peer-to-peer network protocol

Week 2 - starting June 7: Implementing peer-to-peer network protocol

Week 3 - starting June 14: Implementing peer-to-peer network protocol

Week 4 - starting June 21: Implementing peer-to-peer network protocol

Week 5 - starting June 28: Implementing peer-to-peer network protocol Unix domain sockets

Week 6 - starting July 5: Unix domain sockets

Week 7 - starting July 12: Unix domain sockets

Week 8 - starting July 19: System Run-Through

Week 9 - starting July 26: Final System Run-Through

Week 10 - starting August 2: Documentation and Spare time for any delays

My main programming languages are C, C++ and Java. Although I don't have tones experience in Systems Development (as I specialize in A.I.), here are some projects iv created that are relevant to Systems Development.

In C I have created an instant text messaging program that uses multi-packet peer-to-peer relay across a LAN only using the old RS232 COM port. The program used the "super-loop" structure to allow non-blocking I/O from the multiple COM ports and user input. The second most relevant project I have created would be a secure peer-to-peer data transfer system entirely out of ASM86(intel x86 assembly). The program used Substitution Encryption followed by an XOR Cypher Key witch was then followed by Bit Rotation Encryption(I know that's a bit over the top but it was fun to do).

Im a very fast learner and if need be I will spend many hours a day learning anything im behind on.

You and the community
If your project is successfully completed, what will its impact be on the Fedora community?

"It will make the mirrors more reliable (i know that i get 404's every now and then when the mirrors are in the middle of a sync). 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. What users/developers will see is faster propagation of updates across servers, sysadmins will have better performance since we dont thrash the disk cache when doing a check for updates." - Mathstuf

What will you do if you get stuck on your project and your mentor isn't around?

This is not likely as the project has two mentors, however, if this were the case, I would use any and all resources available to me. Things like the fedora community or the mass of information known as the internet :)

In addition to the required blogging minimum of twice per week, how do you propose to keep the community informed of your progress and any problems or questions you might have over the course of the project?

Twitter and more Blogging

Miscellaneous
UK Large
 * 1) We want to make sure that you are prepared before the project starts
 * 2) * Can you set up an appropriate development environment? yes
 * 3) * Have you met your proposed mentor and members of the associated community? yes
 * 4) What is your t-shirt size?

Note: you will post this application on the wiki in the category Category:Summer Coding 2010 applications. We encourage you to browse this category and comment on the talk page of other applications. Also, others' comments and your responses on the talk page of your own application are viewed favorably, and, while we don't like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list and/or IRC.

The NeL project has some good general recommendations for writing proposals. We encourage Summer Coding code to include tests.

Comments
Use the Talk:Summer Coding 2010 student proposal application to actually make comment, which then appear here on the main proposal page. You can use this link to make a new comment].