This tutorial is meant to be an easy-to-follow guide for developing new Zentyal modules and extending the features of the existing ones.
We will show you the necessary steps to implement a full-fledged Zentyal module, using an incremental development approach.
The Zentyal framework has a clear goal: make life easier for those developers and system integrators who want to create an UI to manage Linux services integrated with other services using the same technology. We want developers to focus only on adding functionality with the service their modules manage. The framework tries hard to keep you away from messing with HTML, CGIs, the interaction between the different modules and so on.
You should be familiar with a programming language. Although modules are written in Perl, the data structures and syntax should be easily understood by newcomers.
Basically, you have two options to set up your building environment: using a Zentyal virtual machine or using your (real) host.
Using a Zentyal virtual machine
- You can use VirtualBox  with a clean Zentyal 3.0 installation.
- You probably want to stablish an ssh connection to your virtual host to work comfortably.
- You will have all the required build packages already in the repositories.
- It's always a good practice to use the snapshot capabilities to keep a clean environment to return when needed.
Using your own host machine
- You will need to add the Zentyal PPA in order to be able to install the build tools. Refer to the Installation Guide for more info about this.
- You need a Debian/Ubuntu based Linux distro for the mentioned repository to work.
- You can build the packages locally and then copy them to a Zentyal virtual machines using scp.
Our first step will be to download a helper script to generate a Zentyal module skel:
We will also need to install the zbuildtools package from the Zentyal PPA:
sudo add-apt-repository ppa:zentyal/3.0 sudo apt-get update sudo apt-get install zbuildtools
When you start working on your own module, please let the Zentyal Developers and other community members know what you are working on. This is good thing in order to avoid overlapping (different people working on similar project) as well as to get feedback and help when necessary. Simply start a new thread in the Zentyal Forum when you start your project and post the advances in the same thread or alternatively, send an e-mail to the public Zentyal Development mailing list .