In order to implement this basic philosophy of development within ABINIT, different languages/​tools are used, and mastered at different levels by different people (depending the kind of development contribution) : the Autotools (autoconf, automake, ...), buildbot, git, gitlab, CPP, Fortran90, HTML, MPI, Python, ROBODOC. These, with the developer'​s Web pages of the ABINIT web site, constitute the ABINIT developer environment. For some of these languages/​tools,​ the [[developers Web pages]] provide documentation:​ external links (like the language reference, repository, tutorials), some internal links (additional tutorials), and the particulars of the use of such language/​tools within ABINIT.

+

In order to implement this basic philosophy of development within ABINIT, different languages/​tools are used, and mastered at different levels by different people (depending the kind of development contribution) : the Autotools (autoconf, automake, ...), buildbot, git, gitlab, CPP, Fortran90, ​<​nowiki>​HTML</​nowiki>​, MPI, Python, ROBODOC. These, with the developer'​s Web pages of the ABINIT web site, constitute the ABINIT developer environment. For some of these languages/​tools,​ the [[developers:​advdoc|developers Web pages]] provide documentation:​ external links (like the language reference, repository, tutorials), some internal links (additional tutorials), and the particulars of the use of such language/​tools within ABINIT.

These languages/​tools do not have to be known or used at the same level. For some of them, only a rudimentary understanding of such languages/​tools is sufficient. For others, the knowledge must be deeper.

These languages/​tools do not have to be known or used at the same level. For some of them, only a rudimentary understanding of such languages/​tools is sufficient. For others, the knowledge must be deeper.

Line 47:

Line 47:

* CPP is the preprocessor for the Fortran 90 sources. Thanks to build system directives passed to CPP, the sequential or parallel version of ABINIT are generated, different external libraries may or may not be incorporated,​ etc .... A CPP version should come by default with every UNIX/​Linux-like operating system. The developers need to know the effect of CPP directives (which is quite simple).

* CPP is the preprocessor for the Fortran 90 sources. Thanks to build system directives passed to CPP, the sequential or parallel version of ABINIT are generated, different external libraries may or may not be incorporated,​ etc .... A CPP version should come by default with every UNIX/​Linux-like operating system. The developers need to know the effect of CPP directives (which is quite simple).

* Fortran 90 (or F90) is the language in which the vast majority of ABINIT routines is written. The developer need to have a good knowledge of Fortran 90 to develop within ABINIT. They should have a F90 compiler available on their machine.

* Fortran 90 (or F90) is the language in which the vast majority of ABINIT routines is written. The developer need to have a good knowledge of Fortran 90 to develop within ABINIT. They should have a F90 compiler available on their machine.

-

* HTML is the language in which most of the ABINIT documentation is written, either within the package (e.g. description of input variables), or on the Web site (the present text is written in HTML). HTML files are text files, that can be edited using simple editors like vi or emacs, or more advanced editors. This language is interpreted by Web browser. ABINIT developers should have at least a basic knowledge of HTML to be able to document properly their work in ABINIT.

+

* ​<​nowiki>​HTML</​nowiki> ​is the language in which most of the ABINIT documentation is written, either within the package (e.g. description of input variables), or on the Web site (the present text is written in <​nowiki>​HTML</​nowiki>​). <​nowiki>​HTML</​nowiki> ​files are text files, that can be edited using simple editors like vi or emacs, or more advanced editors. This language is interpreted by Web browser. ABINIT developers should have at least a basic knowledge of <​nowiki>​HTML</​nowiki> ​to be able to document properly their work in ABINIT.

* MPI is the Message-Passing Interface library, used for the parallelism within ABINIT. In order to generate parallel code, the user and developer need to have the MPI library compiled on their machine. In order to develop in ABINIT, a basic knowledge of MPI is requested. Of course, a deep knowledge of MPI might be needed for several developments.

* MPI is the Message-Passing Interface library, used for the parallelism within ABINIT. In order to generate parallel code, the user and developer need to have the MPI library compiled on their machine. In order to develop in ABINIT, a basic knowledge of MPI is requested. Of course, a deep knowledge of MPI might be needed for several developments.

* Python is a scripting language, that is used for the automatic testing of ABINIT and in the build system. Its use should be transparent to the developers. Although a knowledge of Python is not requested to develop in ABINIT, it might help for the post-analysis. A suitable version of Python should come by default with every UNIX/​Linux-like operating system.

* Python is a scripting language, that is used for the automatic testing of ABINIT and in the build system. Its use should be transparent to the developers. Although a knowledge of Python is not requested to develop in ABINIT, it might help for the post-analysis. A suitable version of Python should come by default with every UNIX/​Linux-like operating system.

-

* ROBODOC is a tool to create HTML (Web-browsable) file from source files (F90 for ABINIT). Developers are not required to use ROBODOC, but the ABINIT F90 must conform to the ABINIT-ROBODOC standard to be processed by ROBODOC before delivery over the Web. So, understanding the ABINIT-ROBODOC standard is requested by ABINIT developers.

+

* ROBODOC is a tool to create ​<​nowiki>​HTML</​nowiki> ​(Web-browsable) file from source files (F90 for ABINIT). Developers are not required to use ROBODOC, but the ABINIT F90 must conform to the ABINIT-ROBODOC standard to be processed by ROBODOC before delivery over the Web. So, understanding the ABINIT-ROBODOC standard is requested by ABINIT developers.

-

The set-up of the documentation concerning these different tools (including a basic initiation),​ especially adapted for the ABINIT developer, is progressing. Please consult the [[developer'​s Web pages]] .

+

The set-up of the documentation concerning these different tools (including a basic initiation),​ especially adapted for the ABINIT developer, is progressing. Please consult the [[developers:​advdoc|developer'​s Web pages]] .

Here follows some more information,​ concerning the way the ABINIT community is working.

Here follows some more information,​ concerning the way the ABINIT community is working.