About Mastrave: history, aim and copyright information

                                 "What I cannot create I do not understand."
                                                               R. P. Feynman


Mastrave is a library of subroutines written in order to be as compatible
as possible with both GNU Octave and Matlab computing environments.
The Mastrave project attempts to allow a more effective, quick
interoperability between them by using a reasonably well documented wrap
around their main incompatibilities and by promoting a reasonably general
idiom based on their common, stable syntagms.  It aims to build a solid
layer of coherently designed utilities on top of the already valuable
abstraction provided by these computing environments -- to minimize the
learning curve needed to think and implement non-trivial scientific
contributions.  There are a couple of underlying ideas: library design is
language design and vice versa (Bell labs); language notation is definitely
a "tool of thought" (Iverson), in the sense that there is a feedback
between programming/mathematical notation and the ability to think new
scientific insights.  And ethic ones.


Knowledge and culture freedom

Mastrave is free software, which is software respecting your freedom.  It is
offered to the scientific community to promote the development of a free
society more concerned about cooperation rather than competitiveness, heading
toward knowledge and culture freedom, which implies the possibility for
motivated individuals to freely access and contribute even to the cutting-edge
academic culture.  This possibility relies on the development of tools and
methodologies helping to overcome economic, organizational and institutional
barriers (i.e. knowledge oligopolies).  This is a long-term goal to which the
free software paradigm can and has been able to actively cooperate.


Adding on top: portability, scalability

Mastrave was originally conceived and written by Daniele de Rigo (in about
2005) to perform highly vectorized computation with the constraint to use a
passably portable, scalable architecture and data/metadata manipulation
abstraction -- with respect to the requirements needed when the project
started.

Portability required to deal with the essential intersection of the GNU Octave
and Matlab languages, without forsake efficiency and conciseness provided by
the vectorized approach that makes sensible to use such computing environments.
Despite powerful GNU Octave language and library extensions and Matlab
Toolboxes reach great "unilateral" capabilities, until now did not exist a
systematic attempt to improve both of them with general purpose, portable and
freely available features.

On the other hand, implementing some interesting features seems to need a
choice among divergent objectives like preserving vectorial approach,
accomplishing time efficiency or avoiding memory exhaustion for large data
sets.  The Mastrave project tried to mitigate this dilemma even through an
extensive use of sparse matrices.


Freedom to review software-based scientific claims

In scientific environments, free, easy exchange and diffusion of information
are the foundations of knowledge building.  Independent validations, the
possibility to independently review and repeat an experiment or a process
having full access to structural information and the freedom of exploring
different variants are notoriously the core of the scientific method.

Scientific oriented software should guarantee the same free, easy exchange and
diffusion of information about itself.  If the main result of a scientific
publication is a new algorithm or a new software package claimed to be useful,
it is in the scientific community's interest that the author make available a
detailed description and a source code understandable, peer-reviewable and
improvable by other scientists.

The possibility of a deep verification is especially needed for those results
that infer theoretical conclusions by using non trivial numerical tasks.
A theoretical assumption could be justified a posteriori in the more persuading
manner.  However it may ignominiously collapse when discovering a subtle bug in
the code used to infer it.


Cooperative scientific patterns

Mastrave encourages conciseness and focusing on the problem instead of on the
dusty corners of the array programming language and on portability.  Its
general purpose abstraction and its pervasive requirement check try to move the
code development from individual debug of both the actual problem and other
expensive unspecific tasks to a more specific coding, leaving to the community
a collaborative debug and evolution of those general, common tasks.
That is the meaning of a free library.

On the other hand, a new algorithm created for a prosaic application may be
brilliantly adapted opening unexpected opportunities in some other field, maybe
becoming a general purpose utility.
But it needs to be accessible to other people, widely and freely.
Such things as closed, black box armor-plated software or software patents
might sound extravagant if applied to the science.  What would happen if the
Fast Fourier Transform were occulted under a software patent?


The source code for Mastrave is freely redistributable under the terms of the
GNU General Public License (GPL) as published by the Free Software Foundation.
As an handy reference for understanding some key aspects of the GNU General
Public License, it could be said the GNU GPL guarantees that anyone who
redistributes the software, with or without changes, must pass along the
freedom to further copy and change it.
By distributing the complete source code for Mastrave under the terms of the
GNU GPL, it is possible to guarantee that you and all other users have the
freedom to redistribute and change both Mastrave and the growing collection of
public scientific works that use Mastrave as a library.
Moreover, you have the freedom to analyze in details how each computation is
performed and how to improve it.

Everyone is encouraged to share this software with others under the terms of
the GNU General Public License.
Mastrave is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU General Public License for more details.
You are also invited to help to improve Mastrave by contributing new code for
it and by reporting any problems you may have: please have a look at
<http://mastrave.org/support/>.


Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Daniele de Rigo
Verbatim copying and distribution of this entire article is permitted in any
medium without royalty provided this notice is preserved.

