*** CODING STYLE ***

To keep something easily readable, coders have to follow a same coding style.
Currently we only have a few rules, inspired by GNU Coding Standards.


INDENTATION
-----------

Keeping the brackets on a same column
	function ($var)
	  {
		if (1 != 0)
		  {
		 	print 'a';
		  }
	  }


COMMENTS
--------

Use # as comment character, to have something uniform with all scripts, shell
perl and PHP.

Use easily 'grepable' tags in the comments like DEPRECATED: or FIXME:


PHP/HTML MIXTURE
----------------

Do not mix different languages. It means that <?php ?> can occurs only
one time in a file. If you need to print some HTML, use print();


PHP REQUIRE
-----------

Use only double-quotes for require statements

require "../include/pre.php";


FEEDBACK
--------

Providing feedback on top of the page is the better way to return feedback
to user. It means that actions must fed the $feedback variable and ideally
all these actions should be done _before_ the page header function call.

Feedback messages should be more or less similar, you should use the function
fb() (aliases: utils_feedback(), feedback())
	fb(_("Bla bla bla"));

For error messages should, the second argument of this function should be
set to 1, something like
	fb(_("Bla failed due to crappy coding"), 1);

Finally, if you want to add debugging messages, do it using dbg()
(aliases: utils_debug(), debug()), like
	dbg("This action before of this");

$GLOBALS[sys_debug_on] should be set to true, you want this function to be
effective.

Providing help about specific words is something nice to. It should be used
using help() (alias: utils_help())

	help(_("My sentence with words unclear"),
		array(
		      _("sentence")=>_("sentence is ...")
		     ));


GETTEXT SUPPORT
---------------

Savannah being internationalized, do not insert strings without call to the
gettext "_()" function. And do not insert html tags inside (use printf/sprintf
if you need to put variables inside the gettext function). If you want to
print numbers, please consider using the "ngettext()" function instead of the
simple "_()" function.

If you need to make the meaning of a string clear, so that translators know
how to translate that word/sentence, you are encouraged to use the special
comment tag "I18N". Any comment marked this way will be included in the
savane.pot file for easy lookup.

Example:
# I18N
# This comment will be included in the potfile
print _("This is a sentence with a difficult meaning.");

Please see also the README in the po/ directory for some important
considerations.



JAVASCRIPT
----------

We cannot assume that all users have javascript support activated.
So the policy is that javascript must never be mandatory to perform
some action.


EOF
