Do you want to contribute to LemonLdap::NG project ?

Contribute to Project

LemonLDAP::NG is mostly written in Perl and Javascript. Community applies the following rules:

  • Perl:

    • code must be written in modern object-oriented code (using Mouse) (except handler and Apache::Session inheritance)

    • code must be formatted using the make tidy command

  • Javascript:

    • code must be written in CoffeeScript (in <component>/site/coffee): make minify will generate JS files

Configure SSH

On Debian developper station :

ssh-keygen -o -t rsa -b 4096 -C "your@email"

Go to your gitlab account :

cat ~/.ssh/

Copy content to key section and enter a name into “Title” and click “Add key” button. Test ssh connexion :

ssh -T

Accept messages

Install basic tools


As root:

apt install make devscripts equivs yui-compressor git uglifyjs coffeescript autopkgtest cpanminus

Configure Git

As user:

git config --global "Name Surname"
git config --global "your@mail"
git config --global color.ui true
git config --list

Import Project and using Git

As user, create directory in directory:

git clone
cd lemonldap-ng/

# Use your own clone for pushes
git remote set-url --push origin

Install dependencies

# Install build dependancies
mk-build-deps debian/control
sudo apt install ./lemonldap-ng-build-deps*deb
apt install apache2 libapache2-mod-fcgid libapache2-mod-perl2  # install Apache
cpanm Perl::Tidy@$(make tidyversion)


apt install liblasso-perl libglib-perl

Working Project

Configure hosts file

echo '' >> /etc/hosts

Unit tests

Launch unit tests:

make test # or manager_test, portal_test, ... to launch unit tests

Same tests launched on a simulated install

make autopkgtest # or autopkg_portal, autopkg_manager, ... to launch unit tests

Execute an unit test :

# Building project
cd ~/lemonldap-ng/; make
# Go to parent test directory
cd ~/lemonldap-ng/lemonldap-ng-portal
# and execute the unit test:
prove -v t/67-CheckUser.t

Launch tests with LDAP backend

apt install slapd
make LLNGTESTLDAP=1 test

Other commands

  • Start a test web server on port 19876:

    make start_web_server # TESTUSESSL=1 to enable SSL engine (only available for Apache)
    make start_web_server TESTWEBSERVER=nginx # to use Nginx web server
    make stop_web_server
    make reload_web_server # to reload LL:NG conf
  • Clean test files

    make clean
  • Compile CoffeeScript and minify

    make minify
  • Rebuild manager tree, this is needed everytime you add a new option

    make json
  • Update Perl manifest

    make manifest
  • Reformat Perl files

    make tidy

Add a translation key

If you need to create a new parameter in Manager or add a new message in Portal, you must add a key in JSON languages files.

To ease this process, use the script scripts/addTrKey provided in the sources:

$ scripts/addTrEntry
scripts/addTrEntry <option> key enText <frText>
scripts/addTrEntry <option> key '$otherkey'

  --portal  -p: add entry in portal translation instead of manager
  --modify  -m: modify an existing entry
  --delete  -d: delete an existing key
  --reorder -r: reorder files
  --help   -h: display this

For example:

$ scripts/addTrEntry MyNewParameter 'A new parameter' 'Un nouveau paramètre'


Install dependencies:

apt install python3-sphinx python3-sphinx-bootstrap-theme

Then edit sources in doc/sources/admin.

You can check the result with:

make documentation
firefox doc/pages/documentation/current/start.html