Environment for the development of new modules
WARNING: This article is based on the Official Documentation and its edition is limited to Zentyal staff and Forum Moderators
This chapter has shown how to resolve some of the configuration limitations from Zentyal modules. But it is possible that modules provided by Zentyal may not cover all our needs. This is important, since Zentyal is designed with extensibility in mind and it is relatively simple to create new modules.
Anyone with Perl language knowledge may take advantage of the Zentyal framework to create web interfaces, and also benefit from the integration with the rest of the modules and the common features from the vast Zentyal library.
Zentyal design is completely object-oriented and it takes advantage of the Model-View-Controller (MVC) design pattern , so the developer only needs to define those features required by the data model. The remaining parts are generated automatically by Zentyal. To simplify the process further, a development tool called zmoddev  is provided to ease the development of new modules, auto-generating templates depending on the parameters provided by the user. This will save time, however, its explanation and development is beyond the scope of this course.
 An explanation about Model-View-Controller design pattern http://en.wikipedia.org/wiki/Model_View_Controller.
Zentyal is designed to be installed on a dedicated machine. This recommendation is also extended to the developing scheme. Developing on the same host is highly discouraged. A virtual system to develop on is the recommended option as virt-chapter-ref explains in depth.