You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2013/08/08 15:37:07 UTC

svn commit: r1511775 - in /directory/site/trunk/content/mavibot: coding-standards.mdtext developer-guide.mdtext

Author: elecharny
Date: Thu Aug  8 13:37:07 2013
New Revision: 1511775

URL: http://svn.apache.org/r1511775
Log:
Added two pages

Added:
    directory/site/trunk/content/mavibot/coding-standards.mdtext
    directory/site/trunk/content/mavibot/developer-guide.mdtext

Added: directory/site/trunk/content/mavibot/coding-standards.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/mavibot/coding-standards.mdtext?rev=1511775&view=auto
==============================================================================
--- directory/site/trunk/content/mavibot/coding-standards.mdtext (added)
+++ directory/site/trunk/content/mavibot/coding-standards.mdtext Thu Aug  8 13:37:07 2013
@@ -0,0 +1,167 @@
+Title: Mavibot Coding Standards
+Notice: Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    .
+    http://www.apache.org/licenses/LICENSE-2.0
+    .
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+# Mavibot Coding Standards
+
+Welcome to you, developper ! You have been elected committer on the project, or you want to contribute some code or some patch? This is great news. However, in order to be able to share your 'vision' and your code, some rules must be followed.
+
+Hey, remember that those rules are not the best nor the worst, they are pretty much what they are for historical reasons, or for technical reasons, however, please, accept them as they are, and avoid religious war (please, oh please, no mail to say "WTF ? You are using spaces instead of tab ??? How stupid is this rule etc etc.) Rules are **alway*s* stupid, but smart people follow them ;)
+
+**eclipse IDE**
+
+Eclipse users can import those two files to enfore the code formating : [formatting.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/formatting.xml) and [codetemplates.xml](http://svn.apache.org/repos/asf/directory/project/trunk/resources/codetemplates.xml)
+
+**IDEA IDE**
+
+IDEA users can import [this file](settings.jar) to enfore the code formating.
+
+
+## Headers
+
+First, you **must** (and this rule accept no exception) use this header in top of all source file, or each file in which you can have comments :
+
+
+	:::java
+	/*
+	 *  Licensed to the Apache Software Foundation (ASF) under one
+	 *  or more contributor license agreements.  See the NOTICE file
+	 *  distributed with this work for additional information
+	 *  regarding copyright ownership.  The ASF licenses this file
+	 *  to you under the Apache License, Version 2.0 (the
+	 *  "License"); you may not use this file except in compliance
+	 *  with the License.  You may obtain a copy of the License at
+	 *
+	 *    http://www.apache.org/licenses/LICENSE-2.0
+	 *
+	 *  Unless required by applicable law or agreed to in writing,
+	 *  software distributed under the License is distributed on an
+	 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+	 *  KIND, either express or implied.  See the License for the
+	 *  specific language governing permissions and limitations
+	 *  under the License.
+	 *
+	 */
+
+### Class/Interface headers
+
+Each **Class** or *Interface* should have an header which must contains :
+
+* A descrption of this class/interface
+* an *author* tag which should be :
+
+		:::java
+		@author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+
+<DIV class="note" markdown="1">
+Thanks to avoid to put your name. The code is not yours, and much more important, but putting ypur name and e-mail, you will intimidate other developper ("Oh, no, I won't mess with this code, it has been developped by XXXX \!") and second, you will receive mail in three years even if you have stopped all commitment on the project (and those who have sent you an e-mail will think that the project's memeber are not responsive...)
+</DIV>
+
+If you use **html** tags, remember to escape '<' and '>' characters...
+
+### Static members and other members
+
+Just add a single line javadoc comment like : _/** blah ... */_ before each member
+
+### Methods
+
+Follow the standard **javadoc** rules : Description, **@param**, **@exception** and **@return**. It should be enough. Avoid **@tags**, **@todo** tags, etc...
+
+Escape **html** characters
+
+## Comments
+
+No special rules, except that you should avoid :
+
+* Useless comments like : i++; /\* Increment i \*/
+* Overusing comments : if you have to heavily comment a peice of code, then this piece of code might be too complex ...
+* Speading little comments all over a method : if possible, write blocs of comments. The method header could hgenerally contains a full description of the code, and if it's not the case, just consider your method might be too long !
+* Dead code commented. If it's dead, then put it in a cuffin. We use SVN, the Ressuscitator !
+
+Basically, use your common sense :-)
+
+## Naming
+
+Naming ! Sounds like Blaming :-). Ok. We use **Sun(tm/c/r)** style :
+
+* Constants are in UPPER CASE with accepted '_'
+* Class starts with an uppercase and each starting word is upper cased. No '_', please !
+* Methods starts with lower case and then follow the same rule than classes. No '_', please !
+* Interfaces should not start with an 'I'
+* Classes which implements an Interface must be followed by the postfix 'impl'
+* Variables follow the method naming convention. No '_', please !
+* Use meaningfull names.
+* No double letter variables like ii, jj etc...
+
+If you browse the code, you will see that many classes does not respect those rules. That's life ! Don't fix it if you don't touch a class. If you are fixing a method in a class, then you can change the code to respect the rules. Little by little, we may reach a stable state where all the code respect the rules ;)
+
+Naming is really important for **APIs**. Be smart. If you are not sure, ask.
+
+## Spaces vs tabs
+
+<DIV class="warning" markdown="1">
+**FOUR SPACES, NO TAB. Final.**
+</DIV>
+
+No discussion. Using tabs break diffs. Modify your **IDE** to insert spaces when you use tabs, before it saves the file.
+
+## Formatting
+
+Use the **formatting.xml** file which can be found in the **resources** directory in the root of the project. This is for *Eclipse*. If you don't use eclipse, then translate the formating to your favorite **IDE**.
+
+Use the **codetemplates.xml** file if you are using *Eclipse* too. You will find it at the same location. It brings you some standard headers for new classes, nex methods, etc.
+
+Use **UTF-8** as a default for your files (except for properties, thanks to **java**, which should be in **ISO-8859-1**). Forget about exotic encoding...
+
+<DIV class="warning" markdown="1">
+**DO NOT USE AN AUTOMATIC FORMATER FOR COMMENTS!!!**
+</DIV>
+
+People spend a lot of time making their comment looks like pretty, so if you just format them, you will have to recover the previous comments...
+
+Some general rules :
+
+* Always use '{' and '}' even for a single instruction, or if you have an empty block (don't use ';' for empty blocks)
+* No more than one instruction on a single line, the only exception is the '?' ':' operation
+* Use *this* to address the class variable if there is a risk of confusion (for instanc eif you have a parameter with the same name.
+* Don't add a 'a_', or 'the_' before a parameter's name to distinguish it from the class variable which has the same name. Use **this** instead.
+* Don't add **final** everywhere. Even if **final** is a substitute for **const**, it's semantic is not clear enough that you use it everywhere.
+* Add spaces in method calls after '(' and before ')'
+* '{' and '}' must be on the same column
+
+This is a code example :
+
+	:::java    
+	...
+    int result = myMethod( param1, param2 )
+    
+    if ( result > 0 )
+    {
+        // do something
+    }
+    ...
+
+
+## Imports
+
+Always declare all the classes you import, do not use **x.y.\***
+
+## What else ?
+
+Well, this was a very short introduction about coding rules. Use commen sense, look at what you see around you when adding some code, ask people about format, if you have a question.
+
+That's it ! (I wait your comments, guys :-)
\ No newline at end of file

Added: directory/site/trunk/content/mavibot/developer-guide.mdtext
URL: http://svn.apache.org/viewvc/directory/site/trunk/content/mavibot/developer-guide.mdtext?rev=1511775&view=auto
==============================================================================
--- directory/site/trunk/content/mavibot/developer-guide.mdtext (added)
+++ directory/site/trunk/content/mavibot/developer-guide.mdtext Thu Aug  8 13:37:07 2013
@@ -0,0 +1,394 @@
+Title: Mavibot Developers Guide
+Notice: Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    .
+    http://www.apache.org/licenses/LICENSE-2.0
+    .
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+# Mavibot Developers Guide
+
+## Getting the source, Building the trunks
+
+### Prerequisites for building
+
+You must have installed **Maven 3.0.4** and have a **JDK 7** installed on your computer. A working internet connection is also mandatory, unless you have all the needed dependences and plugins loaded locally.
+
+<DIV class="note" markdown="1">
+If the build hangs or you get an out of memory exception please increase the heap space:
+
+* For Linux:
+
+    MAVEN_OPTS="-Xmx1024m" mvn clean install
+
+* For Windows:
+
+      SET MAVEN_OPTS="-Xmx1024m"
+      mvn clean install
+</DIV>
+
+### Maven
+
+[Download](http://maven.apache.org/download.html) and install Maven 3.0.4.
+
+Add a MAVEN_HOME environment variable and add MAVEN_HOME/bin to your system path:
+
+On a Linux box you could add the following to the .bashrc file  (.bashrc is a file you'll find in your home directory)
+
+
+    ...
+    export MAVEN_HOME=/opt/maven-3.0.4
+    export PATH=$JAVA_HOME:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
+    ...
+
+Windows users, use Control Panel -> System -> Advanced -> Environment Variables
+
+### JDK 7
+
+<DIV class="note" markdown="1">
+We recommend using a version >= 1.7
+</DIV>
+
+Any newer version should also work.
+
+## Getting the code
+
+To download the sources from trunk, you must have installed a **Subversion** client.
+
+With readonly access :
+
+    svn co http://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
+
+With read/write access (for committers only) :
+
+    svn co https://svn.apache.org/repos/asf/directory/mavibot/trunk mavibot-trunk
+
+## Building the trunk
+
+You may either specify the profile at the command-line, each time you use 'mvn', or you may configure the profile to always be active.
+
+To use a profile at the command-line:
+
+    # mvn [-P<profile>] [options] [<goal(s)>] [<phase(s)>]
+
+
+### Building the trunk, for real
+
+Now, we can compile the projects.
+
+The command is simple :
+
+    cd mavibot-trunk
+    mvn clean install
+
+A lot of plugins will be downloaded. If you are curious, you can then look at .m2/repository to see what has been downloaded on this step.
+
+Building should finish with these lines:
+
+    :::text
+    [INFO] ------------------------------------------------------------------------
+    [INFO] BUILD SUCCESSFUL
+    [INFO] ------------------------------------------------------------------------
+    [INFO] Total time: 8 minutes 30 seconds
+    [INFO] Finished at: Mon Oct 30 23:32:41 CET 2006
+    [INFO] Final Memory: 18M/32M
+    [INFO] ------------------------------------------------------------------------
+
+
+That's it, the jars will be find in target/mavibot-1.0.0-M?-<XXXXXX>-setup.jar where XXXXXX is your local system and M? is the milestone release number for the 1.0 branch.
+
+## Eclipse
+
+We use Eclipse extensively, so these chapters, byt any other idea would be ok too.
+
+### Building eclipse files
+
+To build the .project and .classpath files for eclipse, type the following commands :
+
+    cd mavibot-trunk
+    mvn eclipse:eclipse
+
+### Maven settings
+
+Don't forget to declare a classpath variable named M2_REPO, pointing to ~/.m2/repository, otherwise many links to existing jars will be broken.
+
+You can declare new variables in Eclipse in _Windows -> Preferences..._ and selecting _Java -> Build Path -> Classpath Variables_
+
+## Coding standards 
+
+The applicable coding standards for Mavibot are described in [Coding Standards](coding-standards.html)
+
+There are some more rules, as we are using **Java 7** now :
+
+* Use generics as much as you can. Generic are a good way to avoid casting, and it enforce the usage of the correct type.
+* If you can avoid *Iterators*, do so. There is this cool construction with a **for( Type t:<collection instance> )** : use it !
+* Use **assert**. It's usefull, especially instead of a bunch of **if (<test is wrong>)** then throw Exception* when controlling incoming parameters
+* Use the new *Enum* type !
+
+# Releasing Mavibot
+
+Since we are using Nexus for releases the release process is as follows (see also [http://www.apache.org/dev/publishing-maven-artifacts.html#staging-maven](publishing-maven-artifacts.html)).
+
+## Test the Project
+    
+    :::text
+    $ mvn release:prepare -DdryRun=true
+
+Be aware that this phase will ask you about the next version, and most important, for the next SCM tag :
+
+    :::text
+    ...
+    [INFO] Checking dependencies and plugins for snapshots ...
+    What is the release version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: : 
+    What is the release version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M1: : 
+    What is the release version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M1: : 
+    What is SCM release tag or label for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M1: : 
+    What is the new development version for "ApacheDS Mavibot Parent"? (org.apache.directory.mavibot:mavibot-parent) 1.0.0-M2-SNAPSHOT: : 
+    What is the new development version for "ApacheDS MVCC BTree implementation"? (org.apache.directory.mavibot:mavibot) 1.0.0-M2-SNAPSHOT: : 
+    What is the new development version for "Apache Mavibot Distribution"? (org.apache.directory.mavibot:distribution) 1.0.0-M2-SNAPSHOT: : 
+
+Here, we just validated the proposed versions.
+
+## Deploy a Snapshot
+
+    :::text
+    $ mvn deploy
+
+This is useful to verify your settings in ~/.m2/settings.xml (Nexus password and GPG key)
+
+## Prepare the Release
+
+    :::text
+    $ mvn release:clean
+    $ mvn release:prepare
+
+This creates a tag here: http://svn.apache.org/viewvc/directory/mavibot/tags/
+
+## Stage the Release
+
+    :::text
+    $ mvn release:perform
+
+This deploys the release to a staging repository.
+
+Go to https://repository.apache.org/index.html#stagingRepositories and close the staging repository.
+
+## Build the Site
+
+    :::text
+    $ cd target/checkout
+    $ mvn site
+
+This creates the site.
+
+Now, you have to sign the binary packages which are in target/checkout/distribution/target.
+
+Use your PGP key ID (the pub key, 4096R/[XXXXXXX] where [XXXXXXX] is the key ID)
+
+You can get the keys by typing :
+
+    gpg --list-keys
+
+## Publish Source and Binary Distribution Packages
+
+First of all, create a new directory on people.apache.org/public_html to store the pacckages :
+
+    :::text
+    $ ssh people.apache.org
+    $ mkdir public_html/mavibot-<version>
+    $ exit
+
+Then copy the packages :
+
+    :::text
+    $ cd distributions/target
+    $ scp mavibot-<version>-* people.apache.org:public_html/mavibot-<version>/
+
+Update your index.html file on people.apache.org/public_html to make the packages visible. Here is an example of possible content :
+
+    :::html
+    <h2>Mavibot 1.0.0-M1 tarballs</h2>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz">mavibot-1.0.0-M1-bin.tar.gz</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.asc">mavibot-1.0.0-M1-bin.tar.gz.asc</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.md5">mavibot-1.0.0-M1-bin.tar.gz.md5</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.tar.gz.sha1">mavibot-1.0.0-M1-bin.tar.gz.sha1</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip">mavibot-1.0.0-M1-bin.zip</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.asc">mavibot-1.0.0-M1-bin.zip.asc</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.md5">mavibot-1.0.0-M1-bin.zip.md5</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-bin.zip.sha1">mavibot-1.0.0-M1-bin.zip.sha1</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2">mavibot-1.0.0-M1-src.tar.bz2</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.asc">mavibot-1.0.0-M1-src.tar.bz2.asc</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.md5">mavibot-1.0.0-M1-src.tar.bz2.md5</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.bz2.sha1">mavibot-1.0.0-M1-src.tar.bz2.sha1</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz">mavibot-1.0.0-M1-src.tar.gz</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.asc">mavibot-1.0.0-M1-src.tar.gz.asc</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.md5">mavibot-1.0.0-M1-src.tar.gz.md5</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.tar.gz.sha1">mavibot-1.0.0-M1-src.tar.gz.sha1</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip">mavibot-1.0.0-M1-src.zip</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.asc">mavibot-1.0.0-M1-src.zip.asc</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.md5">mavibot-1.0.0-M1-src.zip.md5</a><br/>
+      <img src="/icons/compressed.gif" alt="[   ]"><a href="mavibot-1.0.0-M1/mavibot-1.0.0-M1-src.zip.sha1">mavibot-1.0.0-M1-src.zip.sha1</a><br/>
+
+## Vote
+
+Start a 72h vote at the dev mailing list.
+
+Here is an exemple of a mote mail :
+
+    :::text
+    Hi !
+
+    This is the first release of Apache Mavibot, the MVCC BTree in Java !
+
+    This milestone is the first step toward a complete MVCC implementation,
+    it currently does not handle versions at all. Anyway, it's already a in
+    memory/On disk full BTree implementation, which is 2 to 3 times faster
+    than JDBM.
+
+    The next milestones will add the missing features :
+    - bulk load support
+    - multi-version support with free pages management
+    - transaction support
+
+    ApacheDS has already been tested with Mavibot 1.0.-M1-SNAPSHOT, and it
+    offers pretty good performances compared to JDBM, except when we inject
+    a lot of entries in the server.
+
+    So let's vote now !
+
+
+    The revision :
+
+    http://svn.apache.org/r1511750
+
+
+    The SVN tag:
+    https://svn.apache.org/repos/asf/directory/mavibot/tags/1.0.0-M1/
+
+    The source and binary distribution packages:
+    http://people.apache.org/~elecharny/
+
+    The staging repository:
+    https://repository.apache.org/content/repositories/orgapachedirectory-073/
+
+
+    Please cast your votes:
+    [ ] +1 Release Mavibot 1.0.0-M1
+    [ ] 0 abstain
+    [ ] -1 Do not release Mavibot 1.0.0-M1
+    
+    Emmanuel
+
+## Release
+
+If the vote succeeds the Mavibot project can be released.
+
+Go to https://repository.apache.org/index.html#stagingRepositories and release the staging repository so all artifacts are published to Maven central.
+
+Move the distribution packages (sources and binaries) to the dist SVN repository: https://dist.apache.org/repos/dist/release/directory/mavibot/dist/$(version)
+
+The best solution would be to checkout the directory in people.apache.org, to copy the packages in the right place, and to check in the changes :
+
+$ ssh people.apache.org
+# svn co https://dist.apache.org/repos/dist/release/directory/mavibot/dist/ api-dist
+# cd api-dist
+# mkdir <version>
+# cp ../public_html/mavibot-<version>/* <version>
+# svn ci <version>
+...
+# exit
+$
+
+The packages should now be available on http://www.us.apache.org/dist/directory/mavibot/dist/<version>
+
+## Deploy the Javadocs and XRef
+
+We now can deploy the generated Javadoc and cross-reference pages. They are generated in the following directory :
+
+target/checkout/target/site
+
+We will copy two directories :
+
+    apidocs
+    xref
+
+### Staging or Production?
+
+Those files will be stored on the production server only !!! And some extra caution must be taken not to delete them when we will publish the staging site too...
+
+First of all, you must checkout the two CMS store for the site : staging and revision.
+
+$ cd ~/apacheds
+$ svn co https://svn.apache.org/repos/infra/websites/production/directory/trunk staging
+ ...
+$ svn co https://svn.apache.org/repos/infra/websites/production/directory production
+ ...
+
+Now, you will first add the directory for the newly generated version :
+
+$ cd ~/apacheds/production/content/mavibot/gen-docs
+$ mkdir <version>
+$ svn add <version>
+
+Then copy the generated docs :
+
+$ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/apidocs ~/apacheds/production/content/mavibot/gen-docs/<version>
+$ cp -r ~/apacheds/trunks/mavibot/target/checkout/target/site/xref ~/apacheds/production/content/mavibot/gen-docs/<version>
+$ 
+
+You have to check in those directories :
+
+$ svn add <version>/*
+$ svn ci <version> -m "Injected <version> javadocs"
+
+Now, you have to update the staging site :
+extpaths.txt
+
+This file list the file on the production site that will not be overriden by the publication of the staging site. It has to be updated
+
+$ cd ~/apacheds/staging/content/
+$ vi extpaths.txt
+
+Add the following line :
+
+...
+# Mavibot
+mavibot/gen-docs/<version>
+...
+
+then save and check in the file
+.htaccess
+
+We also have to update this file :
+
+$ cd ~/apacheds/staging/content/mavibot/gen-docs
+$ vi .htaccess
+
+And update the two last lines to refer to the version you've just released :
+
+RewriteRule ^latest$ <version>/
+RewriteRule ^latest/(.*)$ <version>/$1
+
+Save and commit the file.
+
+## Update the web site
+
+You can now update the site, add a news on the front page, and publish the site.
+
+## Inform the world !
+
+After 24h, you can now inform the world about the release.
+
+Send a mail to the users and dev mailing list, and one to the announce@apacge.org.
+
+You are done !