Debian

Wiki

Login
  • FrontPage
  • RecentChanges
  • FindPage
  • HelpContents
  • XuGuojun
Debian
Wiki/
  • Login
  • Comments
  • Info
  • Attachments

  • SummerOfCode2012
  • StudentApplications
  • XuGuojun

  • Name

    • Guojun Xu
  • Contact/Email:

    • Email: qinguan0619@gmail.com

    • IRC: qinguan@irc.oftc.net

    • Jabber: xuguojun@jabber.org

    • TZ:GMT+8
  • Background:

    1. who are you ?

      • I'm studying in Beijing University of Aeronautics and Astronautics (?BeiHang University).

      • I’m a graduate student in the School of Reliability and Systems Engineering, majoring in Software Reliability.
      • I got the bachelor degree of computer science and technology at the School of Computer Science and Engineering,Beihang University.
    2. technical skills

      • Operation system: Linux(Debian & Ubuntu) and Windows

      • programming language: Python,C,JAVA,C#,Shell,Ruby,SQL,Javascript,etc.
    3. experience

      • Design and implement a network I/O virtual management system based on multiple network I/O virtual solutions under Debian sequeeze. The application integrates three I/O Virtualization Technologies, Virtio, VT-d and SR-IOV. It can detect the system hardware configuration information automatically, such as Network Card attributes(single port/double port/four port, whether support VT-d or not, how many virtual ports can be generated, etc.), and than select the best solution for the current system. The application generates a virtual machine's descriptor(in XML file) and use KVM to boot the virtual machine from the descriptor with system image created for virtualization. Besides, the application can demonstrate the statue of virtual/physics network cards generated and distribution immediately on web page built with Ruby On Rails and Flex. Python,Ruby,Flex. (https://github.com/qinguan/ANVT)

      • Design and implement a network server application to store, share and management data/document for Computer-Aided Software Reliability Engineering Environment. And develop a application about Software Reliability Estimate and Test. C#
      • Implement a Compiler front, a simple Shell interpreter. C
      • Design and implement Flydove, a Wireless communication client software, it is based on FSK, and can chat with each other and transfer file. MFC
      • Design and impelment a simple Logistics Management System in Java and Swing. JAVA,Mysql
    4. What makes you the best person to work on this project?

      • I am eager to dive in and learn new things. It is full of fun!
      • I am confident with my ability and I can afford enough time to complete it.
      • I have study and practice with Debian/python/KVM/virsh, I am also familiar with HTML/JavaScript, and some relevent technologies.
      • This is the first chance for me to actually participate in open source community, I treasure this chance.
      • I will and am used to try to reach the acme of perfection.
  • Project title:

    • Virtual Image creation web interface
  • Project details:

    • SUSE Studio is a Web application for building and testing appliances in a Web browser. Debian also need an equivalent of Suse Studio to build system image on user demand, it is the objective of this project, we may call the deliverables as a whole Debian Studio.
    • Debian Studio is designed to be a simple and fast appliance builder, which provides an easy to use, web-based user interface. Anyone can create their own Debian images with desired packages for virtualization, user can add and remove the packages, configure system options, and also be able to add his own data in the new system. The package selection will be interactive, searching through apt api to help user finding them. This method will provide clean images for use in a cloud on a virtualization host. The project will use grml-debootstrap for background generation and a python framework (Django or Pyramid) for the web interface.
    • with Debian Studio we can:
      • Save time and money by tailoring a fully supported Debian Linux configuration for a specific use case.
      • Increase productivity of deployment and maintenance due to reduced deployment cycles and maintenance costs.
      • Easily build and deploy appliances with a user-friendly Web interface.
  • Synopsis:

    • Debian is short of tools just like Suse Studio for custom-made operating system, it's time to write a tool for Debian. This is also one of the significance of this project.
    • This project requires: Some scripts to generate virtual image from descriptor; A user-friendly web interface based on django or pyramid for generating the image descriptor on user demand; Some function modules to manage user file uploading.
    • When done, user can build Debian image for virtualization by selecting some items on demand.
  • Benefits to Debian:

    • Provide a user-friendly web interface to create custom virtual images for the cloud.
    • I will try to be one long-term contributor or even maintainer of Debian Studio.
    • I will try to be familiar with other projects and make contributions. (Coding for fun!)
  • Deliverables:

    • A web interface with interactive package selection, generating an image descriptor on server.
    • A background script to generate the virtual image from a descriptor.
    • User file upload management for image inclusion.
  • Project schedule:

    • Apr. 23, 2012 - May. 04, 2012:
      • Learn about the Suse Studio, especially the features and user experience.
      • Refine some excellent features from Studio which can be reused in this project.
      • Discuss with mentor about the design and technology related to the project.
      • Study more about python.
    • May. 05, 2012 - May 18, 2012:
      • Make more detailed design of the project, mainly the design of the project framework, including front-end, back-end, as well as a middle logic layer connecting the front-end and back-end, which can make the interaction between them more easier.
      • Refine the function point with modular design, including user information management, user file upload management(mainly mean the image inclusion), base virtual image templates information management, software packages information acquisition and management, background script generation and management, etc.
      • Communicate with mentor to confirm all the functions need to be demonstrated.
      • Setup proper development environment.
    • May. 19, 2012 - Jun. 01, 2012:
      • Communicate with mentor to confirm the progress of the project.
      • Study and try to use the chroot and debootstrap.
      • Study the grml-debootstrap, try to write some python/shell scripts which can modify or generate new configuration files(such as /etc/debootstrap/config, /etc/debootstrap/chroot-config, /etc/debootstrap/locale.gen, /etc/debootstrap/packages, /etc/debootstrap/extrapackages, /etc/debootstrap/stages, etc), test how to configure in order to add existing user data to a new debian system.
      • Try to write a simple script to generate a basic virtual image.
    • Jun. 02, 2012 - Jun. 15, 2012:
      • Design an universal descriptor for virtual image in XML fromat, the descriptor will include all the properties needed to build a new system image.
      • Realize the background script(include a parser for the descriptor) to generate the virtual image from a descriptor.
      • Write some unit tests and function tests using ?PyUnit for validating the code(need to consider how to carry out the function tests effectively, and how to verify that the images created by scripts are executable and meet the requirements) and bug fixs.

      • Jun. 15, 2012 will be milestone 1.
      • At this point, we will see background scripts completed:
        • A parser for descriptor.
        • Scripts for generating the virtual image.
        • A well-organized set of unit tests and function tests for the background scripts.
    • Jun. 16, 2012 - Jun. 29, 2012:
      • Communicate with mentor to check whether there are any mistakes between realization and design about the background scripts.
      • Study more about django/MongoDB/PyMongo/MongoEngine, ?JavaScript and other related technology.

      • Build the basic framework for the web interface with django.
      • List the elements which will be showing on the web page, such as available base virtual image description templetes, available and classified software packages' information(got through the apt api), and organize all the elements in different web pages/parts of web page.
      • Design some clarity and brevity web pages to display elements mentioned above.
      • Design a compact database, maybe it will be implemented with MongoDB using ?PyMongo/MongoEngine or other NoSQL, storing available virtual image description templetes, user information including user registration information, virtual image descriptors created by user, user data, etc.

      • Consider user authentication(likely use OpenID to achieve it).
      • Conseder and study how to test web interface with scripts. Learn some Doctests/Pylons.
      • At this point, we will see some parts of the project completed:
        • A basic framework.
        • A basic database.
        • A list of elements will be displayed on the web pages.
        • The design of preliminary layout of some important web pages.
    • Jun. 30, 2012 - Jul. 13, 2012:
      • Communicate with mentor to check the remaining coding work and prepare material for mid-term evaluation.
      • Resize the user authentication module.
      • Resize some interactive web pages with HTML/Javascript, mainly the part of the configuration of the virtual image, including basic configuration(default locale, network options, firewall, etc), existing image templetes and software packages can be selected, memory and disk size, swap partion size, default runlevel(single user, multiuser, normal console, graphical login), etc.
      • Write some function tests for above.
      • Jul. 13, 2012 will be milestone 2.
      • At this point, we will see some function features completed:
        • Allow user to login in with openid;
        • Allow user to select a base virtual image template among the available template list.
        • Allow user to select some softwares from package list whcih will be installed in the new system.
        • Provide a default configuration and allow user to change the configuration items.
    • Jul. 14, 2012 - Jul. 27, 2012:
      • Resize some interactive web pages, make it possible that user can upload custom scripts which will run at boot time, upload data which will be added in the new virtual image.
      • Realize the function module of user file upload management for image inclusion. The upload management module is in charge of user storage space allocation. Each registered user will be assigned an appropriate amount of disk space to store user-related information, especially the image inclusion. The maximum of single file/data size may be also limited(when the uploading file is too large such as 700M or more, It may make the browser very slow or directly crash). For the non-registered users, all relevant data will be deleted after image generation.
      • Write some unit tests to ensure that the upload management works well and bug fixs.
      • Resize the fuction modules to reorganize all the information selected by the user into a well-designed xml file or other formats file as a virtual image descriptor.(because the randomness of user software selection, maybe the descriptor need some verification and validation in order to make sure that the background scripts can create a new virtual image from the descriptor.)
      • Write some unit tests for the descriptor generator.
      • Jul. 27, 2012 will be milestone 3.
      • At this point, we will see some function features completed:
        • Allow the user to upload data which will be added into the new virtual image.
        • Allow the user to upload scripts which will run at the boot time.
        • User file upload management module which can manage the storage space allocation.
        • Make the scattered user selected information into a unified format file —— a descriptor generator.
        • A set of unit tests for upload management and descriptor generator.
    • Jul. 28, 2012 - Aug. 12, 2012:
      • Realize all the remaining function modules in the web interface and the middle logic layer.
      • Re-organize and integrate all the test cases.
      • Communicate with mentor to check the remaining problem and bugs.
      • Testing and bug fix.
      • Aug. 12, 2012 will be milestone 4.
    • Aug 13, 2012 - Aug 24, 2012:
      • Docstrings and documentation needed.
      • Communicate with mentor to prepare material for Final.
  • Exams and other commitments:

    • do you have university exams inside the GSoC period?
      • Yes. I may have two or three exams in May or at the beginning of June.
  • Other summer plans:

    • No. So I can make the project as a full-time job, and work 30~35 hours per week on summer.
  • Why Debian?:

    • I am familar with Debian and I like the Debian System, It's my favorite linux system.
    • Many other Operating System based on Debian,especially Ubuntu. It is universal.
    • Last but not least, I finished my undergraduate project under the Debian Sequeeze, I am really into it.
  • Are you applying for other projects in SoC?
    • Yes, I applied for another project.

SummerOfCode2012/StudentApplications/XuGuojun (last modified 2017-05-13 15:08:37)

  • Debian privacy policy, Wiki team, bugs and config.
  • Powered by MoinMoin and Python, with hosting provided by Metropolitan Area Network Darmstadt.