~~~~~~~~~~~~~~~~~~~~~~~~~~~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.