Summer Coding 2010 proposal - Backup Configurations Of Softwares

From FedoraProject

Jump to: navigation, search
Proposal deadline is passed. This page is locked.
Do not change any details on this page. If must change something, talk with the project mentor first.

For information how to complete this form, refer to Summer Coding 2010 step-by-step for students.


About you

Name: Tao Lin


Wiki username: iaml

IRC nickname: iaml

Primary language:

Chinese will be the first choice and English is ok

Programming language:

I usually use C++ and Python to program. Besides these two languages, I also know shell, Java, C and C#.

Location: Sun Yat-sen University in Guangzhou, China

Hours tend to work: 09:00 ~ 23:00 UTC+8

Reason to work on an open-source project this summer:

This project is attractive and I want to make some contribution to open source community. It will be a ticket for me. Besides, it is a challenge to me, too. It is time for me to put my knowledge into practice. And it is also the time to act as a developer, not as a user. There must be something new I have not met before. I can't wait to join it!

About your project

Project Name

Backup Configurations Of Softwares


idea page:


Ailurus is an application which makes Linux easier to use. It has attractive feature: software package recovery(it is called RPM recovery in Fedora). But this is not enough. Configurations are the twins of software. Backup configurations of system and softwares is necessary. My work is to add a new feature -- backup configurations of system and softwares, to Ailurus as enhancement to software package recovery.

It mainly contains two parts.

The first part: Backup, including current installed packages snapshot, configurations and plugin information.

  1. Ailurus will search the system to find the configuration, not just the ones in /home/$USER.
  2. User chooses the files they want to archive(if Ailurus don't find the wanted file, the user can type the path himself).
  3. Multiple archive programs is provided. User need to choose one of them to archive the files.
  4. Ailurus will send archived file, including software package snapshot and configuration, to the mailing box which is set by user.

The second part: Restore(from local or from mailing box).

  1. Ailurus will automatically sync the archived files information with the mailing box
  2. The user choose the one of archived files from Ailurus(Ailurus will search the selected archived file from the mailing box if it can't find it on the computer)
  3. Next, user need to choose the files to restore. Then Ailurus will restore selected configurations and corresponding software packages.
  4. More attractively, user can get the difference between current configuration and the archived one. Then he can merge them if needed.

Other functions not mentioned above are scheduled backup files, management of archived files.

Optional function is sharing configurations via google application engine.

This project is potential. Configuring software is a big stuff in using Fedora. Almost every software has its own configuration. It will take lots of time to configure them again if the configurations are lost. On the other hand, user may have more than one computer nowaday, such as one in work place and the other at home. With this project, user can sync their computers conveniently without taking configurations here and there. Besides, we can save a lot of time when we want to reinstall the system, because software and configurations will be restored automatically.

I will develop this project in Fedora 12. And I will make it compatible with F11 and F13 during module test. Python, GTK. QT(in order to support different desktop environments), regular expression and some protocols in email, such as SMTP and POP3 will be used.


Notice: the schedule below, when it mentions "finish the function", it means finish the development of the function and GUI(both GTK and QT). And each function can be used independently.


week 01-a (05-24 ~ 05-27): More research on the technoligy used in this project.

week 01-b + 02 (05-28 ~ 06-06): Finish the function: search the configurations in the system and archive them according user's choices.

week 03 (06-07 ~ 06-13): Finish the function: backup configurations under schedule and send archived files to mailing box

week 04 (06-14 ~ 06-20): Module test and fix bugs (milestone, this module can be a deliverable)

week 05 (06-21 ~ 06-27): Finish the function: Ailurus auto sync the archived file information with the mailing box and search archived files locally and in mailing box

week 06 (06-28 ~ 07-04): Finish the function: restore selected configuration from archived files which is stored in the mailing box or local

week 07 (07-05 ~ 07-11): Finish the function: managing archived files(delete selected archived files to free the space) in mailing box or local

week 08 (07-12 ~ 07-18): Finish the function: show difference and merge two configurations

week 09 (07-19 ~ 07-25): Module test and fix bugs (milestone, this module can be a deliverable)

week 10 (07-26 ~ 08-01): Integrate this project to Ailurus, integration test, fix bugs and get feedback from developers in Ailurus.

week 11 (08-02 ~ 08-08): Write documents for this project (milestone)

Maintenance I have joined in Ailurus. So after Fedora summer of code, I will maintain my project in Ailurus, as a developer. Any questions or attractive feature about my project will get reply as soon as possible.


I am familiar with python and has lots of project experience in web development. I have won some honors.

  1. 2009 Guangdong(a province in China) College Students Programming Competition (GDCPC) third prize;
  2. "Citi Cup," Finance and Information Technology Competition second prize in China;
  3. Sun Yat-sen University students scholarship (2007-2008: first prize, 2008-2009:second prize);
  4. Sun Yat-sen University scholarship excellence (2007-2008)

The last project I join in is developing a web application(online judge system) for Software school, Sun Yat-sen University. I use python and django. Source code: Besides, I have excellent receptivity and know much about Python, C++, QT and network, such as TCP/IP, STMP as well as POP3. And Fedora is my daily working environment. I know it well. More importantly, I am eager to make contribution to Fedora and earn a ticket to open source community. There is no reason for me to mess it up.

You and the community

Impact on Fedora

  1. My Answer: it will enhance the the usability of Fedora. A greater portion of users will obtain a benefit
    • It improves recovery ability in Fedora. The system can recover installed packages and configurations from accidents.
    • It will make Fedora more user friendly. Using Fedora will never be a dream or a troublesome thing. User can share configurations via email. New comers can get shared configurations via email and no more need to spend lots of time in configuring their system and softwares, which mainly obstructs them using Fedora.
    • Users will feel free to configurate their system without worrying about how to restore them if they do not like the changes.
    • User can sync his computers without taking their configurations here and there.
    • Reinstall the system will be piece of cake. Software will be installed and configuration will be restored automatically.
  2. Mentor's answer:
    • Nowaday, more and more people have more than one computers. Tao Lin's work will help users synchronize the computer configurations, and help users setup same development environment for different computers. His work also help users when they re-install Fedora. A lot of Fedora users will obtain a benefit from his work.
    • I am Homer Xing. My email is homer.xing [AT] gmail [DOT] com
  3. Fedora Community's answer:
    • I am quite interested in this feature. Many configuration files stay at various of places. How do you find out them. And how do you storage the setting? I hope you can tell us more details.
      • Thank you for your question. There are three alternate ways.
        • Search the directory /home/$USER, /root and /etc each time the user want to backup configuration.(preferred)
        • Create a daemon to listen package installation. When an installation occurs, this daemon will get the path of configuration.
        • Ailurus may maintain snapshots of installed package, and Ailurus will find out the difference between the current one and last one. Then it knows the newly installed packages. It will scan all the files in those packages, including source files. Then it will pick out the strings which contain "/" and ".". For each found string, Ailurus will check whether it is a existing path or not. If it exists, Ailurus will consider it as configuration file path. The complement way to the method is to let user to enter file path he wants.
      • Archived file will be stored in local, which is set by user, or send to user's mailing box.
    • When users backup configures, can he export the configurations to the other desktops?
      • Thank you for your question. Sync configures in different desktops is the primary goal of this project. My idea is to map location information to each configuration in the archived file. When the user want to restore the configuration, Ailurus will put the configuration in the right location according to the location information.
    • I am Liang Suilong. My mail is liangsuilong [AT] gmail [DOT] com. I also comes from Guangzhou.

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

In my opinion, mentor is a guide. He just tell me the effective way to solve the problem I meet. The one to solve the problem is me. So when mentor is not around, I will find answers from google, BBS, documents and mailing list. Maybe it will not as effective as communicating with mentor, but it is also a way to the answer. I still can overcome the problems and finish my project.

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?

Well, I will keep the community informed of my progress by posting my progress in BBS and mailing list. Besides, I will update my progress on my wiki page. If I have any problems and questions, firstly I will try to find answers from documents, Internet and communicate with mentor. If I still can not find the answer, I will ask in BBS and mailing list for help.


We want to make sure that you are prepared before the project starts

I have already communicated with the developers in Ailurus and asked their opinions on my project. Besides, I am reading the source code of Ailurus and documents of smtplib and poplib in python.

Can you set up an appropriate development environment?

I use Fedora as my daily working environment. I code my programs here. My development environment is set up long long ago. I use gvim and ecilpse depends on what I want to do.

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

Yes, I have joined their develop team. And I have asked the members' opinions about my project. I got lots of feedback, and adjust my project. Finally, I work it out here.

What is your t-shirt size?


Describe a great learning experience you had as a child.

With my father's help, I remember Multiplication table in one day. Several years later, under some emergency, I learn how to use google application engine, in two hours, without hearing of it before.

Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?

I major in Software Engineering, I know how to develop software well. And I believe in myself that I can do it well. Besides, I have great love in developing and Fedora which is my first Linux distribution and teach me a lot. So if I have the chance to make contribution, I will take it and do my best.


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

plus talk