fr.gif, 1 kB    en.gif, 1 kB

Doc-dev

Dernière modification de cette page le 27 juin 2008 à 14:06.

Un article de Milimail.

Sommaire

Versioning convention

This chapter describes best practices for managing versions of universal messaging client Milimail and extensions developed.
Version identifies the state of a program in its development. It is often associated with a numbering system which allows identification, and in some cases a symbolic name. The symbolic names are not used in this project.


Life cycle of a software





Life cycle of a software

phase alpha:

  • Available for an overview of the progress of the product, testing the functions currently implemented

phase beta:

  • The set of features is usually fixed, it is a test version to reach a maximum of bugs

release candidate:

  • Release candidate to be the final version

GA version (for General Availability):

  • Final version of the product. The version includes bug fixes found after the final version of the product, an upgrade may also be a new version of the product


Versioning usage

The version number will be as follows:

major.minor.revision.build

Note: the number associated with the revision, can be called maintenance.
Here is how to increment the values of the version number.

Values

Why to increment

When

major

  • Adding an important feature.
  • Significant change of behavior of the application.
  • Significant change in the appearance of the application.

As soon as developments start.

minor

  • Adding non-critical features in the application.
  • Evolution of features without change of the existing one.

As soon as developments start.

revision

  • Each delivery of bug patch (Even if there's only one correction).

Depends on the delivery of the final version:

  • BEFORE : 0 With a tag indicating what life cycle you are (alpha, beta or rc).
  • AFTER : Each time corrections are delivered.

build

  • Delivery internal or external distribution of a product.

Each time the distribution is published. For the service integration, service quality or final customer.




Extensions

The following chapters present informations for each extension about functionalities and architecture.


Manage tags and branches

 Tag THUNDERBIRD_2_0_0_0_RELEASE
   |
   |
mozilla.org---\-------------------------------\----MILIMAIL_THUNDERBIRD_2_0_0_0_BRANCH------>
               \                               \
                \                               \
                 \----MILIMAIL_V0_BRANCH--->     \
                                                  \
                                                   \
                                                    \
             Tag THUNDERBIRD_2_0_0_14_RELEASE        \
                                |                     \
                                |                      \
                             mozilla.org----------------\-------------trunk/milimail-------------->


SVN structure

+ milimail                                  // Root
   |
   + branches                               // Branches
   |  + milimail
   |     + MILIMAIL_THUNDERBIRD_2_0_0_0_BRANCH  // Old milimail branch based on Thunderbird 2.0.0.0
   |     + MILIMAIL_V0_BRANCH                   // Milimail V0 branch based on Thunderbird 2.0.0.0
   |
   + Docs                                   // Documentation
   |
   + tags                                   // Tags: released versions
   |  + card_viewer_extended
   |  + crl_over_ldap
   |  + dsn
   |  + LanguagePackages
   |  + mdn_extended
   |  + milimail                            // Milimail releases
   |  + mozilla
   |     + THUNDERBIRD_2_0_0_0_RELEASE      // Thunderbird 2.0.0.0 from mozilla.org
   |     + THUNDERBIRD_2_0_0_14_RELEASE     // Thunderbird 2.0.0.14 from mozilla.org
   |  + multi-ldap
   |  + priority
   |  + send_format_ldap
   |  + signed_receipt
   |  + triple_wrapping
   |  + xsmtp
   |
   + trunk                                  // Trunk: current development of Milimail, extensions and packager
      + all-milimail-xpi
      + card_viewer_extended
      + check_recipients
      + crl_over_ldap
      + l10n
         + fr                               // French translations of Milimail branch
      + mdn_extended
      + messages_remote_services
      + milimail                            // Current Milimail branch based on Thunderbird 2.0.0.14
      + multi-ldap
      + notifications_viewer
      + out_of_office
      + packager                            // Ant script to fetch, build and package Milimail and extensions
      + send_format_ldap
      + xsmtp

Build Documentation

Dependencies

Linux (Debian)

  • build-essential
  • ant
  • subversion
  • libgtk2.0-dev
  • libglib1.2-dev
  • libidl-dev
  • libxt-dev
  • gcc-3.4
  • g++-3.4
  • zip
  • unzip
  • fakeroot
  • dpkg-deb
  • a Java JDK for ant (java-gcj-compat-dev, sun-java6-jdk, openjdk-6-jdk,...)

Windows

See http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites

Building

 // Get packager from SVN
$ svn co https://admisource.gouv.fr/svn/milimail/trunk/packager milimail
(permanently accept SSL certificate if asked)
$ cd milimail
 // Build and package milimail and extensions
$ ant build-all

 // OR: build and package milimail
$ ant extract-milimail update-milimail build-milimail package-milimail
 // OR: build and package extensions
$ ant package-extensions

SSL certificates generation

In order to test signing and encryption, you need to have certificates.

Certificates can be generated with a Perl script CA.pl supplied with openssl.

  • 1) Create a certificate hierarchy in new directory demoCA/
/usr/lib/ssl/misc/CA.pl -newca

(type enter when prompted to create a new certificate)

=> demoCA/cacert.pem: root certificate (CA)

Import cacert.pem in "Authorities" tab in Thunderbird certificate manager and choose to trust this CA to identify email users.

  • 2) Create a new certificate request for a user
/usr/lib/ssl/misc/CA.pl -newreq

=> newkey.pem: user's private key

=> newreq.pem: certificate request for the user

  • 3) Sign the certificate request with certificate authority key
/usr/lib/ssl/misc/CA.pl -signreq

=> newcert.pem: user's signed certificate

  • 4) Convert certificate to DER format (for LDAP)
openssl x509 -outform DER -in newcert.pem -out newcert.der

=> newcert.der: user's signed certificate in DER format

  • 5) Create PKCS#12
/usr/lib/ssl/misc/CA.pl -pkcs12 "Name of the certificate"

=> newcert.p12: root certificate, user's signed certificate and user's private key

Import newcert.p12 in "Your certificates" tab in Thunderbird certificate manager.

(do again step #2 to #5 to create a new certificate for another user issued by the same authority)

Other technical documentation

Functional and technical specifications (French version)

Standards of development (French version)

XSMTP Recommandations (French version)



Reference: English – Translations:  Français  • 


Téléchargement