CLAIRE Diffusion Philosophy

 

Introduction

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.

Goals

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.

 

Diffusion

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.