\documentclass[12pt,a4paper]{article}

\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{hyperref}

\title{Calcul formel et logiciels libres}

\begin{document}

\maketitle

\begin{abstract}
  Ce document essaye de faire une synthèse de la discussion qui s'est
  engagée à l'automne 2001, en particulier sur la liste de diffusion
  calcul-formel-libre@math.cnrs.fr, à propos du calcul formel et des
  logiciels libres.
\end{abstract}

\tableofcontents

\section{Préface}

Je (Nicolas Thiéry) ne fait que maintenir cette page web; le document
ci-dessous a été écrit par plusieurs participants de la liste de
diffusion calcul-formel-libre@math.cnrs.fr. Vous pouvez en consulter
les archives sur:
\url{http://www.math.cnrs.fr/archives/logiciels-formels/}.

\section{Introduction}

De tous temps, le développement de la science fondamentale a été
étroitement lié au droit et à la possibilité d'échanger librement des
connaissances.

Les méthodes commerciales de développement logiciel, créent un
clivage: d'un côté les développeurs, en très petit nombre, de l'autre
les utilisateurs, beaucoup plus nombreux, mais qui n'ont pas accès au
contenu intime de la technologie. Le développement de logiciels libres
de calcul permet de remettre tous les individus à égalité. Ceci peut
ouvrir la voie à un travail collaboratif élargi, répondre à des
impératifs de formation, permettre la réutilisation de partie de codes
pour d'autres projets, etc.

Ce projet a pour objectif de créer les conditions permettant le
développement de logiciels libres dans le domaine du calcul formel
(création et/ou adaptation, évolution, maintenance, diffusion) et de
contribuer plus généralement à une plateforme de calcul scientifique
libre.

\subsection{Enjeux scientifiques}

Pour prouver des résultats scientifiques ou pour illustrer ces
résultats, il peut être nécessaire de recourir à des calculs sur
ordinateur. Lorsque l'on utilise à cet effet un logiciel dont le code
source n'est pas disponible (ce qui est le cas des logiciels
commerciaux en général), on est à la merci d'une erreur ou de l'oubli
d'un cas particulier de l'auteur ou de l'éditeur du logiciel, sans
pouvoir le vérifier. La rigueur scientifique exige dans ce cas de
faire la preuve avec un logiciel dont les sources sont disponibles ,
voire modifiables (ce qui est le cas habituel des logiciels libres).

D'autre part, la recherche dans le domaine de l'algorithmique est
directement liée aux progrès des logiciels de calcul scientifique.
Prenons l'exemple du calcul formel. Le mode de diffusion habituel de
nouveaux algorithmes, par le biais d'articles dans des revues
scientifiques avec comité de lecture, est lent et ne permet souvent
qu'une diffusion confidentielle. Il est aussi possible de diffuser ses
résultats scientifiques par le biais d'archives électroniques de
prépublications accessibles à tous (mais alors sans validation
scientifique du contenu). Un nouveau mode de diffusion très utile
pourrait être l'inclusion des algorithmes dans un logiciel de calcul
formel libre ouvert et largement diffusé. Ceci permettrait aussi une
évaluation plus objective des performances et de l'impact pratique des
différents algorithmes proposés.

\subsection{Enjeux politiques et économiques}

Le contrôle de l'information numérique par des entités commerciales se
pratique de différentes manières:
\begin{itemize}
\item par le format de donnée numérique des documents; en sciences
  physiques ou en mathématiques cela concerne surtout les fichiers
  sources écrits dans des langages de programmation commerciaux
\item en imposant des règles trop rigoureuses sur le droit d'auteur
  pour les documents (c'est la politique des éditeurs scientifiques)
  ou les bases de données
\item par la diffusion massive de logiciels commerciaux
\item par la «standardisation» systématique de formats d'échanges
  privés non-compatibles
\item par les brevets (y compris les brevets logiciels ou brevets sur
  des méthodes intellectuelles dans les pays où ils sont légaux).
\end{itemize}
Lorsqu'une seule entité commerciale contrôle l'information dans son
domaine par une des méthodes ci-dessus, elle est en situation de
monopole et peut fixer les prix de ses services de manière arbitraire.

On constate à l'heure actuelle une baisse des coûts liés à l'achat des
ordinateurs, malgré le fait qu'ils deviennent toujours plus
performants, et une augmentation des coûts logiciels qui deviennent
une part de dépense de plus en plus prédominante. Par exemple, une
licence individuelle Maple coûte actuellement plus cher que
l'ordinateur sur lequel le produit est installé. Cette question
devient un problème majeur dans le financement des laboratoires de
recherche et des institutions d'enseignement.

Examinons la situation en mathématique.

La situation des documents numériques en mathématique est
satisfaisante puisque le format le plus utilisé, \LaTeX, est libre, ce
qui facilite les échanges et garantit la pérennité de ces documents.
Il est probable que la généralisation du format de stockage XML
permettra de plus aux moteurs de recherche de travailler sur des
documents scientifiques, qui pourront devenir de véritables documents
hypertextes.

Par contre, la diffusion des résultats scientifiques est faite par des
éditeurs qui contrôlent le copyright des documents publiés aux dépens
de la communauté mathématique qui fait pourtant la part la plus
importante du travail (création, édition, référé) tout cela sans
véritable contrepartie (ce qui est d'ailleurs contraire au droit
d'auteur au moins en France). Les éditeurs pratiquent des hausses de
prix constantes. Un détournement notable des ressources publiques pour
la recherche s'opère ainsi au profit des éditeurs.

La situation n'est pas favorable non plus dans l'utilisation de
logiciels de calcul en mathématiques: il n'y a pas de standard commun
donc peu d'interopérabilité, et pas de logiciel libre bien diffusé. Le
produit de référence est parfois un logiciel commercial, comme Maple
pour le calcul formel dans l'enseignement. La communauté scientifique
fait la part initiale du travail (recherche des algorithmes,
implantation dans un langage de logiciel commercial) mais ce sont les
éditeurs de logiciels commerciaux qui le valorisent à leur seul
bénéfice. La hausse récente des prix de licence de logiciels
commerciaux est à mettre en parallèle avec la hausse des prix des
revues. Il faudrait donc encourager l'utilisation de logiciels libres
ce qui est possible comme le montre la standardisation autour du
format \LaTeX.

\medskip

Pour toutes ces raisons, il est indispensable de disposer de logiciels
libres dans tous les domaines du calcul scientifique, en particulier
le calcul formel.

\section{Projet}

Le but du projet est de contribuer dans le domaine du calcul formel à
une plate-forme scientifique entièrement libre, et dans laquelle les
chercheurs pourraient mettre leurs résultats les plus récents à la
libre disposition de tous.

Le projet comporte plusieurs aspects :
\begin{itemize}
\item création et/ou adaptation de logiciels de calcul formel libres;
\item intégration et diffusion, de telle sorte que le résultat soit
  utilisable par un large public, en particulier dans l'enseignement;
\item support, suivi, maintenance, documentation et formation.
\end{itemize}

Un comité s'est constitué en décembre 2001 afin d'organiser des
journées de rencontre, en mai 2002, où seront présentés des projets
passés et existants, y compris des projets réalisés dans d'autres
domaines scientifiques, et où seront discutées les modalités pratiques
du projet global vient de se constituer. Ce comité est composé de
Daniel Duparc, Bernard Mourrain, Bernard Parisse, Bernard Perrot,
Fabrice Rouillier, Marie-Francoise Roy, Nicolas Thiéry, Paul
Zimmermann. Il s'est réuni pour la première fois le 5 mars au LIP6, et
sera dissout, ou renouvelé démocratiquement par les participants à
l'issue des journées.

Sans préjuger des conclusions de ces journées, il sera très
probablement indispensable:
\begin{itemize}
\item De créer une plateforme de travail collaboratif organisée autour
  d'un «noyau dur» d'animateurs du projet décidé.
\item De prévoir les moyens matériels et surtout humains
  indispensables pour la réalisation du projet, notamment en
  identifiant les compétences nécessaires,
\item De demander la mise à disposition du projet de moyens humains,
  selon des modalités adaptées et réalistes à définir (par exemple:
  participation au projet de chercheurs ou d'ingénieurs, détachements
  partiel ou total d'enseignant-chercheurs, thèses, stages, contrats à
  durée déterminée, etc.).
\end{itemize}

\section{Journées \og Calcul formel libre \fg}

Lieu: Université Lyon I, Domaine de Gerland

Date: mardi 21 - jeudi 23 mai 2002

Annonce:
\url{http://www.lapcs.univ-lyon1.fr/~nthiery/CalculFormelLibre/workshop.html}

\section{École d'été \og Calcul et Algorithmique en liberté \fg}

Lieu: Hyères (VVF de Giens)

Date: lundi 16 - vendredi 20 septembre 2002

Annonce:
\url{http://www-sop.inria.fr/galaad/conf/ecole02.html}

\newpage

\section{Besoins en calcul formel}

Ceci est un premier jet qui essaye de lister les besoins des
différents types d'utilisateurs du calcul formel.

\begin{enumerate}
\item Utilisateurs dans l'enseignement:
  \begin{itemize}
  \item Interfaces conviviales\\
    Exemple: maple V est limite (pas de menus);
    une réponse avec un RootOf n'est pas envisageable
  \item Interpréteur
%  \item Syntaxe
  \item Documentation
  \item Stabilité
  \item Livres avec exercices
  \item Internationalisation (documentation/système/interface/tutoriels/livres)
  \item Formation des formateurs
  \item Présentation attrayante du calcul formel
  \item Formation des décideurs
  \item Portabilité Windows / Mac
  \item	Compatibilité ascendante
  \end{itemize}
  
\item Utilisateurs extra calcul formel (Physiciens, mathématiciens,
  chimistes, biologistes, ...)
  \begin{enumerate}
  \item Milieu académique
    \begin{itemize}
    \item Convivialité
    \item Interfaces graphiques et texte pour le traitement automatique
    \item On peut s'appuyer sur un plus grand bagage mathématique (pas
      de pb avec RootOf)
      % Formulation non homogène avec le reste de la liste
    \item Formation au calcul formel
    \item Tutoriaux sur l'utilisation d'outils spécialisés (ex:
      applications pratiques des bases de Gröbner, des fonctions
      symmétriques, ...)
    \item Gros calculs (on peut se restreindre à UNIX dans un premier temps):
      \begin{itemize}
      \item protocoles
      \item parallélisme
      \item échange de gros volumes de données
      \item gestion des ressources
      \end{itemize}
    \item Échanges avec le monde extérieur
      \begin{itemize}
      \item Appels à des librairies spécialisées
        \begin{itemize}
        \item Lapack, ... pour le calcul numérique
        \item GAP
        \item ex: mupad/scilab
        \end{itemize}
      \item Appel du calcul formel à partir d'autres systèmes
      \item Interfaçage avec des formats d'entrées sorties existants:
        \begin{itemize}
        \item Lecture / parsing de gros fichiers de données
        \item Génération de documents LaTeX, HTML, MathML, OpenMath ?
        \item Génération de code C, ...
        \end{itemize}
      \end{itemize}
    \item Interfaces / modules spécialisés pour certains domaines (ex:
      mise en équation automatique d'un banc d'optique)
    \item Bibliothèques graphiques (tracé de courbes, dessin vectoriel)
    \end{itemize}
  \item Milieu industriel
    \begin{itemize}
    \item Support technique
    \item Service de conseil
    \item Maintenance du code (il faut qu'il s'installe directement)
    \item Validation et tests (Cf. NAG)
    \item Portabilité
    \item "Publicité": faire connaître le calcul formel dans l'industrie
    \item Transcription semi-automatique d'anciens codes
    \end{itemize}
  \end{enumerate}
\item Chercheurs
  \begin{itemize}
  \item Interpréteur haut niveau (validation et prototypage d'algorithmes)
  \item Difficultés principales:
    \begin{itemize}
    \item Devoir changer de langage
    \item Échanger des données dans divers formats
    \end{itemize}
  \item Calculs intensifs:
    \begin{itemize}
    \item Échanges de gros volumes
    \item Langage bas niveau, voire assembleur
    \item Pêche absolue
    \item Sauvegarde d'état (core) pour reprise ultérieure
    \item Gestion de mémoire (ramasse-miettes)
    \item Possibilité de séparer le noyau de l'interface
    \end{itemize}
    \item Intégration d'autres contributions ("petites"
      bibliothèques); valorisation de telles contributions
  \end{itemize}
\end{enumerate}

%\section{Financement}

%Il semble que dans le cadre de l'action spefcifique calcul formel
%confiee par le departement stic du cnrs a Gilles Villard et
%Jacques-Arthur Weil il sera possible d'obtenir un finnacement pour se
%reunir une fois et organiser les journees.

%Plus participation du GDR ALP.

\newpage

\section{Liens}

\begin{itemize}
\item La Free Software Foundation et le projet GNU (dont GMP) \\
\url{www.gnu.org}
\item Maxima, W. Schelter et al., \\
\url{http://www.math.utexas.edu/users/wfs/}
\item Axiom\\
\url{http://home.earthlink.net/~jgg964/axiom.html}
\item Aldor\\
\url{http://aldor.org/}
\item PARI, H. Cohen et al., \\
\url{http://www.parigp-home.de}
\item Giac, B. Parisse et al.,\\
\url{http://www-fourier.ujf-grenoble.fr/~parisse/giac.html}
\item GiNaC, R. Kreckel et al., \\
\url{http://www.ginac.de}
\item Aubrey Jaffer\\
  \url{http://www-swiss.ai.mit.edu/~jaffer/JACAL.html}
\item NTL, V. Shoup, \\
\url{http://www.shoup.net}
\item ALP, B. Mourrain et al.,\\
\url{http://www-sop.inria.fr/galaad/logiciels/ALP/}
\item SYNAPS (Plateforme C++ intégrant ALP, Lapack, Gb, RS, MSolve,
  Lapack, GMP, MPFR, UDX, Interfaces avec MuPAD, Maple ...), B.
  Mourrain, F. Rouillier et al.\\
  \url{http://www-sop.inria.fr/galaad/logiciels/synaps/}
\item Zen, F. Chabaud et R. Lercier \\
\url{http://www.di.ens.fr/~zen/}
\item Scilab, Inria, \\
\url{http://www-rocq.inria.fr/scilab}
\item Octave, J. W. Eaton et al., \\
\url{http://www.octave.org}
\item GSL, M. Galassi, J. Theiler et al.,\\
\url{http://sources.redhat.com/gsl}
\item Texmacs, J. van der Hoeven \\
\url{http://www.texmacs.org}
\item Lyx \\
\url{http://www.lyx.org}
\item ROOT, CERN (Rene Brun, Fons Rademakers)\\
\url{http://root.cern.ch/}
\item DrGenius, H. Fernandes, \\
\url{http://www.ofset.org/drgenius/}
\item Gnumeric (projet Gnome) \\
\url{http://www.gnome.org/projects/gnumeric/}
\item Logiciels libres dans l'enseignement (CNDP, J.-P. Archambault)\\
\url{http://shalmaneser.sortilege.org/cndp/}
\item Distribution GNU/Debian \\
\url{http://www.debian.org}
\item Distribution Mandrake pour école d'ingénieurs,\\
\url{http://www.ensta.fr/ moncorge/mpi/yahoo.html}
\item Association AsTeX, M. Lavaud,\\
\url{http://www.univ-orleans.fr/EXT/ASTEX/}
\item Liste de liens et références sur le calcul formel, maintenue par
  M. Lavaud,\\
\url{http://www.univ-orleans.fr/EXT/ASTEX/astex/doc/fr/adrut/html/acfor.htm}
\item \LaTeX\ Navigator \\
\url{http://tex.loria.fr/index.html}
\item Voir aussi \\
\url{http://www-sor.inria.fr/mirrors/sal/index.shtml}
\item Rapport de J.P. Demailly (section IV) :\\
\url{http://www-fourier.ujf-grenoble.fr/ demailly/rapport.html}
\item Linbox\\
  \url{http://www.linalg.org/}
\item GAP\\
  \url{http://www-history.mcs.st-and.ac.uk/~gap/}
\item OpenMath\\
  \url{www.openmath.org}
\item MuPAD-Combinat, F. Hivert, N. M. Thiéry et al.\\
  \url{http://mupad-combinat.sourceforge.net}
\item PerMuVAR, N. M. Thiéry\\
  \url{http://permuvar.sourceforge.net}
\end{itemize}

\end{document}
