Doc-dev : Différence entre versions

De Trustedbird Client Wiki
(→‎Other technical documentation)
(Page redirigée vers Developer Documentation)
 
Ligne 1 : Ligne 1 :
−
== Versioning convention ==
 
  +
#REDIRECT [[Developer Documentation]]
−
This chapter describes best practices for managing versions of universal messaging client Trustedbird and add-ons 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 ===
 
−  
−
{| class="wikitable" border="10" width="80%" align="rigth" style="background-color:#CCFFCC"
 
−
|+
 
−
|-
 
−
! scope="col" |
 
−
! scope="col" |
 
−
|-
 
−
| width="65%" align="justify" rowspan="2" |
 
−
<br><br><br><br>
 
−
| width="35%" align="center" rowspan="6" |
 
−
[[Image:milimail_versioning.png|Life cycle of a software]]
 
−
|-
 
−
| width="65%" align="justify" |
 
−
|-
 
−
| width="65%" align="justify" |
 
−
<b>phase alpha:</b>
 
−
* Available for an overview of the progress of the product, testing the functions currently implemented
 
−
|-
 
−
| width="65%" align="justify" |
 
−
<b>phase beta:</b>
 
−
* The set of features is usually fixed, it is a test version to reach a maximum of bugs
 
−
|-
 
−
| width="65%" align="justify" |
 
−
<b>release candidate:</b>
 
−
* Release candidate to be the final version<br><br>
 
−
|-
 
−
| width="60%" align="justify" |
 
−
<b>GA version (for General Availability):</b>
 
−
* 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
 
−
|}
 
−
<br>
 
−  
−
=== Versioning usage ===
 
−
The version number will be as follows:<br>
 
−
<center>'''major.minor.revision.build'''</center><br>
 
−
Note: the number associated with the revision, can be called maintenance.<br>
 
−
Here is how to increment the values of the version number.<br>
 
−
<br>
 
−  
−
{| class="wikitable" border="1" width="80%" align="rigth" style="background-color:#FCFCFC"
 
−
|+
 
−
|-
 
−
! scope="col" width="8%" |
 
−
! scope="col" width="47%" |
 
−
! scope="col" width="45%" |
 
−
|-
 
−
| width="8%" align="center" |
 
−
Values
 
−
| width="47%" align="justify" |
 
−
Why to increment
 
−
| width="45%" align="justify" |
 
−
When
 
−
|-
 
−
| width="8%" align="center" |
 
−
major
 
−
| width="47%" align="justify" |
 
−
* Adding an important feature.
 
−
* Significant change of behavior of the application.
 
−
* Significant change in the appearance of the application.
 
−
| width="45%" align="justify" |
 
−
As soon as developments start.
 
−
|-
 
−
| width="8%" align="center" |
 
−
minor
 
−
| width="47%" align="justify" |
 
−
* Adding non-critical features in the application.
 
−
* Evolution of features without change of the existing one.
 
−
| width="45%" align="justify" |
 
−
As soon as developments start.
 
−
|-
 
−
| width="8%" align="center" |
 
−
revision
 
−
| width="47%" align="justify" |
 
−
* Each delivery of bug patch (Even if there's only one correction).
 
−
| width="45%" align="justify" |
 
−
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.
 
−
|-
 
−
| width="8%" align="center" |
 
−
build
 
−
| width="47%" align="justify" |
 
−
* Delivery internal or external distribution of a product.
 
−
| width="45%" align="justify" |
 
−
Each time the distribution is published. For the service integration, service quality or final customer.
 
−
|}
 
−  
−  
−
== Git repository ==
 
−
Trustedbird sources are hosted on a Git repository.
 
−  
−
* [http://adullact.net/plugins/scmgit/cgi-bin/gitweb.cgi?p=milimail/trustedbird.git;a=summary Browse Git repository]
 
−
* Repository URL: http://adullact.net/anonscm/git/milimail/trustedbird.git
 
−
* Repository URL (with a project account): ssh://USERNAME@scm.adullact.net/scmrepos/git/milimail/trustedbird.git
 
−  
−  
−
The repository has 2 branches: "master" and "thunderbird".
 
−  
−
* '''"master"''' branch holds Trustedbird email client patch and add-ons.
 
−
* '''"thunderbird"''' branch holds all the files from official Thunderbird sources which have been modified in "master" branch. This branch is used for [[#Upgrading_Thunderbird|upgrading Thunderbird]] when a new upstream release is available.
 
−  
−  
−
== Build Documentation ==
 
−
=== Dependencies ===
 
−
==== Linux (Debian) ====
 
−
* build-essential
 
−
* ant
 
−
* git-core
 
−
* libgtk2.0-dev
 
−
* libglib1.2-dev
 
−
* libidl-dev
 
−
* libxt-dev
 
−
* zip
 
−
* unzip
 
−
* flex
 
−
* bison
 
−
* fakeroot
 
−
* dpkg-dev
 
−
* python-dev
 
−
* autoconf
 
−
* libtool
 
−
* a Java JDK for Ant (java-gcj-compat-dev, sun-java6-jdk, openjdk-6-jdk,...)
 
−  
−
==== Windows ====
 
−
* Microsoft Visual C++ 6 with Service Pack 5 (not Service Pack 6 because Processor Pack needs SP5)
 
−
* Visual C++ 6.0 Processor Pack
 
−
* Latest MozillaBuild
 
−
* Git
 
−
* Java JDK
 
−
* Ant
 
−  
−  
−
See http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites for more info.
 
−  
−  
−
* Add Ant and JDK path to the PATH variable in c:\mozilla-build\start-msvc6.bat:
 
−
SET PATH=%PATH%;%MOZ_TOOLS%\bin;C:\mozilla-build\apache-ant-1.8.0RC1-bin\bin;C:\Program Files\Java\jdk1.6.0_18\bin
 
−
* Set JAVA_HOME as environment variable
 
−  
−
* Launch build environment with c:\mozilla-build\start-msvc6.bat
 
−  
−  
−
=== Cloning the repository ===
 
−
==== Read only (with HTTP/HTTPS) ====
 
−
~$ git clone http://adullact.net/anonscm/git/milimail/trustedbird.git
 
−  
−  
−
==== Read-write (with SSH) ====
 
−
~$ git clone ssh://USERNAME@scm.adullact.net/scmrepos/git/milimail/trustedbird.git
 
−
(replace USERNAME with your Adullact SSH username)
 
−  
−  
−
=== Building ===
 
−
~$ cd trustedbird/packager
 
−
~/trustedbird/packager$ cd trustedbird/packager
 
−  
−  
−
Download Thunderbird source file:
 
−
~/trustedbird/packager$ wget ftp://ftp.mozilla.org/pub/thunderbird/releases/2.0.0.24/source/thunderbird-2.0.0.24-source.tar.bz2
 
−  
−  
−
Build and package Trustedbird and all add-ons:
 
−
~/trustedbird/packager$ ant build-all
 
−  
−  
−
OR: build and package only Trustedbird email client:
 
−
~/trustedbird/packager$ ant trustedbird
 
−  
−  
−
OR: build and package only add-ons:
 
−
~/trustedbird/packager$ ant package-addons
 
−  
−  
−
* All built packages will be available in '''trustedbird/packager/dist/'''
 
−  
−  
−
== Upgrading Thunderbird ==
 
−
When a new upstream release of Thunderbird is available, we need to merge the changes into Trustedbird.
 
−  
−
In order to do so, a special Git branch ("thunderbird") is available.
 
−
It contains all files from official Thunderbird sources which have been modified in "master" branch for Trustedbird.
 
−  
−
'''Note:''' current branch will be printed inside parentheses in the following examples.
 
−  
−  
−
In order to do the merge of a new Thunderbird release, we'll need to have this "thunderbird" branch in our local Git repository.
 
−  
−  
−
Extract new Thunderbird release into a directory (extracted files will be in ~/mozilla):
 
−
~$ tar xvfj thunderbird-2.0.0.24-source.tar.bz2 -C ~
 
−  
−  
−
Create a "thunderbird" local branch which tracks the remote branch named "thunderbird":
 
−
~$ cd trustedbird
 
−
~/trustedbird (master)$ git branch thunderbird origin/thunderbird
 
−
~/trustedbird (master)$ git branch -a
 
−
* master
 
−
thunderbird
 
−
remotes/origin/HEAD -> origin/master
 
−
remotes/origin/master
 
−
remotes/origin/thunderbird
 
−
 
−
~/trustedbird (master)$
 
−  
−  
−
Switch to "thunderbird" branch:
 
−
~/trustedbird (master)$ git checkout thunderbird
 
−
~/trustedbird (thunderbird)$
 
−
~/trustedbird (thunderbird)$ cd trustedbird-patch-source-2/
 
−
~/trustedbird/trustedbird-patch-source-2 (thunderbird)$
 
−  
−  
−
Update files with new versions:
 
−
~/trustedbird/trustedbird-patch-source-2 (thunderbird)$ find -type f -exec cp ~/mozilla/{} {} \;
 
−  
−  
−
Commit changes (if any):
 
−
~/trustedbird/trustedbird-patch-source-2 (thunderbird)$ git commit -va
 
−  
−  
−
Switch back to "master" branch:
 
−
~/trustedbird/trustedbird-patch-source-2 (thunderbird)$ git checkout master
 
−
~/trustedbird/trustedbird-patch-source-2 (master)$
 
−  
−  
−
Merge "thunderbird" branch into "master" branch:
 
−
~/trustedbird/trustedbird-patch-source-2 (master)$ git merge thunderbird
 
−  
−  
−
Resolve conflicts (if any) and commit:
 
−
~/trustedbird/trustedbird-patch-source-2 (master)$ git commit -va
 
−  
−
== How to build a localized Thunderbird 2 ==
 
−
See [[Build Localized Thunderbird]].
 
−  
−
== SSL certificates generation ==
 
−
In order to sign and encrypt messages, you'll 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 and fill at least "Common Name" field)''
 
−  
−
:=> '''demoCA/cacert.pem''': root certificate (CA)
 
−  
−
*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
 
−  
−
*6) Revoke a certificate
 
−
$ openssl ca -revoke newcert.pem
 
−
$ openssl ca -gencrl -out crl.pem
 
−
$ openssl crl -inform PEM -outform DER -in crl.pem -out crl.der
 
−
:=> '''crl.pem'''/'''crl.der''': certificate revocation list
 
−  
−  
−
=== Import a user's certificate into Thunderbird ===
 
−
Import newcert.p12 in "Your certificates" tab in Thunderbird certificate manager.
 
−  
−
In "Authorities" tab in Thunderbird certificate manager, choose to trust the CA of the certificate to identify email users.
 
−  
−
(do again step #2 to #5 to create a new certificate for another user issued by the same authority)
 
−  
−
== Manipulate DER/ASN1 ==
 
−
Decode Base64 -> DER-encoded:
 
−
$ openssl base64 -d -in message.b64 -out message.der
 
−  
−
View DER-encoded in human-readable text:
 
−
$ dumpasn1 message.der
 
−
OR
 
−
$ openssl asn1parse -in message.der -inform DER -i -dump
 
−  
−
Decrypt DER-encoded with private key:
 
−
$ openssl smime -decrypt -in message.der -inform DER -inkey private.key.pem -out message.clear
 

Version actuelle en date du 9 septembre 2010 à 16:00

Rediriger vers :