Summer Coding 2010 proposal XiangWang

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

Convincing
I’m a phd student of instate of acoustics ,CAS. I have done many projects about speech,cell phone and games. The list is about some of my projects and publications:

Your Coding Skills What language are you familiar with? My programing languages are C, C++, java, perl ,python and linux shell. What platform are you developing on? Linux, WinCE, Symbian, Windows Show past projects and code examples of your own. ...
 * 1) Use C and C++ language to write the code of HMM speech recognition and synthesis system for my lab.
 * 2) Use Perl to write the text-processing codes.
 * 3) As a Intern of SamSang China Research center, write the voice-control game on the platform of Windows mobile.
 * 4) Write the VOIP client programs via G.729.
 * 5) Write the UI of speech recognition products.
 * 6) Linux shell program in C for the HMM training module of our speech recognition system
 * 7) Build the speech synthesis system of our lab.
 * 8) Write the code of Signal processing, extracting the features of MFCC, LPCC, LSP.
 * 9) Transfer the code of speech enhancement from matlab to C.
 * 10) implementing the famous straight speech synthesis matlab code to realtime useage

Some of my Publications
[1] <Discrimination Between Pathological and Normal Voices Using GMM-SVM Approach>, xiang wang, 2010 Elsivier

[2] Supporting Vector Machine Of Part Of Speech in Speech Synthesis System, 2010 ICBECS ...

Last summer I participated in GSOC working on vlc. But at the end of this summer I hope to contribute to the Fedora Project as a regular contributer.

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