The enigmail is implemented in JavaScript.
To make development as convenient as possible, we recommend to set up your development environment as follows
Set up your environment as described in our building instructions
For debugging, we recommend to install the Tiny JavaScript Debugger
For development in general we recommend two have 2 (two!) additional Thunderbird profiles (beside the one that is used as your day-to-day emailer):
"Install" Enigmail in all development profiles using the "Proxy File" method (see the MDN hints about this)
For static code analysis (useful whenever you edit the code) you need eslint, version 2.x:
Ideally you download eslint from the node-js project:
If not part of the path (e.g. under cygwin) extend the PATH accordingly.
For example under Windows with cygwin, it might look like:
PATH="$PATH:/cygdrive/C/Program Files/nodejs" PATH="$PATH:/cygdrive/C/Users/<username>/AppData/Roaming/npm"
Perform static code analysis with 'make eslint' (included also in other targets)
To run unit tests you need JSUnit:
Note that some Thoughworks guys did provide support for complete development environment with Vagrant or Docker
Developer Wiki: Building Enigmail
Developer Wiki: Code Style
Developer Wiki: Home