Table of Contents

Google Summer of Code 2010

About

This is the first time ispCP is participating in theGoogle Summer of code. The Google Summer of code is a project sponsored by Google to bring students and organisations creating free or open source software together. Google Summer of Code starts on May 24 and ends on August 20.¹

ispCP participates with the following topics all related to ispCP Omega. Good skills in PHP, Perl, HTML are required. Skills in JavaScript, CSS and AJAJ (Asynchronous Javascript And JSON) are good for some topics

Ideas

Task severity # of Students Skills needed
Integration of the Application Installer into ispCP Omega easy 1-2 PHP, HTML
Refactoring of the ispCP Omega Engine files medium 2-3 Perl
Refactoring of the ispCP Omega PHP-GUI files medium 3-5 PHP, HTML
Porting of the ispCP Omega front end to Smarty and jQuery easy 1-2 JavaScript, HTML, CSS, Web Design
Development of a new backend system hard 1-2 C, Perl
UML Design of ispCP Omega easy 1-2 UML, optional Perl, PHP

Own ideas are highly appreciated.

Idea Descriptions

Integration of the Application Installer into ispCP Omega

A small team of developers started a third party application that should become part of ispCP Omega: The Applications Installer (short App-Installer). The App-Installer is a tool that allows to install 3rd party software via ispCP Omega on the client's webspace with a few clicks. The current status of the App-Installer is the Release-Candidate state. Before the application can be integrated into ispCP it has to be tested and the code has to be checked against the Coding Standard and security Standards.

Associated Tasks


Refactoring of the ispCP Omega Engine files

The current engine code is written in old fashioned Perl functions. Some of them with redundant functionality. Most of the parts are inherited by ispCP Omega's parent project VHCS. We would like to port the current code to a new MVC style. Therefore, we need a refactoring in three steps:

  1. Rename methods and variables after their functionality
  2. Move methods to more appropriate locations (e.g. into common function classes)
  3. Create Interfaces to abstract from specific services


Refactoring of the ispCP Omega PHP-GUI files

The current source is mostly coded in old PHP function style. These parts are mostly still part of the parent project VCHS. We would like to port the current functional code to a new MVC style. Regarding the quality assurance, the main controller functions should be tested by PHPUnit test cases. The refactoring should be done in the these three steps:

  1. Rename methods and variables after their functionality
  2. Move methods to more appropriate locations (e.g. into common function classes)
  3. Create objects and assign functions to them

Associated Tasks


Porting of the ispCP Omega front end to Smarty and jQuery

The current ispCP Omega's templating engine (so called pTemplate from VCHS) is easy to understand but hard to maintain. Therefor we decided to move the templating engine to one of the standards for PHP. Smarty is a well-known template engine since many years. The possibility to make own extensions (modifiers, plugins, …) is one of the key features for us.

Client side validation and informations should be an advancement for the user. jQuery is a lightweight cross-browser standard JavaScript library that will fit our benefits. By the creation of new controls via Smarty plugins, we want to create a solid and friendly user interface.

The current theme has old style HTML syntax with nested tables. The new theme is state-of-the-art CSS and W3C validated code, but is not available as template files.

Associated Tasks


Development of a new backend system

The current ispCP Omega's backend system is specifically engineered to fulfil the requirements of a common (idealized view of an) Internet Service Provider. Although this approach has been proved effective throughout the multiple ispCP releases, our users are steadily asking for improved flexibility of our software stack. This is, they demand our software to be able to adjust to their specific needs, instead of forcing them to adjust their offerings to those designed by our team.

Thus, our efforts are now geared towards the implementation of a software stack that allows for an easy customization of the offered hosting services. This includes, but is not limited to:

To realize this goals, we envision a system based on a Service Oriented Architecture (SOA), composed of multiple modules, where each module provides a well-defined functionality. Although there is an unavoidable link between hosting services defined by their interdependences (e.g.: DNS authorities depend on the mail service, whereas the mail service depends on the DNS), we aim to trim such dependencies down to a bare minimum. This “bare minimum” common ground will be provided by the base system. Thereafter, each functionality will be managed by a specific module, and these modules will be extremely loosely coupled. Therefore, ISPs will be able to choose the approach that best fits their needs among several options, or even implement their own when needed.

The new backend system (platform) should be able to:

This new backend engine must be implemented in either Perl (which has a good compromise between efficiency and ease of use, and has been used in other parts of ispCP) or PHP (most ispcp devs are proficient with it, easing maintenance and future improvements).

Finally, the backend's capabilities should be demonstrated by providing two basic modules to manage (1) e-mail accounts, and (2) DNS entries in their simplest form (no forwarding, no mail relaying, etc.).

Associated Tasks

==== UML Design of ispCP Omega ==== For current ispCP Omega development a lot of knowledge about the available functions is necessary. To enhance the degree of re-usability and created dedicated objects in a SOA based environment UML diagrams should be created. The student should create diagrams and models of the current stat (“as-is”) of the Software. Associated Tasks * Create UML activity diagrams * Create UML use-case diagrams * Create entity-relationship model
===== How to apply ===== Wait until March 29 and register until April 9!¹ - Go to the Google Summer of Code 2010 page - Log in with your Google account (or create one) - Register as a Student - Submitting Your Proposal for ispCP - Getting Selected by ispCP - Participate in 2010's Summer of Code, get a cool T-Shirt and up to 5.000 USD² ¹Google SoC time line
²500 USD for getting selected and another 4.500 USD for successfully participation