From Fedora Project Wiki

Revision as of 03:19, 10 April 2010 by Mathstuf (talk | contribs) (Create page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The main page for this idea is Summer Coding 2010 ideas - CHASM.

Status: Idea

Summary of idea: Various ideas related to CHASM

Contacts: Rob Escriva, Ben Boeckel (mathstuf)

Mentor(s): Rob Escriva, Ben Boeckel (mathstuf)

Notes: 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 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.

More information

The main page for Summer Coding 2010 ideas is Category:Summer Coding 2010 ideas.

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. Individuals will need a solid understanding of *NIX systems programming in C or C++ (C++ is mainly used to provide things like destructors and type safety). Familiarity with the git scm storage model, and rsync internals are both positive traits.

Developers seeking to work on CHASM will be working primarily on developing network code, including documenting the network protocols. Students will be expected to be able to develop such code/protocols independently, but will be provided every chance for feedback and guidance from the current developers so as to maximize the impact of their contributions.

Students looking to work on CHASM should contact the current developers, and register on the bug tracker (

Things to note about this project:

  • There are several servers involved in this project; most of which communicate locally over Unix domain sockets.
  • Each server will be a separate piece of functionality.
  • All code written should be accompanied by test code to aid in automated testing (see for our dashboard).
  • C++ is the language used by current developers. We chose C++ for its beneficial standard library and ability to link C libraries as well.
  • Code written must be capable of running for extended periods of time without excess resource consumption or leakage.

Note: We will be guiding you through tricky areas on systems programming, so students need not be a black belt coder.