YangJie

Contact information

Your Name:

Yang Jie

Email Address:

xtyangjie@gmail.com

IRC nickname:

xtyang

Launchpad ID:

~xtyangjie2004

Skype username

xtyangjie

Webpage/blog:

http://hi.baidu.com/thinkdifferent

College-University:

Xi'an Jiaotong University

Major:

Computer Science

Project

This proposal tells an extendible GNOME centralized file sharing administration tool. It provides a uniform UI just like Nautilus to browse and control the shared/sharable directories, giving users a humanized interface to manage sharing intuitively. It is based on a set of Schema files recording necessary properties, scripts and libraries and the whole configuration work flow is managed by a configuration manager implemented from a uniform interface for specified protocols, which makes it easy to add new protocols for long time evolution.

Description

  • File sharing protocols(and their implements), such as Samba and NFS and so on, are quite important in our daily "networking" life, while task on the configuration on these protocols are minute and complicated. Still no proper tool to manage it effectively, a centralized configuration manager is demanded impatiently.
  1. The centralized file sharing manager could be a tool integrated with nautilus or with individual interface. File sharing tasks are carried out as the following method: Any of the mounted network places through Samba/NFS are detected and shown in the workspace of this tool, just like the style of nautilus. Users click on a mount point to open nautilus and browse the files or right click on it to get the details.
  2. People also use the menu bar or context menu in the tool to mount a new network place. The required parameters, such as protocols, URLs, folder path and mount points and so on, are all given through a dialog box. Note that currently only samba and NFS is supported.
  3. Support for certain protocols should be designed as module, so that the future work towards other protocols are easy to be carried out.

If you would be willing and able to do other projects instead, which ones?

The project of Font settings improvements also appeals me. During the days I'm using Ubuntu, I found it a hard work to setup the fonts just rightly. I acknowledge that it is a truth that the font setting tool is much better than that in Ubuntu and most Linux operating system. There are indeed some scripts to setup fonts in Ubuntu conveniently and properly, but a real tool to manage it is still necessary.

I once encountered a long painful time to setup the font and at last succeeded. After that experience, some details in the configuration such as language-selector and xorg are now familiar to me, and the setup steps are also recorded. As a result, once it's me who should develop this tool, I am ready. In fact, both the two projects are what I am eager to do - to make the utility of Ubuntu more perfect.

Why did you like this idea?

I indeed like it. The file sharing protocols are what I am always trying to understand and control - I have now set up almost all of the common file sharing services, such as the Samba server, NFS, sshfs and ftp and so on. This idea is targeted at a humanized uniform interface for all of the file sharing protocols(in the future) and their implements, which is surely enhance the usability for users, both senior and junior users included. Once developed, it should be a enjoyable work for us to share files.

Please describe a tentative project architecture or an approach to it

The outline of my plan for this project is shown as follows. Note that the first three sections tells the precondition of my design, and the forth one shows the design of the architecture.

  1. My experience considered, I choose Perl as my main language, gtk2-perl as the graphical library to develop the GUI and Moose as the OO framework when developing the backend;

  2. The output of this project is an integrated tool which interface is similar with the Nautilus. Users browse all of the mounted shared URLs from other computers and sharable directories in their own computers. They also do the mount/umount operations and other configurations with this tool. When completed after 2 months, the tool will be able to support Samba and NFS file sharing. There is the User Interface figure shown as follows:

    ui.png

  3. The tool setup the configurations based on a set of Schema files. These files are all XML files. According to the configuration files of a specified protocol, Those files record the necessary properties in the conf file and their meta-properties, scripts, and deb libraries to install the services. The Schema file is the base of this tool;
  4. There are three levels in the design of its architecture.
    • The UI level has three modules. The main workspace is where the shared directories are mounted and shown automatically and most operations towards sharing directories take place. The administration tool is a dialog box, in which users are able to add or remove a shared URL, share directories with specified protocol in their computers and do other necessary configurations. The Schema Viewer shows schema file of specified protocol in a humanized style.
    • The Protocol Management level is where the configuration takes place. Four modules handle the task. File Manager handles all the file operations; Schema Helper analyzes Schema files to generate the property hash table; Config Manager is a kernel module in this level. It decides the work flow according to the requirement of the current protocol, and updates the hash table according to user operation; Service Manager is called to execute scripts or manages the deb libraries if necessary.
    • The last level is the file system level, in which the Schema file is the most important. As stated, Schema files record the properties and other required information. Other important elements are the controlled objects such as services, shared URLs and the deb libraries.
    The Archtecture is designed as follows:

    arch.png

The whole work flow is decided by the Schema file which records all required information. Once a new protocol is demanded, we can just create a new set of Schema files, and implement a new Conf Manager to manage the new work flow for this protocol. It is easy and convenient.

Give us details about the milestones for this project

  • From now on till the 2nd week: Get more information on Samba and Gtk2Perl, and build the structure of the project. During the two weeks, the following information is in need of study:

    • Details of samba sharing, including configuration files, service authorization policy, deb libraries and some basic file sharing knowledge. Meanwhile, I'll improve the list of properties required to setup in samba configuration files;
    • Gtk Programming Model (and Gtk2-perl). The Gtk programming is what I'm not quite familiar with yet. Within the two weeks, I'll learn some basic information about it and try to create a simple UI as stated in the project architecture[Link to the section] with Gtk2-perl;
    • Basic knowledge about Nautilus. Maybe I want to add some functions to Nautilus to enhance the usability of this project.
    Until the 2nd week, I will be familiar with the samba configuration and able to master the Gtk programming. A project structure should be built then.
  • Week 3-5: Start with a read-only GUI towards samba sharing configurations. There are some sub-tasks:
    • Complete the read only file operations (File Manager) and the Schema file analysis (Schema Viewer). Output the required properties in a humanized format;
    • Create the Schema file(s) for Samba;
    • Develop the read-only configuration functions (Config Manager) for Samba; Develop the Service Manager to reload the configurations. Test it to ensure that it is already able to reload configurations with scripts;
    • Develop the GUI Generator to generate the elements in the administration tool dialog box according to current property set;
    • Develop the GUI for Schema Viewer and the main workspace (where show the shared/sharable directories);
    • Go through the config-read work flow and test it.
    • The output of this section is a centralized read-only GUI tool. The tool shows the shared/sharable directories, allows for configurations towards Samba, and can provide a humanized view of the Samba Schema file.
  • Week 6-9: Enable it to modify configurations to manage the sharing; Add the function of reading the NFS sharing configurations.
    • Complete the write functions for File Manager. There are two strategies to modify the configuration files: directly update, or create a new one to replace the older;
    • Complete the write functions for Config Manager based on the former task. This change enables it to modify the configurations;
    • Test the modification operation, including add/remove a shared/sharable directory and change the authorization configuration;
    • Add the support for NFS. Works covers modules including File Manager, Service Manager and Schema files specified for NFS. During the work on NFS, original architecture may be iterated slightly.
    • Test the whole functions of the tool and release a alpha 1 version; submit it.
  • Week 10-12: Write the documentation and submit the project; tackle bugs and submit patches.
    • Write the user guide;
    • Gather the feedback and arrange a FAQ;
    • According to the feedback, release a test version each week;
    • Discuss with my mentor to get further advice;
    • Improve my codes and documents.

Why will your proposal benefit Ubuntu?

Part of my answer is why I like this idea - It will become a uniform management interface for both Samba and NFS and their implements, and will make it interesting for users to share files between their Ubuntus.

Another important reason is that what I am ready to develop is also a tool with a uniform interface for protocols to integrate through. Once the tool is completed, firstly it is possible to manage the smb and nfs sharing in a compact GUI, and secondly, the future work is easy to integrate new file sharing protocols without any re-design, neither in backend nor in frontend. I think it may be a good idea for its long time evolution.

Open Source

Please describe any previous Open Source development experience

  1. I am one of the developers in the Apache Incubator project Bluesky. It is an e-learning solution designed to help solve the disparity in availability of education between well-developed cities and poorer regions of China.

  2. Till now from 2008 I started with my MSc graduation, I had been participating in and taking in charge of part of a project: Bluesky Cloud platform, which is also an open source project. The main purpose of this project is to provide a open source cloud platform for the web applications to get capabilities cluster auto-administration , load-balancing and distributed storage & computing and so on. It is based on some other open source projects such as hadoop and Apache Incubator VCL (Virtual Computing Lab, a project to control virtualization middleware such as Xen and VMware ESXi, see also http://incubator.apache.org/vcl/).

  3. As an additional experience, although my coding life from my MSc graduation on, I have always been with open source software and libraries.

Why are you interested in Open Source?

  • The first reason is Open Source itself. From I found the Open Source software on, I had treated it as another way other than commercial ones to communicate with computers and achieve my purpose. For example, I use Ubuntu instead of Windows, and vim/eclipse/netbeans instead of visual studio/MyEclipse.
  • Open source libraries and projects also enhance my coding experience. I use apache http server and read its code, and use CPAN to get what I want.
  • After all, Open Source is a way for the free software for practice. Interest in Open Source is equal to interest in free.

Availability

How long will the project take? When can you begin?

Develop task will take about 2 months. After the 2 months, the code is submitted for mentors and users for an experience for about a month, when bugs and improvements are patched.

It starts once I finish the proposal. As is shown in the milestones, I will pay 2 weeks to study the details of Samba, and get familiar with the GUI developing. In the following 7-8 weeks, I will finish my develop task, and submit the project, and in the last 2-3 weeks, the documentation work is carried out and bugs or some improvements will be developed.

How much time do you expect to dedicate to this project? (weekly)

All through the 3 months, most of my time will be spent on the project - about 2/3 of my work time, which means about 40 hours weekly.

Where will you based during the summer?

In my laboratory in Xi'an Jiaotong University (UTC +8). There is convenient for me to gather information that I need.

Do you have any commitments for the summer? (holidays/work/summer courses)

No other commitments except the GSoC.

Please designate a back up student (in case you need to withdraw your application)

Actually, there wouldn't be any event causing me withdraw.

Other

Have you ever participated in a previous GSoC? (describe your project)

No. It's the first time for me to participate in GSoC.

Have you applied for any other 2010 Summer of Code projects? If yes, which ones?

No other project is applied till now. I think it a straightforward way for good working to focus on the one project, because it's my first time for GSoC.

Why did you apply for the Google Summer of Code?

  • The GSoC for me is an opportunity to improve my experience on Open Source developing which is worthy to participate in.
  • It is also a platform for me to learn from mentors and my competitors. Any of the mentors and my competitors are with good technique and aggressive. Much can be learned from them.
  • At last, it is a way to contribute to Ubuntu, and to create a useful tool for file sharing, which is a good way to get further information about the file sharing protocols.

Why did you choose Ubuntu as a mentoring organisation?

Ubuntu has been my main OS for develop and daily usage, most of my experience on Linux are based on Ubuntu, so I think it a good choice for me to contribute to. Further more, Ubuntu is humanized and with a large-scale community, which makes it easy to get enough information, ensuring the convenience in the developing works. At last, it's ideas are with proper difficulty and scale for me to complete in this summer.

Why do you want to participate and why should Ubuntu choose you?

  • I have my most works be under Ubuntu, including service administration, developing and daily usage. The configuration experience on file sharing also prompts me to make some improvement. Besides, the access to GSoC itself is an honor in my resume, and I want to be a member of Ubuntu developers ;).
  • As for the reason why Ubuntu choose me, I think I am a good developer on Open Source with experience and enough enthusiasm and a developer with strong experience of Perl and C++. Further more, my desire to make file sharing perfect gives me enough aggressiveness to finish this project with quantity and quality. I am the one for it! Smile :)

  • If there are more reasons, I'am sure I won't miss the deadline, and I indeed like coding.

About Me

Introduction

I am a MSc student from China of Computer Science in Xi'an Jiaotong University. I am now in my 2nd-year graduation. I have strong coding experience in C++, Perl and Java, among which, C++ has been trained systematically and the other two are trained in the progress of project developing. Starting with my MSc graduation, I had been learning more about the theoretical and engineering knowledge, based on all of which, I had participated in some projects, shown as follows.

My Experience

  • The Bluesky e-Learning system, a project in the Apache Incubator, which is mentioned in the former context. It has been shared with an education institution from India;

  • The Bluesky Cloud Platform, a web application objected cloud platform, also mentioned in the former context. I took in charge of half of this project, and took responsibility for the vitualizaition management based on VCL. All of my tasks are finished with perl. I am one of the co-author of two papers based on the project.
  • In 2008, I participated in the IBM Programme & Creative Match in China with my partners and got the 2nd prize with a web 2.0 programmable application;

  • And plenty of other engineering & administration experience, some of which are based on Linux(mostly on Ubuntu).

Above all, I am a student with much interest in Linux/Ubuntu. Affected by Open Source, I'm eager to contribute somthing, to Ubuntu, and also to myself. I wish that I was one of the students to be chosen! Thank you for reading. I hope you enjoy it!

This is the Link to My Proposal.

GSoC/2010/YangJie (last edited 2010-04-09 12:03:03 by 218)