Summer Coding 2010 proposal - Adding plugin support for ailurus

Project name
Adding plugin support for ailurus

Reference
None.

Description
Ailurus is an application which aims at making GNU/Linux distributions easier to use. It help new users of GNU/Linux to install software, config the desktop environment easily, and learn some useful Linux skills etc.

Many modern applications support plugins to improve its scalability and user experience. If Ailurus supports plugins, users can write the plugin to implement the function they want but not provided by Ailurus. And through sharing this plugin others can also benefit from it.

So we want to use plugin platform to make Ailurus more scalable. Our main goals are:
 * Plugin support in Ailurus and Ailurus will provide plugin API
 * Plugin manage board to let user enable and disable plugins
 * A solution to let plugins can be shared esaily

Timeline

 * Week 1: determine the detail requirements, and the implementation strategy, e.g. how to support plugin and roughly define API.
 * Week 2: design the web platform to let users easily share plugins
 * Week 3-Week 4: modify source code architecture if needed, write code for implement plugin support (1.5 weeks) and plugin manage system (enable and disable plugins, get new plugins)
 * Week 5-Week 6: write the plugin sharing web platform
 * Week 7-Week 8: write some plugins to test and improve
 * Week 9-Week 10: fix bugs and write documentations, packaging
 * Week 11: project submission

Convincing
I am familiar with c/c++, python, pygtk, Qt, and linux programming. As a technical supporter of bjtu bbs, I added the IPv6 support to it in its telnet interface (bbs6.bjtu.edu.cn), written in c. When I was in sophomore, I wrote a file system simulation like ext2 in c.

I have some knowledge of automake/autoconf, know the basic usage of subversion and git. Also I am good at reading English document, like to learn new knowledges. I know rpm and deb packaging, and now have the knowledge of ailurus source code structure. I think I can achieve the goal through my efforts.

I have already attend Ailurus developing, and done some improvements:
 * More precise statistic of cache size
 * Disable buttons if there is no need to clean cache of APT, Ailurus
 * Hide rows when ailurus can't get L1 and L2 cache info of cpu
 * Clear pacman cache on archlinux
 * Adding support for install packages on archlinux

Impact on the Fedora community

 * 1) My answer:
 * 2) * The project can improve the usability of Fedora. A greater portion of users will obtain a benefit, since they can use write, use and share plugins easily.
 * 3) Mentor's answer:
 * 4) * Long time ago, Ailurus was submitted to Fedora community. Although Ailurus is completely GPL-ed software, controversy still appears because it can install close source software. Some community members think that close source software should be removed, but some others think that close source software can make Fedora more convenient to use. At last, all close source software items are completely removed from Ailurus.
 * 5) * In my opinion, close source software can be provided as a plugin. If a user really have to use close source software, she can manually install a plugin, say, in order to install Adobe Reader. Ideal Shang aims at realizing plugin support. I think his work is very useful.
 * 6) * I am Homer Xing. My email address is homer.xing [AT] gmail [DOT] com
 * 7) Fedora community's answer:
 * 8) * I know Ailurus needs plugins to enhance its features, however, not all plugins can get into Fedora or RPMFusion. How do you distribute the plugins?
 * 9) ** Thank you for your comments. For plugins which can't be accepted by Fedora or RPMFusion, we can put them in Ailurus's own plugin reposity, we can add a new item to installing software of Ailurus, like installing Ailurus plugins.
 * 10) * How do you keep easy to install plugins? If you want to put plugins into /usr/share/ailurus/plugins, you may need to root privilege. Maybe policykit will help you.
 * 11) ** To user it just like installing software or firefox extensions as they use Ailurus. When users choose the plugin thay want to install, Ailurus will download it and put it in the ailurus plugin directory. I think to put plugins either in /usr/share/ailurus/plugins or in ~/.ailurus/plugin is ok (but ailurus configurations is in ~/.config/ailurus). If put in /usr/share/ailurus/plugin, root privilege is needed as user install other software and yes we can use policykit.
 * 12) * I am Liang Suilong. My mail is liangsuilong [AT] gmail [DOT] com

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

I will try to search through search engine to see whether others have came across that and there is the answer.

If not, I can try to ask for the help on mailing-list and IRC.

I can also debug it.

2. 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?

I can send emails to the mentor and mailing-list about the progess and what problems I have.

Also I can stay on IRC channel.

Miscellaneous
1. Can you set up an appropriate development environment?

Yes, I can.

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

Yes, I have.

3. What is your t-shirt size?

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