CLAIRE
has been a freeware project for a long-time with its source being placed in the
public domain. Now there also exists a serious effort towards producing
industrial-grade software from the CLAIRE development system. The goal of this
note is to clarify the rules for the distribution of CLAIRE, both in the
academic and research community and towards industrial users of CLAIRE.
The
first principle is that this note applies to CLAIRE version 3.0 and onwards, and
does not affect the status of CLAIRE v2.5 and prior versions. Let us recall that
CLAIRE v2.5 has been widely distributed on the WEB site of the ENS with a
licencing agreement which is very flexible (users are free to do almost anything
with CLAIRE, except reselling it).
The new
version is a major improvement because it is:
-
sound: the type
system has been freed of weaknesses that plagued v2.5
-
robust: the
generated code is of higher quality, easier to maintain and to debug
-
flexible: the
ability to generate Java makes CLAIRE a more interesting industrial
tool
This
superiority means that CLAIRE 3.0 may coexist with 2.5 with a slightly different
status that is intended to create better condition for industrial partners to
grow the potential of the CLAIRE language. CLAIRE 3.0 has been registered at the
APP (French association for the protection of software).
The rule
of usage that I propose is geared toward creating a community of interest around
CLAIRE, while leaving each participant totally free to contribute or to withdraw.
It is, therefore, seen as a win/win proposal which is self-enforcing, as opposed
to a legal contract.
Here are
my personal goals concerning the diffusion of CLAIRE :
- make CLAIRE available to a large number of users,
- keep the control over the evolution of the language’s core and try to
avoid a fragmentation with too many divergent clones of CLAIRE
- maintain a freeware version of CLAIRE for the academic and research
community, with no strings attached (that is, the run-time is totally free of
intellectual property claims).
Let
us decompose CLAIRE into three parts.
-
the runtime
component, named microClaire, is the part that is linked to each executable that is
produced by the CLAIRE compiler. This run-time component can be decomposed
itself into a bootstrap kernel, which is language-dependent (a C++ and a Java
version exist) and a Core module, defined with CLAIRE.
-
the CLAIRE
interperter, made of two modules (Language and Reader) that contains the
meta-description of the CLAIRE language, and parsing, evaluation and debugging
methods.
-
The CLAIRE
compiler, made of an optimizer (the Optimize module) and a code generation
component (the Generate module). The Optimizer is the CLAIRE components that
contains more than 90% of the original value of the language. The code
generation part is divided into a rather simple generic component and a small
language-dependent printer. The purpose of a CLAIRE users community is mostly to
share the efforts that are necessary for developing and improving the Optimizer.
The
combination of microClaire’s meta-description and the meta-description of the
language is called metaClaire (cf. Figure 1).
MetaClaire is an important part of CLAIRE since it precisely defines
CLAIRE’s kernel as far as its features and its ontology are concerned. To keep
a common kernel for CLAIRE that supports sharing experiences and tooks is
obtained by including the same metaClaire in each version of the language.
This
approach leaves a lot of freedom to each industrial partner seeking to develop
an industrial version of CLAIRE:
(1)
the
implementation kernel can be anything, it reflects the partner’s deployment
stategy (hardware, OS, run-time constraints,etc.)
(2)
the language
itself can be freely extended, as long as metaClaire’s elementary features are
kept
(3)
The parser and
the other top-level features are left totally open
(4)
The compiler
translates metaClaire into the implementation kernel; thus it is completely left
under the responsibility of the partener.
Here are
the rules for the diffusion of the CLAIRE version.
Binaries available |
encrypted sources available |
open-source | Free Use and redistribution |
Free Use only |
|
microClaire | x | x | x | ||
IClaire | x | x | x | ||
Compiler | x | x | x |
Encrypted sources are C++ files that can be ported to
various OS easily but that were striped from comments and meaningful identifiers.
The freedom to use and re-destribute
is precisely the current status for CLAIRE 2.5. The “free use” status does
not include re-distribution and is de facto limited to academic and research
use. This is confirmed in the header of the Claire.h file, which is inspired
from GNU foundation’s white paper. Its main goal is to establish the copyright
on CLAIRE.
This
licencing agreement does not support a commercial use of CLAIRE (selling CLAIRE
as a product or part of a product) but it supports the free exploitation of
sofware that was developed with CLAIRE, because of the free status of
microCLAIRE.