Difference between revisions of "SME Server:Documentation:Developers Manual"

From SME Server
Jump to navigationJump to search
(===Translations===)
(add links)
Line 4: Line 4:
 
This manual is aimed at developers and provides the information they require to integrate their applications into the SME Server platform. The manual discusses the key concepts of the SME Server such as the configuration database, configuration file templates and the events and actions model which differentiate the SME Server from other Linux distributions.
 
This manual is aimed at developers and provides the information they require to integrate their applications into the SME Server platform. The manual discusses the key concepts of the SME Server such as the configuration database, configuration file templates and the events and actions model which differentiate the SME Server from other Linux distributions.
  
The Developer manual is maintained separate to this wiki, corrections and suggestions are to be made on the Bug Tracker.
+
[[SME_Server:Documentation:Developers_Manual:Section1|I. An overview of the SME Server]]
  
View the HTML version of the Developer Manual as
+
[[SME_Server:Documentation:Developers_Manual:Chapter1|1. About this manual]]
[http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/book1.htm individual pages,]  
 
or as a
 
[http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/devguide.html single page.]
 
  
Also available in a
+
[[SME_Server:Documentation:Developers_Manual:Chapter2|2. Who should read this manual?]]
[http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/devguide.pdf pdf version]
+
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter3|3. What is the SME Server?]]
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter4|4. Design philosophy]]
 +
*        Principle 1: Automating best practice
 +
*        Principle 2: Simplicity
 +
*        Principle 3: Extensibility
 +
*        Principle 4: Reliability
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter5|5. Architecture overview]]
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Section2|II. SME Server internals]]
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter6|6. Configuration database]]
 +
*        Overview
 +
*        The configuration databases
 +
*        Namespace issues
 +
[[SME_Server:Documentation:Developers_Manual:Chapter7|7. Actions and events]]
 +
*        Actions
 +
*        Events
 +
[[SME_Server:Documentation:Developers_Manual|:Chapter8|8. Configuration file templates]]
 +
*        Design of the template system
 +
*        The Text::Template module
 +
*        Template expansion
 +
[[SME_Server:Documentation:Developers_Manual:Chapter9|9. Process startup, supervision and shutdown]]
 +
*        Process startup
 +
*        Process supervision: runit (and supervise)
 +
[[SME_Server:Documentation:Developers_Manual:Chapter10|10. The server-manager web interface]]
 +
*        The web directory
 +
*        Web function scripts
 +
*        Common files
 +
*        Panel definitions
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Section3|III. How to create an SME Server package - step by step]]
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter11|11. Getting started]]
 +
*        Creating a development environment
 +
 
 +
[[SME_Server:Documentation:Developers_Manual|:Chapter12|12. Getting to know how to customize the SME Server]]
 +
*        Exercise 1: Changing a configuration template
 +
*        Exercise 2: The magic of templates
 +
*        Exercise 3: Using events and actions
 +
*        Exercise 4: Adding new configuration database parameters
 +
*        Exercise 5: Adding a user interface screen
 +
*        Exercise 6: Adding a new event type
 +
*        Exercise 7: Thought experiment - adding a new server application
 +
*        Customization guidelines
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter13|13. Packaging your application]]
 +
*        A quick introduction to RPMs
 +
*        Selecting and creating RPMs for your application
 +
*        Setting up your RPM development environment
 +
*        Building an RPM
 +
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter14|14. The SME Server development environment (also see [[:Package Modification]])
 +
*        Configuring your development environment
 +
*        Modifying an SME Server package
 +
*        SourceForge developer CVS access
  
[http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/book1.htm Table of Contents.]
 
I. An overview of the SME Server
 
    1. About this manual
 
    2. Who should read this manual?
 
    3. What is the SME Server?
 
    4. Design philosophy
 
        Principle 1: Automating best practice
 
        Principle 2: Simplicity
 
        Principle 3: Extensibility
 
        Principle 4: Reliability
 
    5. Architecture overview
 
II. SME Server internals
 
    6. Configuration database
 
        Overview
 
        The configuration databases
 
        Namespace issues
 
    7. Actions and events
 
        Actions
 
        Events
 
    8. Configuration file templates
 
        Design of the template system
 
        The Text::Template module
 
        Template expansion
 
    9. Process startup, supervision and shutdown
 
        Process startup
 
        Process supervision: runit (and supervise)
 
    10. The server-manager web interface
 
        The web directory
 
        Web function scripts
 
        Common files
 
        Panel definitions
 
III. How to create an SME Server package - step by step
 
    11. Getting started
 
        Creating a development environment
 
    12. Getting to know how to customize the SME Server
 
        Exercise 1: Changing a configuration template
 
        Exercise 2: The magic of templates
 
        Exercise 3: Using events and actions
 
        Exercise 4: Adding new configuration database parameters
 
        Exercise 5: Adding a user interface screen
 
        Exercise 6: Adding a new event type
 
        Exercise 7: Thought experiment - adding a new server application
 
        Customization guidelines
 
    13. Packaging your application
 
        A quick introduction to RPMs
 
        Selecting and creating RPMs for your application
 
        Setting up your RPM development environment
 
        Building an RPM
 
    14. The SME Server development environment  (outdated see [[:Package Modification]])
 
        Configuring your development environment
 
        Modifying an SME Server package
 
        SourceForge developer CVS access
 
 
  IV. Advanced customization of the SME Server
 
  IV. Advanced customization of the SME Server
    15. Advanced customization principles
+
 
        Leveraging the provisioning system for users, groups, and i-bays
+
[[SME_Server:Documentation:Developers_Manual:Chapter  15. Advanced customization principles]]
        Programmatically creating users, groups, and i-bays
+
*        Leveraging the provisioning system for users, groups, and i-bays
        Reserving accounts to avoid conflicts with user, group, or i-bay names
+
*        Programmatically creating users, groups, and i-bays
        Adding new account properties
+
*        Reserving accounts to avoid conflicts with user, group, or i-bay names
        Using the LDAP server
+
*        Adding new account properties
        Data backup
+
*        Using the LDAP server
        Using the MySQL database
+
*        Data backup
        Sending email messages
+
*        Using the MySQL database
        Managing the firewall
+
*        Sending email messages
        Starting up programs automatically upon system boot
+
*        Managing the firewall
 +
*        Starting up programs automatically upon system boot
 +
 
 
  V. Documentation and resources
 
  V. Documentation and resources
    16. Perl modules
+
 
 +
[[SME_Server:Documentation:Developers_Manual:Chapter16|16. Perl modules]]
 +
 
 
  VI. License texts
 
  VI. License texts
 
     A. GNU Free Documentation License
 
     A. GNU Free Documentation License
Line 97: Line 103:
 
   -Fedoraproject.org Package Review Guidelines - http://fedoraproject.org/wiki/PackageReviewGuidelines
 
   -Fedoraproject.org Package Review Guidelines - http://fedoraproject.org/wiki/PackageReviewGuidelines
 
   -Fedoraproject.org RPM Spec File Scriptlet Snippets - http://fedoraproject.org/wiki/ScriptletSnippets
 
   -Fedoraproject.org RPM Spec File Scriptlet Snippets - http://fedoraproject.org/wiki/ScriptletSnippets
 
===Translations===
 
SME Server Supports English, French, German, Spanish, Italian and Swedish.
 
 
Other Languages are in progress
 
 
See the [[:Translations]] page for how to add or maintain translations
 

Revision as of 08:02, 27 April 2008


Developer Documentation

This manual is aimed at developers and provides the information they require to integrate their applications into the SME Server platform. The manual discusses the key concepts of the SME Server such as the configuration database, configuration file templates and the events and actions model which differentiate the SME Server from other Linux distributions.

I. An overview of the SME Server

1. About this manual

2. Who should read this manual?

3. What is the SME Server?

4. Design philosophy

  • Principle 1: Automating best practice
  • Principle 2: Simplicity
  • Principle 3: Extensibility
  • Principle 4: Reliability

5. Architecture overview

II. SME Server internals

6. Configuration database

  • Overview
  • The configuration databases
  • Namespace issues

7. Actions and events

  • Actions
  • Events

:Chapter8|8. Configuration file templates

  • Design of the template system
  • The Text::Template module
  • Template expansion

9. Process startup, supervision and shutdown

  • Process startup
  • Process supervision: runit (and supervise)

10. The server-manager web interface

  • The web directory
  • Web function scripts
  • Common files
  • Panel definitions

III. How to create an SME Server package - step by step

11. Getting started

  • Creating a development environment

:Chapter12|12. Getting to know how to customize the SME Server

  • Exercise 1: Changing a configuration template
  • Exercise 2: The magic of templates
  • Exercise 3: Using events and actions
  • Exercise 4: Adding new configuration database parameters
  • Exercise 5: Adding a user interface screen
  • Exercise 6: Adding a new event type
  • Exercise 7: Thought experiment - adding a new server application
  • Customization guidelines

13. Packaging your application

  • A quick introduction to RPMs
  • Selecting and creating RPMs for your application
  • Setting up your RPM development environment
  • Building an RPM

[[SME_Server:Documentation:Developers_Manual:Chapter14|14. The SME Server development environment (also see Package Modification)

  • Configuring your development environment
  • Modifying an SME Server package
  • SourceForge developer CVS access
IV. Advanced customization of the SME Server

SME_Server:Documentation:Developers_Manual:Chapter 15. Advanced customization principles

  • Leveraging the provisioning system for users, groups, and i-bays
  • Programmatically creating users, groups, and i-bays
  • Reserving accounts to avoid conflicts with user, group, or i-bay names
  • Adding new account properties
  • Using the LDAP server
  • Data backup
  • Using the MySQL database
  • Sending email messages
  • Managing the firewall
  • Starting up programs automatically upon system boot
V. Documentation and resources

16. Perl modules

VI. License texts
   A. GNU Free Documentation License
   B. GNU General Public License

Documentation Links

Other sources of information

 -Managing Software with Yum - http://mirror.centos.org/centos/4/docs/html/yum/
 -CentOS 4/RHEL4 Documentation - http://mirror.centos.org/centos/4/docs/
 -Fedora Documentation - http://fedora.redhat.com/docs/
 -Fedora Developers Guide - http://fedora.redhat.com/docs/developers-guide/
 -Fedora Documentaion Guide - http://fedora.redhat.com/docs/documentation-guide/
 -Maximum RPM Book - http://www.rpm.org/max-rpm-snapshot/
 -Fedora RPM Guide (draft) - http://fedora.redhat.com/docs/drafts/rpm-guide-en/
 -Fedora Wiki - Building Packages Guide - http://fedoraproject.org/wiki/Docs/Drafts/BuildingPackagesGuide
 -Fedoraproject.org RPM Packaging Guidelines - http://fedoraproject.org/wiki/PackagingGuidelines
 -Fedoraproject.org Package Review Guidelines - http://fedoraproject.org/wiki/PackageReviewGuidelines
 -Fedoraproject.org RPM Spec File Scriptlet Snippets - http://fedoraproject.org/wiki/ScriptletSnippets