Sei sulla pagina 1di 7

vtiger CRM 6.

0 Architecture

vtiger CRM 6 Architecture


The next major release of vtiger CRM (6.0) is being designed to meet the current and future
needs of the growing vtiger community. This document describes the objectives, plans and
development steps for the next major release.

While a number of feature enhancements and platform changes have been requested for vtiger
CRM, this plan for the next major release will primarily focus on architectural changes. These
changes are designed to ease development of new modules, feature enhancements, integration
with other applications, and future framework enhancements. We need to set the stage so the
entire vtiger community can enhance vtiger CRM at a rapid pace. Although we focus on
architectural changes in this document, we expect a number of feature enhancements not
listed here to be added by the time this release is completed.

As many in the vtiger community have identified, there is a need to architect the product
differently, to allow faster and easier development by the community, as well as make it easy
for users to take and use contributions by the community. This calls for a more modular and
flexible architecture. Needless to say, this would help everybody, including the core
development team, develop new modules, enhancements and evolve the product. Thus a key
focus of the new architecture will be modularity of the product, and enabling easier
development with a cleaner, simpler interaction model across the product.

With this major new release of vtiger, we aim to enable a rich ecosystem of extensions, add-on
modules, and third-party applications and web services. The product will be architected to
make it easy to build and integrate new extensions, as well as quickly integrate other existing
applications and web services. We recognize that a rich ecosystem of applications and web
services will be essential for a successful CRM system in the future.

Development Plan
Our goal is to involve the vtiger community in the development of this release, earlier and
more actively than we have done before. We are happy to have active community volunteers
engaged in vtiger development. To avoid being pulled in too many directions, we will follow a
two stage process. Before an initial prototype is ready, we will share the design and
encourage contributions from selected community members. Based on this feedback we will
proceed to put together an initial prototype. When an initial prototype is ready, it will be
opened up to the vtiger community, so they can influence, test, and contribute to this major
release. Much of the development will be after the initial prototype is delivered, as the many
modules and features of vtiger CRM are migrated onto the new release framework.

With an actively used product, drastic surgery of this nature will require a plan that is least
disruptive to existing users, and allows us to carry forward the many useful features in vtiger.
To achieve this, we will create a new working branch of vtiger CRM based on the new
architecture. We will release early and often, to enable contributors and users to actively work
on and influence the product. This plan will allow time for migration of most of the existing
features to the rearchitected framework. A parallel effort is already underway to deliver a 5.1
release, which will focus on the most requested vtiger CRM features so they can be delivered
before the 6.0 release.

We will target an intial design with the next few weeks, and an initial prototype in next two
months after that. Only after the initial prototype is completed, and some feedback from the
community is available, will we attempt to estimate the development time for this release.

Release Objectives

Confidential 1
vtiger CRM 6.0 Architecture

The major objectives for this release are the following

Community driven product, to include contributions to the release and more easily enable
ongoing contributions from the vtiger community.
Easier development of modules, features and other enhancements to vtiger CRM.
Flexible and modular to allow a easier development and customization.
Support installed and on-demand plug-in modules and extensions, so a vtiger CRM
installation can be easily enhanced with new functionality.
Automatic web updates for easy upgrades and bug fixes.
Enable community application portal with one-click activation, so users and administrators
can easily enhance their vtiger CRM server with new extensions.
Provide good performance on typical low-end servers for upto 100 simultaneous users.
Support large-scale distributed installations for 1000s of simultaneous users.

Architectural Goals
Release 6 of vtiger CRM will be rearchitected to be more modular, starting with a well-defined
core framework. The core framework will provide a useful set of common services to
application modules. Much of vtiger CRM functionalty will be in the application modules, which
will be made more modular and clearly delineated from each other. This should make
additions, changes, and even removal, of modules much easier.

The interactions between modules and the core framework, as well as interaction between
modules, need to be well defined and reusable by other applications and modules. Whenever
possible, these interactions should be remotable, i.e. accessible over the web, so that other
web applications and on-demand services can be integrated into this architecture with minimal
effort.

User interface extensibility needs to be redesigned to enable easy addition of functionality and
customization of user interfaces. This should enable integration of web applications and
on-demand web services, and insertion of web components such as widgets from other
Internet sites and servers.

The database is central to vtiger CRM, and the new release will streamline the database
interaction, and make better use of the database for all persistent data. We will use simple
database layers that simplify code and abstract SQL for late-binding, optimization, and make it
easier for developers to understand the code. The majority of persistent data that is currently
being stored in files will be moved into the database, for easier management including failure
recovery. This will include configuration data for user interface and other elements, to make
customization and integration easier.

A new notification architecture, with good support for publish/subscribe and queues, will be
needed to support the modular architecture.

Platform Components and Enablers


The third-party platform components of vtiger will need to be chosen to meet vtiger's open
source licensing objectives. vtiger provides a completely open source license, with an objective
of providing maximum freedom to our users. Any third-party tool or component distributed
with vtiger should be evaluated on that basis.

The platform components planned for this release include: Apache, MySQL, PHP, ADODB,
Smarty, Prototype, Scriptaculous, FCKEditor, FPDF/TCPDF, ImageCanvas, ImageColor,
ImageGraph, Freetag, NuSOAP, MagpieRSS, PHPMailer, log4php, phpSysInfo, Mailfeed,
jscalendar, Mootools, and Galaxia.

Confidential 2
vtiger CRM 6.0 Architecture

We are evaluating the use of the Zend framework to implement the core framework described
below. It provides some of the core framework services that we have listed, and could save us
considerable effort if sufficiently compatible with our current implementation and future goals..
The decision will be made only after some prototyping effort with the Zend framework over the
next few weeks.

Release 6 Architectural Changes

The new modular architecture is illustrated above. An important objective is to have distinct
components and modules, separated by well-defined APIs. The components include a core
framework will including the database and framework services, standard modules which will
include core CRM functions and other CRM applications, as well as third-party applications and
on-demand web services that can be enabled as needed.

The same platform components currently being used in vtiger CRM will be used in the new
architecture. The main change will be to streamline the use of these components in a more
consistent manner. To accomplish this, standard libraries and services will be provided by the
core framework so that each module and application can use these libraries. Some of these
standard libraries and services are discussed below. And module interactions will use well
defined APIs to preserve modularity.

In a few cases, new platform components will be introduced. Workflow is one such example,
where we will use the open source Galaxia module.

Core Framework Design

A new core framework with a common set of services will be central to the new architecture.
These common services will include a database layer, authentication and authorization, event
broker, common UI libraries, update management, backup and restore, web API translations,
translation manager, as well as a number of services from platform components. The
framework will provide these services via common APIs. Each application module will be
modified to use these framework services in a consistent manner.
Confidential 3
vtiger CRM 6.0 Architecture

The database layer, UI libraries, web APIs, and event broker are discussed below.

The translation manager will provide internationalization support, and will be part of the
framework and exposes API that could be used by other applications.

The Module manager will be used to load and unload installed modules. This will also take care
of install and uninstall, as well as enabling or disabling modules.

Security Services

Authentication and authorization of all access to vtiger CRM will be provided by a common
framework service.

Update and Plug-in Management

A new framework component to enable automatic updates and one-click addition of plug-ins
will be added in this release. The auto-update component will track files and versions, store
and apply changes of versions, and manage any migration of data required with any update.
The goal is to support minor updates of vtiger CRM with only a need for the administrator to be
notified and approve the upgrade when needed.

This component will also support one-click addition and removal of new modules, plug-ins and

Confidential 4
vtiger CRM 6.0 Architecture

on-demand web-services into vtiger CRM. This will require management of files, versions and
other changes that apply to plug-ins.

Database Layer and Changes

The vtiger CRM database usage has been a source of complexity, and will be streamlined in this
release. The goal will be to isolate the majority of SQL calls to a common set of files, to it is
easier to optimize and enhance queries when needed. Further, the database layer will aim to
simplify the database related code in each module for easier understanding and easier
evolution.

ADODB will be used to provide maximum portability for the database access layer
The database layer will provide a library for database access and be built on ADODB. It
will support prepared statements, which will be used for the majority of cases.
Security enhancements will be provided in the database layer even when prepared
statements are not used.
The database layer will support named SQL queries isolated to separate files, to permit
easier management of SQL queries including optimization.
SQL generation, which has also been a source of complexity, will be streamlined in the
libraries as much as possible.

Modularity Enhancements

Part of the complexity of vtiger CRM derives from the extensive inter-dependencies across
modules and components. A key step to achieve modularity will be to define APIs for
interactions and limit interactions to these APIs, for across modules and with core framework
services. New APIs may need to be added as we eliminate these unclear dependencies and
move them to common APIs.

The first step will be to identify all the dependencies across modules and document the
necessary functionality. APIs will be defined to enable the required interaction. These APIs will
then be implemented and module code will be re-engineered to use these APIs as designed.
This is a significant effort for 6.0, and much of this work needs to be completed on the
front-end of the development.

On an ongoing basis, new module interactions will be needed to implement new features.
Developers will be required to follow a structured process to implement these interactions.
First attempt to use existing APIs to accomplish these enhancements. If not possible, the
desired API functionality needs to be defined. Then new APIs, or extensions of existing APIs
will need to be implemented for the desired functionality. Finally, the new module interactions
can be developed using these APIs.

Internal and External APIs

A major aspect of the new release is the definition of APIs for most of the interactions within
the system.

The majority of the internal APIs will also be accessible via the web. REST APIs will be
supported whenever feasible, unless the API has no potential value when used over the web.

There will be a need to extend and enhance the APIs on an ongoing basis. This needs to be
accomplished without breaking existing functionality. The typical model will be to keep existing
APIs available, and extend them or create new APIs, when new functionality is required.

Confidential 5
vtiger CRM 6.0 Architecture

Event Services

A simple PHP event broker using database tables will be added in this release. This will support
both event queues and publish/subscribe models. We will have throughput limitations for
events with the built-in simple event broker, primarily limited by the database performance.

The event broker will be designed to be modular and easily replaced with a more powerful
event broker when required for large scale installations. This plug-in replacement should not
be limited by database throughput, and should support distributed deployment on separate
servers.

UI Architecture

UI enhancements should enable easy extensibility and reconfiguration of most user interface
screens, and allow users and administrators to take advantage of advances in UI customization
using AJAX. The UI changes will include

Configurable Tab support: This will include addition of new tabs and removal of existing
tabs. The tabs can point to external pages as well as internal views and applications.
Reconfigurable pages: Ability to customize specific pages, or specific parts of pages, to
suit individual users or an installation.
Widget support: Ability to add widgets from around the web in specific areas on any
application page
On-demand launch in new tabs or popups: This is to support notifications or other
application views that need to be launched based on triggers or user actions.

Application Integration

The use of well-defined APIs and framework services will address the key obstacles of better
application integration in vtiger CRM. The additional changes to ease application integration
include:

Installation tool: this is described in the next section.


Module management: Tools to monitor and manage the modules, applications, web
services being used. This should include standard ways for users to configure installed
modules.

One-click Integration Tool

Users will be provided a plug-in management tool, which will provide easy ways to find and
access new modules, applications and web services available for vtiger CRM. This tool will
support both users and administrators, and allow admins to determine which of the plug-ins
can be installed by individual users. Individual plug-ins will also be restricted in cases where it
is not appropriate for users to install them.

The use of a vtiger CRM application portal will enable vtiger CRM users and administrators to
find useful applications and activate these applications with minimal effort.

Automatic Updates

Automatic updates will be enabled with the new release. Automatic updates are targeted at
users paying support, and require the maintenance of a server to serve the automatic
updates. Updates can be served from any specified publicly accessible server, so that vtiger
CRM partners can offer the update service to their customers directly.

Confidential 6
vtiger CRM 6.0 Architecture

The update server will be used to store updates. The server will notify installations of new
updates, and each vtiger CRM instance will poll the server to get notified. Once notified, each
instance will download the update files. The next time the administrator logs into vtiger CRM,
he will given the opportunity to install the update.

Checks for modifications to existing files and other conflicts, backups of old files, and
verification of updates must be performed as part of the update installation.

Workflow Module

The open source Galaxia (http://workflow.tikiwiki.org/tiki-index.php) PHP workflow engine will


be incorporated as a platform component. Galaxia is an activity based workflow system, where
workflow processes are implemented as a set of activities that must be completed to
accomplish process objectives. Activities in a workflow process can be sequenced or allowed in
parallel. It provides a user interface for managing and using workflow processes. It uses
MySQL tables and Smarty templates. We will require some development of interfaces and
extensions to integrate Galaxia with vtiger. It is currently a part of the tikiwiki CMS/groupware
system, and will need to be extracted and used for the workflow component of vtiger.

Development Guidelines
Future versions of vtiger will require new development guidelines to ensure smooth migrations
and avoid slipping back to an unmodular product that is hard to maintain and enhance.
Furthermore, features such as one-click integration, automatic updates, etc., will require
developers to follow guidelines that will support these capabilities.

The guidelines should aim to balance the freedom required of an open source project, with the
need to impose some structure that enables the modularity and advanced features required for
a nimble and easily extensible product. The plan is to provide maximum flexibility in the
extension modules, while limiting the changes that can be made to the core framework and
services.

The database layer is another area where new structure and development guidelines will be
used to streamline development, maintenance and understanding of the code and database
interactions. A further benefit will be easier database portability and flexibility for performance
optimization and other database management operations.

Confidential 7

Potrebbero piacerti anche