The text hereafter is the "Implementation" section of the IPOL submission manual, as it was before the adopton of the software guidelines.
Implementation
You must provide all the code necessary to build an executable implementation your algorithm. This code will be distributed from the algorithm web page and used for the online demo.
The program should be minimal and must be usable from the command-line without any user interaction or graphical user interface, taking all its parameters from the command line. It must read and write data files in standard and documented formats.
You must include the routines used to read the input and write the output images. Only one image format is needed, because the online demo environment will handle image format conversion. Some help, including example code, is provided in the IPOL development pages. You can also reuse code fragments from other published algorithms to handle input/output.
Because of the demo interface limitations, the program must not use more than 1 GiB of memory, and must not take more than 30 seconds to run on typical data; some code can be accelerated or parallelized and input size can be limited to enforce these requirement. Help will be provided to the authors to accelerate their code by classic techniques.
This minimal implementation of your algorithm will be reviewed as part of the IPOL publication process. You can also provide alternative implementations (rich feature set, graphical interface, binary versions) in the web page, but these versions will not be reviewed and certified by IPOL.
Quality
These requirements aim to enforce quality and portability standards on the code submitted and published on IPOL.
The exact standard of the programming language must be specified and
will be used for compilation; accepted languages and standards are
C89 (ANSI C), C99, C++98 (ANSI C++). It must compile without errors
with the options -Wall -Wextra -Werror
for the current version of
the GNU gcc
compiler. The code must not require any extension of
the standard library (libc
, libc++
or stl
) or be specific to a
hardware environment or to an operating system. Because it is used for
the demo, it must perfectly work in a Linux 32bit and 64bit
environment.
The implementation is provided in source form, is self contained, and
requires no external component except for standard, reliable, portable
libraries; the current list of accepted libraries is
libtiff
and
libpng
to read and
write images,
libfftw3
and
clapack
for Fourier transforms and
linear algebra,
zlib
for lossless compression;
other libraries can be examined on request. This library list is
limited to ensure long-term reliability of the IPOL implementations.
Compilation and usage instructions must be available in a README.txt
file.
You must deliver a very readable code, commented precisely and exhaustively. Comments must be abundant (typically a 1/8 comment/instruction ratio) and must link each module to its mathematical algorithm description in the web page. You must also explain the implementation choices and avoid unnecessary programming tricks that shorten the code but make in fact its comprehension difficult to nonprofessional programmers.
The suggestions hereafter are guidelines for a clean and portable code. They are not requirements for submission.
Reading and writing images should use PNG or TIFF file formats (note that TIFF allows floating-point images). Reading and writing non-image data should use plain text files, possibly gzipped.
The source code should be fully commented and documented with doxygen annotations. The source code and its documentation should be written in English; this include comments, file names, function and variable names. The source code should be clearly and consistently indented.
The source code should not include any content not related to the submitted algorithm.
The source code files should not exceed 1000 lines per file, 80 signs
per line. If composed of multiple files, the source code should follow
the standard .h (prototypes only) and .c (implementation only)
structure. Programs made of several files should use separate
compilation and the make
compilation tool.
Copyright Policy
IPOL needs a free software license for the algorithm implementations because we want anyone who downloads the source code to be able to try, use, modify and reuse it.
Three options are proposed for the copyright management of your works.
- copyright assignment
Authors assign the copyright to IPOL. IPOL is free to manage the copyright and license of this work. Authors are credited as such in the source code and its documentation. - copyright agreement
Authors sign a conditional and non-exclusive copyright agreement with IPOL. Under this agreement, IPOL has the right to manage the licenses of this work as long as it complies with the Free Software and Open Access principles, and authors keep the right to manage it out of IPOL, including restrictive copyright management and commercial use. - accepted licenses
Authors keep the copyright of their works, but choose a free software license within this list : GPL, LGPL, AGPL, BSD.
Note that GPL licenses do not allow "everything" with your code. Anyone reusing your code must provide the source code of his software, and use the GPL license too. This has been a successful model for more than 25 years of free software, including research code.
With the first option, copyright management of the published works is made easy, but the authors have to transfer all their rights to IPOL. With the third option, authors keep as much rights on their works as possible while complying with the IPOL project goals, but IPOL is exposed to an increasing complexity in the copyright management after years when authors can not be reached anymore.
The second option is a compromise between the rights of the authors and the flexibility needed for a long-term management of IPOL. The current draft of this agreement, based on the FSFE Fiduciary License Agreement, needs to be reviewed by copyright experts. This option is not available for the moment.
As an exception, implementations of patented algorithms may be distributed with ad-hoc licensing terms instead of these free software licenses.