Summer Coding 2010 proposal - CHASM proposal by vrinda vasishth

For information how to complete this form, refer to Summer Coding 2010 step-by-step for students.

About your project
1. What is the name of your project? CHASM: Cryptographic Hash Algorithm Secured Mirroring solution.

2. Does your project come from an idea on the Summer Coding 2010 ideas page? If so, provide a link for reference, as well as a link to any discussions with mentors about your proposal. https://fedoraproject.org/wiki/Summer_Coding_2010_ideas_-_CHASM

3. Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using? CHASM stands for the Cryptographic-Hash-Algorithm-Secured Mirroring solution, and provides the improvements to the current alternatives (Rsync).

Following is the outline of the project :


 * 1) Implementation of the peer-to-peer network protocol. It takes into account the state of the upstream's pool and cache to allow clients to maximize throughput.
 * 2) Implementation of a generic message-passing framework for Unix domain sockets (including the ability to send file descriptors easily).
 * 3) Partial design and implementation of a peer-tracker protocol.

We will be working in C++ to develop the network code.

4. What is the timeline for development of your project?

Yet to be discussed in detail.

Roughly it goes like this:

1. Approximately 4 weeks for implementation of the peer-to-peer network protocol.

2. Implementation and integration of a generic message-passing framework for Unix domain sockets.

3. Partial design and implementation of a peer-tracker protocol.

Points 2 and 3 would span over the time remaining and would finish depending on how the progress for the first step goes.

5. Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described.

I am good at programming in C++ and Python, and have solved various algorithmic problems in SPOJ and a SPOJ derivative-CodeChef. I do not have prior experience in working on system programming oriented project, but I am interested in system programming and know the basics of the same.

I have coded Image processing modules for the Satellite workbench, in Space Applications Centre, Indian Space Research Organisation, Ahmedabad, India.

Albeit I am not in a position to enumerate my open source contributions and vouch for my credibility, I am motivated coder and squeeze out the best possible solution for any given problem/task.

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

i) Vrinda Vasishth (my answer): This project will overcome some of the existing drawbacks in rsync for mirroring. For a fedora user it would mean, faster propagation of updates. For the Fedora community, it would help in checking reliability of the mirrors, and speeding up the process to find differences made in the files. ii) Ben Boeckel(mentor's response): on completion, this project will make the mirrors more reliable. 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.Users/developers will see a faster propagation of updates across servers.

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

I would utilise all possible resources I have to solve the issue. The mentor is a guide to the project and defines the workflow, and the student has to find out a way to do it. It is not possible for the mentor to be around always to solve the issues coming in the way, hence I would try not to be entirely dependant on the mentor to circumvent the issues, and crack them myself.

3. 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 updates could work like a progress bar, and the blog updates would be detailed reports about the progress. Apart from this, using the mailing list for major milestones achieved will help in keeping the community informed about the progress.

Miscellaneous
We want to make sure that you are prepared before the project starts 1. Can you set up an appropriate development environment?

Yes, I can. Rather this work will be done prior to the coding period, without much trouble.

2. Have you met your proposed mentor and members of the associated community?

On IRC.

3. What is your t-shirt size?

Medium

4. Describe a great learning experience you had as a child.

My first experience of using a computer when I was 12 years old. It was introduced in the school curriculum that year and I still remember the awe of the screen glowing and talking to me. The first computer program I made was of drawing different shapes and figures using the turtle in LOGO. I learnt the fundamental of breaking down problems in into smaller units and then coding them. The learning curve has been going up and up since then, and I have happy memories of the good start I had.

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].