Summer Coding 2010 proposal - Advanced RPM Backend for Ailurus

Project name
Advanced RPM Backend for Ailurus

Reference
Idea comes from https://fedoraproject.org/wiki/Summer_Coding_2010_ideas_-_Customizable_application_installer

Description
Ailurus is an application which makes Linux easier to use. It can help people configure Linux, install software, learn Linux skills and so on. A person who switch from other OS to Fedora or switch between different Fedora versions will possibly encounter difficulties, since some package names may vary in different Fedora versions. To solve this problem, I want to develop an advanced RPM backend for ailurus, and at the same time, make the software installation easy and friendly.

What I will do:
 * Generate the list of all packages, available packages and installed packages according to the RPM database.
 * Categorize packages. Several default categories and user defined categories. User can add a package to one or more categories.
 * Fulfill transaction check/test and resolve dependencies.
 * Enable or disable a repository, add third-party repository are supported.

Python is the developing language.

Timeline

 * Week 1-2: learn mechanism of RPM and RPM APIs
 * Week 3: write a simple program can get the list of packages and the status of each package (installed or available)
 * Week 4-5: design and implement the RPM lib for packages listing, categorizing and test it.
 * Week 6-8: add multi-repository support. add dependency-resolving support. test and optimize.
 * Week 9: test, fix bugs.
 * Week 10: write document.
 * Week 11: submission.

Convincing
Although I haven't done any open source project before, I have participated in two secret projects for a laboratory in my university. Last winter me and a student completed a outsourcing project. In May, 2010 I am implementing a PL/0 language compiler/interpreter, and the work is almost done. I have been using Fedora for years and I like this distribution. I want to participate in open source project and that's why I am here. I major in software engineering and I am familiar with C/C++, PHP and Python.

Me and the community

 * 1) If your project is successfully completed, what will its impact be on the Fedora community?
 * 2) * My answer:
 * 3) *# Package listing and categorizing is very useful because it can help user find a package quickly and install softwares conveniently, especially for beginners.
 * 4) * Mentor's answer:
 * 5) * Elyes Du aims at improving the RPM backend. His work is necessary because package name changed between different Fedora version. By Elyes' work, Ailurus can change software items if package names has been changed. Therefore users will not get error if a package does not exist at all.
 * 6) * My name is Homer Xing. My email is homer.xing [AT] gmail [DOT] com.
 * 7) * Fedora community's answer:
 * 8) * I am so thankful to you. Packaging listing and categorizing is the default functions in PackageKit and yumex. What is difference between your project and them? As we know, both PackageKit and yumex can not offer perfect user experience to users.
 * 9) *# Thanks for your comments. User can specify his own categories, install or remove packages in a category easily, and show necessary packages (hide the child packages or some lib packages) as all packages are of large quantity, these are the differences between the project and PackageKit/yumex.
 * 10) * How do you make difference between your project and the existed application? Or How do you improve users' experience?
 * 11) *# The categories in PackageKit and yumex base on default package groups(yum grouplist) and are unchangeable. In this project, besides the default categories, I want to provide some other more categories and user can add/remove packages whatever they like.
 * 12) *# Package listing and categorizing can be integrated with Ailurus's other features, such as saving user's categories in server (like another backup and restore method), in this way, user's experience is improved.
 * 13) * My name is Liang Suilong. My mail is liangsuilong [AT] gmail [DOT] com


 * 1) What will you do if you get stuck on your project and your mentor isn't around?
 * 2) * I will first search on the web or the university's e-library. If I still get stuck, I will ask for help on mailing list and IRC.
 * 3) * I will communicate with the mentor regularly.
 * 4) 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?
 * 5) * I always stay On IRC, and I can send the progress to mailing list and mentor.

Miscellaneous

 * 1) We want to make sure that you are prepared before the project starts
 * 2) * Can you set up an appropriate development environment?
 * 3) ** Yes, I can.
 * 4) * Have you met your proposed mentor and members of the associated community?
 * 5) ** Yes, I have.
 * 6) What is your t-shirt size?
 * 7) * It's L

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