Summer Coding 2010 student proposal CORP XiangWang

About me
A short self Introduction is in my application page -->

Description
Copr(Cool Other Package Repo) is a new project to enable Fedora packagers to make third party repositories. The end goal is to have packagers be able to take an SRPM and use a commandline client to submit it to a web application (the copr build system). There are three parts of Copr:

mock-vm builds packages inside of a virtual machine
Mentor skvidal has this well under control. Maybe if possible I could help to do part of the work.

Headhunter
Headhunter allocates jobs to be performed on other computers. This is a generic service that could be used by system admins and applicationdevelopers for other things besides a buildsystem. It uses func (https://fedorahosted.org/func) to have Headhunter communicate with the computers that will run the tasks. My summer coding work on this would include:


 * 1) writing modules to perform tasks: building packages in mock,creating new repositories, updating web pages with the lists of available repositories, etc.
 * 2) deciding how to deploy func, headhunter, how to share the package information, etc in order to build.
 * 3) porting func and headhunter to use amqp/qmf for communication.

front end
It needs to provide a web interface to view builder state and a command line client to manage repositories and build packages for those repos. Other pieces that could be written are an interface for users to search and browse the repositories. It will be implemented as a TurboGears2 project.

Timeline
Before May 28th: I read the documentation of AMPQ, Func, make notes and read the source code of func, ampq

Documentation review Notes
Some of the sample notes are as follows:

There are three main types of ampq components, which are connected into processing chains in the server to create the desired functionality:


 * 1) The exchange receives messages from publisher applications and routes these to message queues, based on arbitrary criteria, usually message properties or content
 * 2) The message queue stores messages until they can be safely processed by a consuming client application
 * 3) The binding defines the relationship between a message queue and an exchange and provides the message routing criteria

AMQP protocol Graph
The AMQP protocol is binary protocol with modern features: it is multi-channel, negotiated, asynchronous, secure, portable, neutral and efficient

AMQP is usefully split into three layers:

+--Model+    |     Message	Queues  Exchanges            |     |    Access Control Transactions           |     |                                          |     |	     Data Types	             |     +---+   

+Session+    |	Commands Controls Exceptions        |     |    Confirmation   Completion             |     |					    |     |	Replay		Synchronization	    |     +---+   

+---Transport---+    |	 Data  Encodin Framing              |     |        Failure Detection                 |     |                                          |     |             Multiplexing                 |    <BR> +---+   <BR>

work schedules
Next is my work schedules:

Week 1-4: revise the code of func to allow func to use amqp instead of xmlrpc Week 5-8: Make copr to headhunter communication use amqp
 * 1) first week realize exchange part of amqp into func
 * 2) second week realize message queue part of amqp into func
 * 3) first week realize bindings part of amqp into func
 * 4) Debug and Testing

Week 9-11: decide how to deploy func, headhunter, how to share the package information

Impact
If your project is successfully completed, what will its impact be on the Fedora community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Fedora community, at least one of whom should be a Fedora Summer Coding mentor. Provide email contact information for non-Summer Coding mentors.

answer 1
The end goal is to have packagers be able to take an SRPM and use a commandline client to submit it to a web application (the copr build system).

Miscellaneous
We want to make sure that you are prepared before the project starts
 * 1) Can you set up an appropriate development environment?  yes.
 * 2) Have you met your proposed mentor and members of the associated community?   Yes, I've talked with abadger clearly about our project goals and schedules.
 * 3) What is your t-shirt size? L