From Fedora Project Wiki

Revision as of 04:13, 14 May 2010 by Iaml (talk | contribs)

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

About you

Name: Tao Lin

Contact: lintao30@gmail.com

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

What is the name of your project?

Backup Configurations Of Softwares


Does your project come from an idea on the Summer Coding 2010 ideas page? If so, provide a link for reference, as well as a link to any discussions with mentors about your proposal.

idea page:

https://fedoraproject.org/wiki/Summer_Coding_2010_ideas_-_Customizable_application_installer


Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

I am going to add a new feature -- backup configuration of software, to Ailurus. This feature mainly contains two parts. The first part backup configuration files, including config files and plugins. In this part, Ailurus will find out some configuration files of software in the system, and let user to choose the files they want to archive. Then Ailurus will send them to the mailing box which is set by user. The second part is to restore the backup files(from local or from target mailing box). The user choose the version of archived file from Ailurus and then choose the configurations to restore from the archived file.

Other functions are scheduled backup files, managment of archived files and show difference and merge two configurations of the same software. Optional function is share configurations via google application engine.

This project is potential. Because configurating software is a big stuff in using Fedora, and other distributions. Almost every software has their own config file. It will take lots of time to configurate again if the config file is lost by some accidents. 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 synchron their configurations of computers conveniently without taking configurations here and there. And more attractively, we can save a lot of time when we want to reinstall the system, without worrying about the loss of configurations of system and softwares.

In this project, I will use python, regular expression and some protocols in email, such as SMTP and POP3.


What is the timeline for development of your project? The Fedora Summer Coding work period is 11 weeks long, May 24 - August 9; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (July 5-12); the last steps always take longer than you think, and we will consider canceling projects that are not mostly working by then.


Notice: the schedule below, when it mentions finish the function, it means finish the development of the function and GUI.

Timeline

week 01 (05-24 ~ 05-30): Communicate with mentor for more detail on this project. Do some more research on the technoligy used in this project. Finish the function: search all the configuration files in the system and archive them according user's choices.

week 02 (05-31 ~ 06-06): Finish the function: schedule backup configuration files.

week 03 (06-07 ~ 06-13): Finish the function: send archived files to the target mailing box

week 04 (06-14 ~ 06-20): Module(backup configuration files of softwares) test and fix bugs

week 05 (06-21 ~ 06-27): Finish the function: search archived files from target mailing box

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

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

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

week 09 (07-19 ~ 07-25): Module(restore configuration files of softwares) test and fix bugs

week 10 (07-26 ~ 08-01): Integrate this project to Ailurus, integration test and fix bugs

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


Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

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

  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 for Software school, Sun Yat-sen University. I use python and django. Source code: git@github.com:iaml/OEAP.git. Besides, I have excellent receptivity and know much about network, such as TCP/IP, STMP as well as POP3. And Linux(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.

You and the community

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.

  1. 1 My Answer: it will enhance the the usability of Fedora. A greater portion of users will obtain a benefit
    • It improves the ability of recovery in Fedora. The system can recovery its configurations from accidents.
    • It will make Fedora more user friendly. Using Fedora will never be a dream or a troublesome thing. User can shared configurations of softwares 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 their computers without taking their configurations here and there.
    • Reinstall the system will be piece of cake, the configurations will restore in several minutes.
  1. 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
  1. 3 Fedora Community's answer:

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. Mentor is not the one that can guide me to finish my project. So when mentor is not around, 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. 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.

Miscellaneous

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?

XL


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 program a software well. And I have ability to finish my project without doubt. Besides, I have great love in developing and Fedora. So if I have the chance to make contribution, I will take it and do my best.

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

plus talk