~~~~~~~~~~~~~~~~~~~~~~~~~~~HEADER~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LICENSE.txt

Revision :
file created : nov. 23, 2000 by YG
updated : dec. 26, 2001 by YG (preliminary)
current version : june 21, 2002 by YG (RFC)

Like everything in the F-CPU project, it is a basis and subject
for constructive discussions and it should not be considered as
definitive. Everybody is asked to contribute to this decisive,
non-technical side of the project. I have cut&pasted some parts
of the previous "F-CPU license proposal". It is still incomplete.

However, time has come to make it more solid because all VHDL
sources should be released under this license. Michael's requests
and YG's comments begin to be included, using the European
strength of the author's rights law ("Droit d'Auteur" or
"Urheberrecht") on top of the Copyright/Copyleft things.

~~~~~~~~~~~~~~~~~~~~~~~~~INTRODUCTION~~~~~~~~~~~~~~~~~~~~~~~~~~~

The Freedom CPU project (F-CPU for short) is a fully
parametised 64+ bit SIMD CPU core available in source code.
Not only it is intended to be able to replace (one day) the best
existing RISC processors in workstations, but it is being developped
in a net-community environment by students as well as professionals
as a hobby. Because their work is done for free, they want it
to remain free, just like Linux or the GNU project. They use a
"Copyleft" license to protect their work but this is not a
"software-only" project : the GPL needs to be adapted.

The purpose of this file is also to introduce newcomers to
the F-CPU design philosophy and basic rules. Some more about this
can be read on the F-CPU mailing list(s) and manual.

Work on the F-CPU files started with assuming that the 
GNU Public License covers most of the project's needs.
However, the GPL doesn't apply to the "electronic" world
and the implementors are completely free to do whatever they
want with the derived physical devices. The main authors
felt that some points of the GNU license were not adapted
at all and could mislead potential users about the
team's intentions. So we have to define what is F-CPU and
what are the exact terms of use : a few of them differ
considerably from the FSF's document. The differences
will be explained, read the GPL too.

You don't have to read the rest of this file if you only want
to use the files without modification. For example, it is not
relevant if you just install the bundle and try to compile the
files. However, if you modify a file, add a new file, adapt a file
for compilation with a tool, build the circuit or add features,
you should carefully read this text.


~~~~~~~~~~~~~~~~~~~~~~~~~DEFINITIONS~~~~~~~~~~~~~~~~~~~~~~~~~~~

F-CPU is a "work of collaboration" : there is no central lead
and every contributor owns his "copyright" and accepts to
follow the general rules of the team. If you want to add a feature,
you don't need an authorization but you are bound by this license.
If you don't like the following terms, go play with another
project.

Unlike other projects, the copyright is not owned or versed to 
a single entity. We rely on each contributor's responsibility
and we often reinvent the wheel anyway but we apreciate when
our work is respected. We expect that this respect is passed
along each copy of our files.

F-CPU's work is released with a "Copyleft" license : the authors
use their copyright to specify how their work is redistributed
and used. This can also be enforced with the european
intellectual property rights which are less generic.

The F-CPU files fall into several categories :

 o All the project's documents use the GNU FDL
 o Presentations, articles and opinions belong to their authors
   unless otherwise noted.
 o Utilities and scripts use the GNU GPL (for example :
   C sources, compilation scripts or assembly code created
   in the frame of the F-CPU project)
 o F-CPU sources (in a Hardware Description Langage (HDL) such as
   VHDL or Verilog) are under a specific "F-CPU license" that is
   described here.

Like the GNU GPL, the F-CPU license allows the user to copy,
redistribute, examine and compile the sources almost completely
freely. However a high-level source code of a microprocessor
has some particular constraints that are not addressed by the
GPL, or in an unclear way.

This license applies to ALL HDL files that are integrated
into the processor core (as defined later). Insertion of a file
or functionality to the core implies that it must also be
distributed according to the F-CPU HDL license.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~GUIDELINES~~~~~~~~~~~~~~~~~~~~~~~~~


This license also contains a charter which is intended to provide
developpers with guidelines, "do and don't" rules that should be
followed to keep the project up and running. If a chip is built from
the F-CPU sources then distributed, the respect of these
rules will determine if the chip can be labelled as "a F-CPU".
The use of the F-CPU source files is completely free under
the terms of the F-CPU license, the implementation is not bound in any
way, but the F-CPU development team follows some basic rules.

o - "The name of the game is freedom".
  - "It is forbidden to forbid others".
  - "One's freedom ends where others' freedom starts".
  - "Desing and let design"
These basic rules favor reciprocal respect and positive
ununcumbered work.

o  We promote collaborative work, free communication and
unconstrained sharing of knowledge and know-how. This project is not
a way to earn money quickly and easily, but a mean to learn
technics in a community, with the goal of redistributing the
knowledge evenly. If you remember how you learnt things, you'll
be happy that what you redistribute helps others in the same way.

o  The distribution, modification and knowledge of the sources
(non physical forms of the design, as opposed to the "physical
implementation" of this design) must not be bound or restricted
in ANY way. This is a TINY but crucial difference from the GPL.

o  In particular, you need not be a customer of a F-CPU vendor
in order to access the sources of any F-CPU version or derived work.
The privacy rights (as promoted in the GPL) are opposed to the authors'
rights in this case.

o  Similarly, in-progress works must be available upon a single
request. An attempt to over-delay the transmission of the requested
files can be interpreted as a "guilty" behaviour. Ususally,
you don't need two weeks to email a file to a co-worker.
This measure is necessary to prevent people from arguing that
"i can't send it to you, it's an ongoing work". Blocking/stalling
development through obfuscation and delay is not welcome.

o  Furthermore, the source files must be freely available
on the Internet (under conditions that are described below)
if they are physically implemented. It is the most basic
form of user support which does not harm anybody. If the sources
are well documented and work correctly, nobody will complain
that the manual you wrote is imprecise or out of date.

o  The other reason for this break from the GPL principle is
simple : the F-CPU is not the property of an individual or a company,
but it belongs to everybody. Anybody must be able to examine,
use or modify any version of any document because it is not
the exclusive property of a single person. If you have your
kid in a kindergarten, you think it is normal to visit the
location and see if your kid is safe or if nothing wrong can
happen. Same goes with software that we write in community.

o  Do not promote secrecy. Just as the sources came to you
openly, you should not promote secrets or hidden features.
It is forbidden to patent existing features used in the F-CPU.
After all, since they are openly published, they are prior art.
The F-CPU forums and mailing lists provide you with different
ways to share your remarks, additions, propositions, etc.
Secrecy has no advantage in the F-CPU community and corresponds
to a self-exclusion from the group. On top of that, you would
deprive yourself from skilled people's help and bug reports.

o  Do not bind the files to a proprietary software or obscure
file format. Anybody should be able to reuse your work without
being forced to acquire a specific software. Standard formats
are highly recommended (ISO, ANSI etc), GNU software is preferred,
freeware or public domain is ok, too. If you use a "specific"
software, you can add the required scripts or configuration files
that interface the F-CPU source with said software.

o  When a source file is modified, the developer must update
the comments and indicate his name, the date, and a short description
of the modifications. It is the easiest way to keep track of
the project's evolution. It is often overlooked in CVS environment,
read QUALITY.TXT for the rationale.

o  When a source file is added to the F-CPU file pool, it must
be distributed under the same terms as the others in this package.
The "F-CPU file pool" is defined later and comprises all the
files that are distributed here and that implement the F-CPU
processor core. The limit of the file is at the interface
defined by the top-level file. From a hierarchical point of view,
all the files included by this top level description are part of
the "F-CPU file pool" and are bound by this license.

o  Whenever a file is created or modified, the developper has to
include his personal copyright notice. It is a crucial legal
protection mechanism because different copyrights get thus
inter-mixed. This strengthens the relationships and dependencies between
the developpers. If a legal problem arises, a single developper
will not be attacked alone. Similarly, more programers have more
weight than an isolated one, if a problem arises.

o  Please : document and comment your modifications or additions,
because/as you can read and understand the existing sources. The lack of
decent documentation, just like obfuscated source code, slows down
the development team's work.

o  All documentations written about the F-CPU and the associated
software must be distributed under the terms of the GFDL (GNU Free
Documentation License). This applies to manuals, technical books,
drafts or requests for comments (RFCs).

o  Personal opinions, articles or other individual expressions
about the F-CPU are well covered by the copyright laws (that
means that an article or conference doesn't need to be bound
by the GFDL).

o  Even though the GLP allows to sell physical media containing
GPL'd files, the present guidelines only allow it if the same files
are available for free on the Internet with the conditions described
here. This is consistent with the fact that the packaging of the
files on a physical medium is a service only, it is not an exception
to the present guidelines.

o  The modification of the F-CPU design is allowed under
the sole condition that you agree to and respect these guidelines.

o  You do not have to register yourself in a database, you do not need
any authorization of any kind and you can do whatever you want with
the F-CPU design, except : changing the copyright notices, altering
these guidelines or use them against their intent (explained in this
document).

o  Unlike some "Open" standards and initiatives, you do not need to
fill in a form, pay a fee or a license to use the F-CPU design. In
return, you may not restrict the direct access to the design that you
have modified, even for the sake of collecting statistics or polling
(or, in general, collecting individual/personal data or going through
advertising pages). You can apply the privacy rights here.

o  Binding : As long as the files are not altered, it is possible
to "compile"/"synthesise" the F-CPU source code for any platform
or technology. It is the same thing as compiling GPL-protected C
sources for different CPUs, whatever their implementation or compiler.
This means that you can use "proprietary" memory modules or cell
libraries if their behaviour matches exactly the F-CPU specifications
and if the necessary support files are provided. Usually, when the
modules are automatically mapped by a synthesiser, there is no problem.
More generally, a "proprietary" implementation is allowed (only) if
this function is :
 - already specified and implemented by the F-CPU sources and
 - completely identical to the corresponding F-CPU sources and
 - generated automatically by a computer and all the generation
   parameters are distributed with the same F-CPU license

o  Extension of the license terms :
The GPL and this charter apply to all the files (and documents,
but under GFDL) that constitute the F-CPU project, which is
aimed at designing a CPU core, an Instruction Set Architecture
and the necessary support software.
 * This includes all the components inside the core : the execution
  pipeline, the scheduler, the memory buffers, the L1 cache, the
  BIST, the Special Registers, ...
 * This does not include components that are connected to the core
  through the F-CPU-defined interfaces (including clock, reset
  and memory signals). The F-CPU core communicates with other
  components through its memory interface, it can communicate
  with other other "external components" without requiring them
  to be available under this license.
In practice :
 - You can include the top level of the F-CPU design from another
   source file. You have to follow the present rules only for the
   F-CPU sources.
 - You can't directly connect proprietary designs inside the core.
   Either you integrate this design in the "F-CPU core sources"
   under the same F-CPU license or you design an interface that
   will become part of this core if you don't want to publish your
   design. Of course, this interface must not be bound by patents
   or other restrictions, as other users must use it with the
   same freedom as you have.

One can draw an analogy with the GNU EMACS software that can run
under Microsoft Windows without requiring Microsoft to release
its source code. In all cases, the problems boil down to the
openness of the chosen interface. F-CPU must only use unencumbered
standards and protocols.


o  To be continued... The ideas will not be changed but refined.



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DISCLAIMERS :
Nobody will endorse or encourage the use of the F-CPU's work
in any critical environment or where life is at sake, including
(but not limited to) space, medical or military equipment.
The Freedom CPU project is a pacific research effort and can
not be held responsible for the misuse of its material.
This is an ever-evolving collection of documents and source
code where bugs can hide easily. We count on your good sense
and your responsibility.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

These recommendations can be enforced through the copyright laws.
If we get enough legal advices, a F-CPU license will probably
be written. Remember : the Freedom Project is not the GNU project
and is not bound to the FSF. Stay tuned for any refinement.

