SummerOfCode/2006/ArthurPemberton

= Backup tool (system-config-backup) =


 * Student: ArthurPemberton
 * Assigned Mentor: PatrickBarnes

Project Proposal
Backing up files is of undeniable importance. System administrators tend to have to have complex, automated systems which span multiple computers, making copies of the important data to the backup media. Power users however, tend to have simple scripts, or do simple copies to their backup media. The average unfortunately, rarely takes the time to do backups of their important data.

My aim is to develop a simple to use application which can utilize simple tools that already come packaged for the Fedora Project (and many popular Linux distributions) to provide easy, recurring file archiving for power users and simple home users.

The application would allow setup and logging of backups on a per user basis, via a non-intimidating graphical user interface, powered by other mature applications.

Why I Should Be Chosen
I have a passion and dedication towards the Fedora Project. I have used it for several purposes, and it has served me very well. I have been searching for a way to give back to the Fedora Project, so far, I have been able to do a remake of system-config-boot, but for directed towards multiple OS booters. This was done more for personal education purposes, and to familiarize myself with the technologies commonly used by the Fedora Project.

I am currently at the edge of my second semester of university, and I intend to continue to at least six more semesters. As a result of this, I think I can accurately categorize myself as very difficult to lose contact with. I can be contacted via a student email address, or one of the many Fedora mailing lists, or my personal website.

Finally, I have experience in using all the technologies that I intend to utilize in creating the intended application. This puts me in the position of having enough experience to make startup of the project quick.

Development Methodology
The previous “Summer of Code” initiative yielded pyBackpack. However, by all indications, this tool was lacking. I am not a fan of the interface, or the way it functions. As such, I intend to complete my research stage in which I review commercial systems for backup, and summarize (and analyses) peer opinion gained on the general Fedora mailing list in the thread titled “What backup method(s) do you use?”.

The next stage would consist of coding from the ground up, with focus on the logic system. Once this base has been brought to a usable point, emphasis would transfer to creating the GUI. Development would then iteratively improve upon the core and interface till the objectives are met.

Currently, my intentions on providing community transparency are simple archiving and publishing of code. This effort may be graduate to use of CVS.

Overview
The application would be written in Python and make use of PyGTK for the graphical user interface. Configuration data on the backup sets would be defined in XML files stored in the user's directory. The application would make use of crontab and crond for recurrence, and the following for backing up of the actual data:
 * cp/scp
 * rsync
 * rdiff-backup
 * archiving and relocating (tar, gz, bzip2, zip)

User Interface
The intended primary user interface would consist of two modes of representing the backups: a list view and an icon view. The former would offer more details information on the backup sets, while the latter would offer a simpler view to the backup sets. Both views would include a log viewer which would allow viewing of the backup history. Functionality

The intended general functionality is be as follows:
 * Do all backups
 * New backup set
 * Modify backup set
 * Delete backup set
 * Duplicate backup set
 * Help

The intended backup set level functionality is as follows:
 * Activate
 * Deactivate
 * Import
 * Export
 * Backup Now
 * Modify
 * Delete
 * Restore
 * Restore to . ..
 * Check size

Functionality would be delivered through the use of basic menus.

Deliverables
The project aims to bring about the following at by the slated deadline:
 * Importable logic layer to handle file interpretation, and interfacing with 3rd party, helper applications
 * Graphical user interface (done with the GTK toolkit)
 * Strong and complete support for backing up to fixed media
 * Basic support for backing up to removable media
 * Basic support for file restoration from any media
 * Very basic user help documentation

The project hopes to bring about the following in remaining time period before deadline if any:
 * Console user interface (done with the Curses toolkit)
 * Strong and complete support for removable media
 * Strong and complete support for file restoration
 * Basic support for file system specific backup methods
 * Full user help documentation
 * Generation of HTML reports

Biography
My name is Arthur Pemberton. I am a twenty-one year old international student currently studying towards a Bachelor of Science in Computer Science at the University of Missouri Kansas City. I am wrapping my second semester in the United States, but I am from the island of Dominica in the Caribbean.

I enjoy all things computer, web development, programming, some graphics design, and general computer repair. I maintain a personal website located at www.pembo13.com.

My programming experience starts with learning and practicing of fundamental programming concepts using Pascal in Borland Turo Pascal®. I then graduated to object oriented programming with Borland Delphi®. Since being introduced to Linux, in Redhat 8.0, I have taken us basic bash scripting, PHP scripting, and more recently Python coding, for many reasons. As part of my past self employment of setting up small networks, I have designed a simple backup script written in Python, since then I have been interested in taking that script to the next level. This summer will be the first period where I will have the time, and drive necessary to make this a reality.

I have used Windows® from 3.1 to XP, and in that time became quite the power user. However, I moved from Windows ME to Fedora Core as my primary desktop operating system as of Fedora Core 2. I am currently running Fedora Core 5 on my desktop computer, and Fedora Core 5 Test on my test machine. I am currently attempting to give back to the Fedora community which has been so good to me in my growth in Fedora.

Digital Copies
http://www.pembo13.com/pub/google_soc-2006-application.odt http://www.pembo13.com/pub/google_soc-2006-application.pdf http://www.pembo13.com/pub/google_soc-2006-application.txt

Project Page
http://www.pembo13.com/linux/soc/