/shark/trunk/change_log.txt |
---|
0,0 → 1,202 |
S.Ha.R.K. Change Log |
*** Version 1.5.3 |
17/01/2007 |
- added missing licensing information |
- removed code that was not GPL compatible, including |
- $(SHARK)/ports/mpeg |
- $(SHARK)/ports/png |
- $(SHARK)/ports/mpg123 |
- removed unused $(SHARK)/config/hconf |
- modified CVS to move demos from "demos" CVS module to "unsupported" CVS module, including |
- demos/first |
- demos/sharkDecoderWithFSF |
- demos/loader |
*** Version 1.5.2.1 |
26/10/2006 |
- fixed a little bug to the library for serial port which made unusable the port |
- added clearer comments to config.mk files to make easier the fixes for compiling with older gcc versions |
*** Version 1.5.2 |
20/09/2006 |
- gcc 4x support |
*** Version 1.5.1 |
21/07/2006 |
- added dynalink support (thanks to LexN); |
- first working version of USB driver; |
- added functions needed by the USB driver; |
- IntDrive task is now created by posting a sys_atrunlevel event at RUNLEVEL_INIT instead of creating the task directly into the INTDRIVE_register_level; |
- changed exit key from Alt+C to Ctrl+C to all demos; |
- aster3.c demo: changed error message from test7.c to aster3.c; |
- BCA demo: .c inclusions removed and code splitted into .o object files; |
- resolved bug to printf function; |
- added features to the serial send; |
- serial port driver keeps track of initialized ports; |
- fixed error for tracer compilation; |
- tracer: removed the dependency from network for all the applications which do not use the tracer: now the tracer works with pointer to functions instead of direct calls; |
- tracer: added the support for output to disk; |
- tracer: event filtering added; |
- new INTERRUPT_task model; |
- demos initfiles IntDrive initialization updated to the new IntDrive interface; |
- demos initfiles updated to correctly manage the level register module; |
- fixed bug to group_activate_at which tried to activate tasks that failed during creation; |
- filtered out demos which do not compile properly; |
- makefiles dependencies resolved; |
- source cleaning; |
- pci6025e: ADC driver added; |
- new IntDrive implementation; |
- added sem.h (thanks to Ricardo Marau); |
*** Version 1.5 beta1 |
25/02/2005 |
- added modules directory in the include path; |
- moved modules; |
- shark_linuxc26.c: changes from "exit" to "return"; |
- new helloworld demo; |
- FIRST: change in table driven; |
- FIRST: change in number of supported local scheduler; |
- removed sys_end, sys_abort, using exit instead; |
- removed sys_abort_shutdown at the end of the shutdown task; |
- fixed bug to the panic function; |
- task_endcycle calls task_testcancel; |
- FIRST: new module for offline scheduling; |
- FIRST: change for the new API; |
- add macro to dummy group; |
- new FIRST demo; |
- FIRST: modifications for new api; |
- USB device driver experimental version (thanks to Claudio Melita); |
- FIRST: shared object function adjusted; |
- FIRST: new semaphore module for shared object; |
- CPUID enable function for Cyrix added; |
- added DVS options; |
- cpufreq demo added; |
- CPU26_get_frequencys bugfix; |
- CPU26_get_frequencys added; |
- sleep, usleep functions added; |
- multistate key_hook patched; |
*** Version 1.4 |
01/06/2004 |
- snapshop library added; |
*** Version 1.4 rc1 |
26/05/2004 |
- PCL833 driver added; |
- new task_activate, edf, rm modules version (thanks to Anton Cervin); |
- APIC restore function patched; |
- support for dynamic clk_per_msec change; |
- new network layer added; |
- safe TSR and APIC timer initialization added; |
- LINUX/DJGPP differences removed; |
*** Version 1.4 beta |
24/04/2004 |
- network demos with new PCI support added; |
- added NewNet and CPUFreq support; |
- added LINUX/DJGPP selection; |
- new sys_abort_shutdown function added; |
- fly2 demo added; |
- input demo added; |
- new input driver added (thanks to Nino); |
- CM7323 framegrabber support added; |
- new I2C from linux 2.6.0; |
- new Linux 2.6.0 driver layer support (thanks to Giacomo); |
- new Tracer introduced; |
*** Version 1.2.2 |
01/12/2003 |
- timer optimizations; |
- APIC Support; |
- configuration file added |
- new __TSC__ __APIC__ compiling options; |
*** Version 1.2.1 |
03/11/2003 |
- servo control library added; |
- TFTP driver added (thanks to Tool); |
- ABORT 64 removed in oneshot mode and sti/cli removed from irq_bind; |
- FIRST - S.Ha.R.K. Implementation; |
*** Version 1.2 |
18/06/2003 |
- BTTV framegrabber demo added; |
- BTTV library included; |
- BTTV frame grabber driver v1.0; |
*** Version 1.1 |
13/05/2003 |
- added demo astro (thanks to Nino); |
- added comments and sys_shutdown_message; |
- added shutdown message; |
- printings on abort added; |
- printings on sys_end added; |
- add support for real-time alloc function (OCERA); |
- add support for DIDMA; |
- advanced timer demo (thanks to Giacomo); |
- runlevel modified; |
*** Version 1.0 |
25/03/2003 |
- DOS_alloc and DOS_free removed; |
- svga/grx separation; |
- new include structure |
- PNG library added; |
- Zlib library added; |
*** Version 0.5 |
19/03/2003 |
- added linux32.mk to compile with gcc 3.2; |
- mesademo demo added; |
- mesatex demo added; |
- updated makefiles (for -I$(OSLIB), and dependencies); |
- resolved dependency problems with .s; |
- new libraries, updated makefiles; |
- added scan for more than 1 PCI bus; |
- updated makefiles to fix the OSLIB variable problem; |
- libc stdlib: added bserach and qsort functions; |
- MESA 5.0 OpenGL library import (thanks to Giacomo); |
- imported new OSLib (Jan 30, 2003) |
- OSLib updates; |
- new scheduling module interface; |
*** Version 0.4 |
28/11/2002 |
- removed task_delay |
- integration with IQUEUES |
- other fixes |
- removed old unused targets; |
- new demos imported from oldexamples |
- removed task_delay |
- other fixes |
- added usage for printk into pci driver; |
- basic examples added; |
- added DOSFS tracer type; |
- BCA demo added (thanks to Fabio Calabrese); |
- dosfs demo added; |
- jumpball demos added; |
- mix demos added; |
- National Instruments demos added; |
*** Version 0.3 |
29/03/2002 |
- first version; |
- README.TXT file has been added explaining how to create the config.mk file; |
/shark/trunk/license.txt |
---|
0,0 → 1,3 |
S.Ha.R.K. is released under the GPL license (see gpl.txt for the details). |
All files not expressly including a licensing disclaimer are licensed under the GPL license. |
Some packages are released with different, but GPL compatible, licenses. |
/shark/trunk/roadmap.txt |
---|
0,0 → 1,79 |
S.Ha.R.K. RoadMap |
Update 17/07/2006 |
A general overview of S.Ha.R.K. development. |
This map shows where S.Ha.R.K. is currently going. All the ideas and projects related to S.Ha.R.K. development are here reported. These items are not currently supported in the S.Ha.R.K. distribution, you can look at the drivers and modules webpage to know the actual working features. |
General project organization |
- New section for unsupported kernel modules |
- Remove the advanced demos section |
- Update to supported demos and kernel modules, and to unsupported demos section |
Drivers |
* IntDrive interrupt server |
- fix problems on PCs with specific chipset |
* New network layer |
- Porting of Etherboot drivers (support for more than 70 NICs) |
- real-time drivers (3Com 3c90xb cards supported) |
* USB stack |
- 90% done, including host, hub, and many devices |
- refine support for PWC chipset based webcam |
- add support for serial/USB adapters |
* Aquisition |
- port of the saa7134 framegrabber driver from Linux 2.6 kernel (60% done) |
- general purpose aquisition through external custom board |
* Power-aware computing |
- support for ACPI |
* External custom boards |
- Microchip dsPIC based custom board (80% done) |
- new servomotor drive library |
- wireless communication through custom board |
Documentation |
- Quick start guide (95% done) |
- Makefile structure |
- Drivers and ports interface |
- Supported demos |
- Change log |
Toward S.Ha.R.K. 2.0 |
- Memory protection |
- ARM (XSCALE) support |
- Hyper-threading support |
- Dynamic module allocation and loading |
If you want to join one o more developing projects, please write a mail to |
tullio.facchinetti "at" unipv.it |
Any collaboration is welcome!! |
/shark/trunk/symbols.txt |
---|
0,0 → 1,32 |
Library Symbols and Descriptions |
Old Drivers: |
__GRX__ The graphic driver for S3,TRIDENT,VESA cards |
__OLDCHAR__ The old keyboard driver (the new one is under construction) |
__6025E__ The 6025E card driver |
__PPORT__ The Parallel Port driver |
__PCLAB__ The PCL812 card driver |
__NET__ The patched network driver |
__PCL833__ The PCL833 card driver |
New Drivers |
__LINUXC26__ The Linux 2.6 Emulation Layer |
__PCI__ The Linux 2.6 PCI support |
__INPUT__ The Linux 2.6 Input Layer (KEYBOARD,MOUSE,SPEAKER,JOYSTICK) |
__FB__ The Linux 2.6 Frame Buffer Driver |
__I2C__ The Linux 2.6 I2C Driver |
__BTTV__ The Linux 2.6 Frame Grabber BTTV Driver |
Ports: |
__FFT__ FFT support (from FFTW) |
__OSMESA__ Off-Screen Mesa support (from Mesa 5.0) |
__PNG__ PNG Image file format support (from PNGlib) |
__ZLIB__ Zlib support (from zlib) |
__FIRST__ FSF Framework |
__TFTP__ TFTP Protocol |
__SERVO__ Servo Control Lib |
__SNAPSHOT__ Snapshot Library |
/shark/trunk/README.TXT |
---|
0,0 → 1,8 |
TO COMPILE THIS DISTRIBUTION: |
Edit SHARK.CFG to configure all the kernel parameters |
and "make" to compile. After this first time, every time |
you modify SHARK.CFG you must do a "make clean" and "make" |
Enjoy! |
/shark/trunk/gpl.txt |
---|
0,0 → 1,340 |
GNU GENERAL PUBLIC LICENSE |
Version 2, June 1991 |
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The licenses for most software are designed to take away your |
freedom to share and change it. By contrast, the GNU General Public |
License is intended to guarantee your freedom to share and change free |
software--to make sure the software is free for all its users. This |
General Public License applies to most of the Free Software |
Foundation's software and to any other program whose authors commit to |
using it. (Some other Free Software Foundation software is covered by |
the GNU Library General Public License instead.) You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
this service if you wish), that you receive source code or can get it |
if you want it, that you can change the software or use pieces of it |
in new free programs; and that you know you can do these things. |
To protect your rights, we need to make restrictions that forbid |
anyone to deny you these rights or to ask you to surrender the rights. |
These restrictions translate to certain responsibilities for you if you |
distribute copies of the software, or if you modify it. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must give the recipients all the rights that |
you have. You must make sure that they, too, receive or can get the |
source code. And you must show them these terms so they know their |
rights. |
We protect your rights with two steps: (1) copyright the software, and |
(2) offer you this license which gives you legal permission to copy, |
distribute and/or modify the software. |
Also, for each author's protection and ours, we want to make certain |
that everyone understands that there is no warranty for this free |
software. If the software is modified by someone else and passed on, we |
want its recipients to know that what they have is not the original, so |
that any problems introduced by others will not reflect on the original |
authors' reputations. |
Finally, any free program is threatened constantly by software |
patents. We wish to avoid the danger that redistributors of a free |
program will individually obtain patent licenses, in effect making the |
program proprietary. To prevent this, we have made it clear that any |
patent must be licensed for everyone's free use or not licensed at all. |
The precise terms and conditions for copying, distribution and |
modification follow. |
GNU GENERAL PUBLIC LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
0. This License applies to any program or other work which contains |
a notice placed by the copyright holder saying it may be distributed |
under the terms of this General Public License. The "Program", below, |
refers to any such program or work, and a "work based on the Program" |
means either the Program or any derivative work under copyright law: |
that is to say, a work containing the Program or a portion of it, |
either verbatim or with modifications and/or translated into another |
language. (Hereinafter, translation is included without limitation in |
the term "modification".) Each licensee is addressed as "you". |
Activities other than copying, distribution and modification are not |
covered by this License; they are outside its scope. The act of |
running the Program is not restricted, and the output from the Program |
is covered only if its contents constitute a work based on the |
Program (independent of having been made by running the Program). |
Whether that is true depends on what the Program does. |
1. You may copy and distribute verbatim copies of the Program's |
source code as you receive it, in any medium, provided that you |
conspicuously and appropriately publish on each copy an appropriate |
copyright notice and disclaimer of warranty; keep intact all the |
notices that refer to this License and to the absence of any warranty; |
and give any other recipients of the Program a copy of this License |
along with the Program. |
You may charge a fee for the physical act of transferring a copy, and |
you may at your option offer warranty protection in exchange for a fee. |
2. You may modify your copy or copies of the Program or any portion |
of it, thus forming a work based on the Program, and copy and |
distribute such modifications or work under the terms of Section 1 |
above, provided that you also meet all of these conditions: |
a) You must cause the modified files to carry prominent notices |
stating that you changed the files and the date of any change. |
b) You must cause any work that you distribute or publish, that in |
whole or in part contains or is derived from the Program or any |
part thereof, to be licensed as a whole at no charge to all third |
parties under the terms of this License. |
c) If the modified program normally reads commands interactively |
when run, you must cause it, when started running for such |
interactive use in the most ordinary way, to print or display an |
announcement including an appropriate copyright notice and a |
notice that there is no warranty (or else, saying that you provide |
a warranty) and that users may redistribute the program under |
these conditions, and telling the user how to view a copy of this |
License. (Exception: if the Program itself is interactive but |
does not normally print such an announcement, your work based on |
the Program is not required to print an announcement.) |
These requirements apply to the modified work as a whole. If |
identifiable sections of that work are not derived from the Program, |
and can be reasonably considered independent and separate works in |
themselves, then this License, and its terms, do not apply to those |
sections when you distribute them as separate works. But when you |
distribute the same sections as part of a whole which is a work based |
on the Program, the distribution of the whole must be on the terms of |
this License, whose permissions for other licensees extend to the |
entire whole, and thus to each and every part regardless of who wrote it. |
Thus, it is not the intent of this section to claim rights or contest |
your rights to work written entirely by you; rather, the intent is to |
exercise the right to control the distribution of derivative or |
collective works based on the Program. |
In addition, mere aggregation of another work not based on the Program |
with the Program (or with a work based on the Program) on a volume of |
a storage or distribution medium does not bring the other work under |
the scope of this License. |
3. You may copy and distribute the Program (or a work based on it, |
under Section 2) in object code or executable form under the terms of |
Sections 1 and 2 above provided that you also do one of the following: |
a) Accompany it with the complete corresponding machine-readable |
source code, which must be distributed under the terms of Sections |
1 and 2 above on a medium customarily used for software interchange; or, |
b) Accompany it with a written offer, valid for at least three |
years, to give any third party, for a charge no more than your |
cost of physically performing source distribution, a complete |
machine-readable copy of the corresponding source code, to be |
distributed under the terms of Sections 1 and 2 above on a medium |
customarily used for software interchange; or, |
c) Accompany it with the information you received as to the offer |
to distribute corresponding source code. (This alternative is |
allowed only for noncommercial distribution and only if you |
received the program in object code or executable form with such |
an offer, in accord with Subsection b above.) |
The source code for a work means the preferred form of the work for |
making modifications to it. For an executable work, complete source |
code means all the source code for all modules it contains, plus any |
associated interface definition files, plus the scripts used to |
control compilation and installation of the executable. However, as a |
special exception, the source code distributed need not include |
anything that is normally distributed (in either source or binary |
form) with the major components (compiler, kernel, and so on) of the |
operating system on which the executable runs, unless that component |
itself accompanies the executable. |
If distribution of executable or object code is made by offering |
access to copy from a designated place, then offering equivalent |
access to copy the source code from the same place counts as |
distribution of the source code, even though third parties are not |
compelled to copy the source along with the object code. |
4. You may not copy, modify, sublicense, or distribute the Program |
except as expressly provided under this License. Any attempt |
otherwise to copy, modify, sublicense or distribute the Program is |
void, and will automatically terminate your rights under this License. |
However, parties who have received copies, or rights, from you under |
this License will not have their licenses terminated so long as such |
parties remain in full compliance. |
5. You are not required to accept this License, since you have not |
signed it. However, nothing else grants you permission to modify or |
distribute the Program or its derivative works. These actions are |
prohibited by law if you do not accept this License. Therefore, by |
modifying or distributing the Program (or any work based on the |
Program), you indicate your acceptance of this License to do so, and |
all its terms and conditions for copying, distributing or modifying |
the Program or works based on it. |
6. Each time you redistribute the Program (or any work based on the |
Program), the recipient automatically receives a license from the |
original licensor to copy, distribute or modify the Program subject to |
these terms and conditions. You may not impose any further |
restrictions on the recipients' exercise of the rights granted herein. |
You are not responsible for enforcing compliance by third parties to |
this License. |
7. If, as a consequence of a court judgment or allegation of patent |
infringement or for any other reason (not limited to patent issues), |
conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot |
distribute so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you |
may not distribute the Program at all. For example, if a patent |
license would not permit royalty-free redistribution of the Program by |
all those who receive copies directly or indirectly through you, then |
the only way you could satisfy both it and this License would be to |
refrain entirely from distribution of the Program. |
If any portion of this section is held invalid or unenforceable under |
any particular circumstance, the balance of the section is intended to |
apply and the section as a whole is intended to apply in other |
circumstances. |
It is not the purpose of this section to induce you to infringe any |
patents or other property right claims or to contest validity of any |
such claims; this section has the sole purpose of protecting the |
integrity of the free software distribution system, which is |
implemented by public license practices. Many people have made |
generous contributions to the wide range of software distributed |
through that system in reliance on consistent application of that |
system; it is up to the author/donor to decide if he or she is willing |
to distribute software through any other system and a licensee cannot |
impose that choice. |
This section is intended to make thoroughly clear what is believed to |
be a consequence of the rest of this License. |
8. If the distribution and/or use of the Program is restricted in |
certain countries either by patents or by copyrighted interfaces, the |
original copyright holder who places the Program under this License |
may add an explicit geographical distribution limitation excluding |
those countries, so that distribution is permitted only in or among |
countries not thus excluded. In such case, this License incorporates |
the limitation as if written in the body of this License. |
9. The Free Software Foundation may publish revised and/or new versions |
of the General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the Program |
specifies a version number of this License which applies to it and "any |
later version", you have the option of following the terms and conditions |
either of that version or of any later version published by the Free |
Software Foundation. If the Program does not specify a version number of |
this License, you may choose any version ever published by the Free Software |
Foundation. |
10. If you wish to incorporate parts of the Program into other free |
programs whose distribution conditions are different, write to the author |
to ask for permission. For software which is copyrighted by the Free |
Software Foundation, write to the Free Software Foundation; we sometimes |
make exceptions for this. Our decision will be guided by the two goals |
of preserving the free status of all derivatives of our free software and |
of promoting the sharing and reuse of software generally. |
NO WARRANTY |
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
REPAIR OR CORRECTION. |
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGES. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
convey the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) 19yy <name of author> |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation; either version 2 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Also add information on how to contact you by electronic and paper mail. |
If the program is interactive, make it output a short notice like this |
when it starts in an interactive mode: |
Gnomovision version 69, Copyright (C) 19yy name of author |
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, the commands you use may |
be called something other than `show w' and `show c'; they could even be |
mouse-clicks or menu items--whatever suits your program. |
You should also get your employer (if you work as a programmer) or your |
school, if any, to sign a "copyright disclaimer" for the program, if |
necessary. Here is a sample; alter the names: |
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
`Gnomovision' (which makes passes at compilers) written by James Hacker. |
<signature of Ty Coon>, 1 April 1989 |
Ty Coon, President of Vice |
This General Public License does not permit incorporating your program into |
proprietary programs. If your program is a subroutine library, you may |
consider it more useful to permit linking proprietary applications with the |
library. If this is what you want to do, use the GNU Library General |
Public License instead of this License. |
/shark/trunk/gnuman.txt |
---|
0,0 → 1,532 |
Copyright (C) 1985, 1993 Free Software Foundation, Inc. |
Permission is granted to anyone to make or distribute verbatim copies |
of this document, in any medium, provided that the copyright notice and |
permission notice are preserved, and that the distributor grants the |
recipient permission for further redistribution as permitted by this |
notice. |
Modified versions may not be made. |
The GNU Manifesto |
***************** |
The GNU Manifesto which appears below was written by Richard |
Stallman at the beginning of the GNU project, to ask for |
participation and support. For the first few years, it was |
updated in minor ways to account for developments, but now it |
seems best to leave it unchanged as most people have seen it. |
Since that time, we have learned about certain common |
misunderstandings that different wording could help avoid. |
Footnotes added in 1993 help clarify these points. |
For up-to-date information about the available GNU software, |
please see the latest issue of the GNU's Bulletin. The list is |
much too long to include here. |
What's GNU? Gnu's Not Unix! |
============================ |
GNU, which stands for Gnu's Not Unix, is the name for the complete |
Unix-compatible software system which I am writing so that I can give it |
away free to everyone who can use it.(1) Several other volunteers are |
helping me. Contributions of time, money, programs and equipment are |
greatly needed. |
So far we have an Emacs text editor with Lisp for writing editor |
commands, a source level debugger, a yacc-compatible parser generator, |
a linker, and around 35 utilities. A shell (command interpreter) is |
nearly completed. A new portable optimizing C compiler has compiled |
itself and may be released this year. An initial kernel exists but |
many more features are needed to emulate Unix. When the kernel and |
compiler are finished, it will be possible to distribute a GNU system |
suitable for program development. We will use TeX as our text |
formatter, but an nroff is being worked on. We will use the free, |
portable X window system as well. After this we will add a portable |
Common Lisp, an Empire game, a spreadsheet, and hundreds of other |
things, plus on-line documentation. We hope to supply, eventually, |
everything useful that normally comes with a Unix system, and more. |
GNU will be able to run Unix programs, but will not be identical to |
Unix. We will make all improvements that are convenient, based on our |
experience with other operating systems. In particular, we plan to |
have longer file names, file version numbers, a crashproof file system, |
file name completion perhaps, terminal-independent display support, and |
perhaps eventually a Lisp-based window system through which several |
Lisp programs and ordinary Unix programs can share a screen. Both C |
and Lisp will be available as system programming languages. We will |
try to support UUCP, MIT Chaosnet, and Internet protocols for |
communication. |
GNU is aimed initially at machines in the 68000/16000 class with |
virtual memory, because they are the easiest machines to make it run |
on. The extra effort to make it run on smaller machines will be left |
to someone who wants to use it on them. |
To avoid horrible confusion, please pronounce the `G' in the word |
`GNU' when it is the name of this project. |
Why I Must Write GNU |
==================== |
I consider that the golden rule requires that if I like a program I |
must share it with other people who like it. Software sellers want to |
divide the users and conquer them, making each user agree not to share |
with others. I refuse to break solidarity with other users in this |
way. I cannot in good conscience sign a nondisclosure agreement or a |
software license agreement. For years I worked within the Artificial |
Intelligence Lab to resist such tendencies and other inhospitalities, |
but eventually they had gone too far: I could not remain in an |
institution where such things are done for me against my will. |
So that I can continue to use computers without dishonor, I have |
decided to put together a sufficient body of free software so that I |
will be able to get along without any software that is not free. I |
have resigned from the AI lab to deny MIT any legal excuse to prevent |
me from giving GNU away. |
Why GNU Will Be Compatible with Unix |
==================================== |
Unix is not my ideal system, but it is not too bad. The essential |
features of Unix seem to be good ones, and I think I can fill in what |
Unix lacks without spoiling them. And a system compatible with Unix |
would be convenient for many other people to adopt. |
How GNU Will Be Available |
========================= |
GNU is not in the public domain. Everyone will be permitted to |
modify and redistribute GNU, but no distributor will be allowed to |
restrict its further redistribution. That is to say, proprietary |
modifications will not be allowed. I want to make sure that all |
versions of GNU remain free. |
Why Many Other Programmers Want to Help |
======================================= |
I have found many other programmers who are excited about GNU and |
want to help. |
Many programmers are unhappy about the commercialization of system |
software. It may enable them to make more money, but it requires them |
to feel in conflict with other programmers in general rather than feel |
as comrades. The fundamental act of friendship among programmers is the |
sharing of programs; marketing arrangements now typically used |
essentially forbid programmers to treat others as friends. The |
purchaser of software must choose between friendship and obeying the |
law. Naturally, many decide that friendship is more important. But |
those who believe in law often do not feel at ease with either choice. |
They become cynical and think that programming is just a way of making |
money. |
By working on and using GNU rather than proprietary programs, we can |
be hospitable to everyone and obey the law. In addition, GNU serves as |
an example to inspire and a banner to rally others to join us in |
sharing. This can give us a feeling of harmony which is impossible if |
we use software that is not free. For about half the programmers I |
talk to, this is an important happiness that money cannot replace. |
How You Can Contribute |
====================== |
I am asking computer manufacturers for donations of machines and |
money. I'm asking individuals for donations of programs and work. |
One consequence you can expect if you donate machines is that GNU |
will run on them at an early date. The machines should be complete, |
ready to use systems, approved for use in a residential area, and not |
in need of sophisticated cooling or power. |
I have found very many programmers eager to contribute part-time |
work for GNU. For most projects, such part-time distributed work would |
be very hard to coordinate; the independently-written parts would not |
work together. But for the particular task of replacing Unix, this |
problem is absent. A complete Unix system contains hundreds of utility |
programs, each of which is documented separately. Most interface |
specifications are fixed by Unix compatibility. If each contributor |
can write a compatible replacement for a single Unix utility, and make |
it work properly in place of the original on a Unix system, then these |
utilities will work right when put together. Even allowing for Murphy |
to create a few unexpected problems, assembling these components will |
be a feasible task. (The kernel will require closer communication and |
will be worked on by a small, tight group.) |
If I get donations of money, I may be able to hire a few people full |
or part time. The salary won't be high by programmers' standards, but |
I'm looking for people for whom building community spirit is as |
important as making money. I view this as a way of enabling dedicated |
people to devote their full energies to working on GNU by sparing them |
the need to make a living in another way. |
Why All Computer Users Will Benefit |
=================================== |
Once GNU is written, everyone will be able to obtain good system |
software free, just like air.(2) |
This means much more than just saving everyone the price of a Unix |
license. It means that much wasteful duplication of system programming |
effort will be avoided. This effort can go instead into advancing the |
state of the art. |
Complete system sources will be available to everyone. As a result, |
a user who needs changes in the system will always be free to make them |
himself, or hire any available programmer or company to make them for |
him. Users will no longer be at the mercy of one programmer or company |
which owns the sources and is in sole position to make changes. |
Schools will be able to provide a much more educational environment |
by encouraging all students to study and improve the system code. |
Harvard's computer lab used to have the policy that no program could be |
installed on the system if its sources were not on public display, and |
upheld it by actually refusing to install certain programs. I was very |
much inspired by this. |
Finally, the overhead of considering who owns the system software |
and what one is or is not entitled to do with it will be lifted. |
Arrangements to make people pay for using a program, including |
licensing of copies, always incur a tremendous cost to society through |
the cumbersome mechanisms necessary to figure out how much (that is, |
which programs) a person must pay for. And only a police state can |
force everyone to obey them. Consider a space station where air must |
be manufactured at great cost: charging each breather per liter of air |
may be fair, but wearing the metered gas mask all day and all night is |
intolerable even if everyone can afford to pay the air bill. And the |
TV cameras everywhere to see if you ever take the mask off are |
outrageous. It's better to support the air plant with a head tax and |
chuck the masks. |
Copying all or parts of a program is as natural to a programmer as |
breathing, and as productive. It ought to be as free. |
Some Easily Rebutted Objections to GNU's Goals |
============================================== |
"Nobody will use it if it is free, because that means they can't |
rely on any support." |
"You have to charge for the program to pay for providing the |
support." |
If people would rather pay for GNU plus service than get GNU free |
without service, a company to provide just service to people who have |
obtained GNU free ought to be profitable.(3) |
We must distinguish between support in the form of real programming |
work and mere handholding. The former is something one cannot rely on |
from a software vendor. If your problem is not shared by enough |
people, the vendor will tell you to get lost. |
If your business needs to be able to rely on support, the only way |
is to have all the necessary sources and tools. Then you can hire any |
available person to fix your problem; you are not at the mercy of any |
individual. With Unix, the price of sources puts this out of |
consideration for most businesses. With GNU this will be easy. It is |
still possible for there to be no available competent person, but this |
problem cannot be blamed on distribution arrangements. GNU does not |
eliminate all the world's problems, only some of them. |
Meanwhile, the users who know nothing about computers need |
handholding: doing things for them which they could easily do |
themselves but don't know how. |
Such services could be provided by companies that sell just |
hand-holding and repair service. If it is true that users would rather |
spend money and get a product with service, they will also be willing |
to buy the service having got the product free. The service companies |
will compete in quality and price; users will not be tied to any |
particular one. Meanwhile, those of us who don't need the service |
should be able to use the program without paying for the service. |
"You cannot reach many people without advertising, and you must |
charge for the program to support that." |
"It's no use advertising a program people can get free." |
There are various forms of free or very cheap publicity that can be |
used to inform numbers of computer users about something like GNU. But |
it may be true that one can reach more microcomputer users with |
advertising. If this is really so, a business which advertises the |
service of copying and mailing GNU for a fee ought to be successful |
enough to pay for its advertising and more. This way, only the users |
who benefit from the advertising pay for it. |
On the other hand, if many people get GNU from their friends, and |
such companies don't succeed, this will show that advertising was not |
really necessary to spread GNU. Why is it that free market advocates |
don't want to let the free market decide this?(4) |
"My company needs a proprietary operating system to get a |
competitive edge." |
GNU will remove operating system software from the realm of |
competition. You will not be able to get an edge in this area, but |
neither will your competitors be able to get an edge over you. You and |
they will compete in other areas, while benefiting mutually in this |
one. If your business is selling an operating system, you will not |
like GNU, but that's tough on you. If your business is something else, |
GNU can save you from being pushed into the expensive business of |
selling operating systems. |
I would like to see GNU development supported by gifts from many |
manufacturers and users, reducing the cost to each.(5) |
"Don't programmers deserve a reward for their creativity?" |
If anything deserves a reward, it is social contribution. |
Creativity can be a social contribution, but only in so far as society |
is free to use the results. If programmers deserve to be rewarded for |
creating innovative programs, by the same token they deserve to be |
punished if they restrict the use of these programs. |
"Shouldn't a programmer be able to ask for a reward for his |
creativity?" |
There is nothing wrong with wanting pay for work, or seeking to |
maximize one's income, as long as one does not use means that are |
destructive. But the means customary in the field of software today |
are based on destruction. |
Extracting money from users of a program by restricting their use of |
it is destructive because the restrictions reduce the amount and the |
ways that the program can be used. This reduces the amount of wealth |
that humanity derives from the program. When there is a deliberate |
choice to restrict, the harmful consequences are deliberate destruction. |
The reason a good citizen does not use such destructive means to |
become wealthier is that, if everyone did so, we would all become |
poorer from the mutual destructiveness. This is Kantian ethics; or, |
the Golden Rule. Since I do not like the consequences that result if |
everyone hoards information, I am required to consider it wrong for one |
to do so. Specifically, the desire to be rewarded for one's creativity |
does not justify depriving the world in general of all or part of that |
creativity. |
"Won't programmers starve?" |
I could answer that nobody is forced to be a programmer. Most of us |
cannot manage to get any money for standing on the street and making |
faces. But we are not, as a result, condemned to spend our lives |
standing on the street making faces, and starving. We do something |
else. |
But that is the wrong answer because it accepts the questioner's |
implicit assumption: that without ownership of software, programmers |
cannot possibly be paid a cent. Supposedly it is all or nothing. |
The real reason programmers will not starve is that it will still be |
possible for them to get paid for programming; just not paid as much as |
now. |
Restricting copying is not the only basis for business in software. |
It is the most common basis because it brings in the most money. If it |
were prohibited, or rejected by the customer, software business would |
move to other bases of organization which are now used less often. |
There are always numerous ways to organize any kind of business. |
Probably programming will not be as lucrative on the new basis as it |
is now. But that is not an argument against the change. It is not |
considered an injustice that sales clerks make the salaries that they |
now do. If programmers made the same, that would not be an injustice |
either. (In practice they would still make considerably more than |
that.) |
"Don't people have a right to control how their creativity is |
used?" |
"Control over the use of one's ideas" really constitutes control over |
other people's lives; and it is usually used to make their lives more |
difficult. |
People who have studied the issue of intellectual property rights |
carefully (such as lawyers) say that there is no intrinsic right to |
intellectual property. The kinds of supposed intellectual property |
rights that the government recognizes were created by specific acts of |
legislation for specific purposes. |
For example, the patent system was established to encourage |
inventors to disclose the details of their inventions. Its purpose was |
to help society rather than to help inventors. At the time, the life |
span of 17 years for a patent was short compared with the rate of |
advance of the state of the art. Since patents are an issue only among |
manufacturers, for whom the cost and effort of a license agreement are |
small compared with setting up production, the patents often do not do |
much harm. They do not obstruct most individuals who use patented |
products. |
The idea of copyright did not exist in ancient times, when authors |
frequently copied other authors at length in works of non-fiction. This |
practice was useful, and is the only way many authors' works have |
survived even in part. The copyright system was created expressly for |
the purpose of encouraging authorship. In the domain for which it was |
invented--books, which could be copied economically only on a printing |
press--it did little harm, and did not obstruct most of the individuals |
who read the books. |
All intellectual property rights are just licenses granted by society |
because it was thought, rightly or wrongly, that society as a whole |
would benefit by granting them. But in any particular situation, we |
have to ask: are we really better off granting such license? What kind |
of act are we licensing a person to do? |
The case of programs today is very different from that of books a |
hundred years ago. The fact that the easiest way to copy a program is |
from one neighbor to another, the fact that a program has both source |
code and object code which are distinct, and the fact that a program is |
used rather than read and enjoyed, combine to create a situation in |
which a person who enforces a copyright is harming society as a whole |
both materially and spiritually; in which a person should not do so |
regardless of whether the law enables him to. |
"Competition makes things get done better." |
The paradigm of competition is a race: by rewarding the winner, we |
encourage everyone to run faster. When capitalism really works this |
way, it does a good job; but its defenders are wrong in assuming it |
always works this way. If the runners forget why the reward is offered |
and become intent on winning, no matter how, they may find other |
strategies--such as, attacking other runners. If the runners get into |
a fist fight, they will all finish late. |
Proprietary and secret software is the moral equivalent of runners |
in a fist fight. Sad to say, the only referee we've got does not seem |
to object to fights; he just regulates them ("For every ten yards you |
run, you can fire one shot"). He really ought to break them up, and |
penalize runners for even trying to fight. |
"Won't everyone stop programming without a monetary incentive?" |
Actually, many people will program with absolutely no monetary |
incentive. Programming has an irresistible fascination for some |
people, usually the people who are best at it. There is no shortage of |
professional musicians who keep at it even though they have no hope of |
making a living that way. |
But really this question, though commonly asked, is not appropriate |
to the situation. Pay for programmers will not disappear, only become |
less. So the right question is, will anyone program with a reduced |
monetary incentive? My experience shows that they will. |
For more than ten years, many of the world's best programmers worked |
at the Artificial Intelligence Lab for far less money than they could |
have had anywhere else. They got many kinds of non-monetary rewards: |
fame and appreciation, for example. And creativity is also fun, a |
reward in itself. |
Then most of them left when offered a chance to do the same |
interesting work for a lot of money. |
What the facts show is that people will program for reasons other |
than riches; but if given a chance to make a lot of money as well, they |
will come to expect and demand it. Low-paying organizations do poorly |
in competition with high-paying ones, but they do not have to do badly |
if the high-paying ones are banned. |
"We need the programmers desperately. If they demand that we stop |
helping our neighbors, we have to obey." |
You're never so desperate that you have to obey this sort of demand. |
Remember: millions for defense, but not a cent for tribute! |
"Programmers need to make a living somehow." |
In the short run, this is true. However, there are plenty of ways |
that programmers could make a living without selling the right to use a |
program. This way is customary now because it brings programmers and |
businessmen the most money, not because it is the only way to make a |
living. It is easy to find other ways if you want to find them. Here |
are a number of examples. |
A manufacturer introducing a new computer will pay for the porting of |
operating systems onto the new hardware. |
The sale of teaching, hand-holding and maintenance services could |
also employ programmers. |
People with new ideas could distribute programs as freeware, asking |
for donations from satisfied users, or selling hand-holding services. |
I have met people who are already working this way successfully. |
Users with related needs can form users' groups, and pay dues. A |
group would contract with programming companies to write programs that |
the group's members would like to use. |
All sorts of development can be funded with a Software Tax: |
Suppose everyone who buys a computer has to pay x percent of the |
price as a software tax. The government gives this to an agency |
like the NSF to spend on software development. |
But if the computer buyer makes a donation to software development |
himself, he can take a credit against the tax. He can donate to |
the project of his own choosing--often, chosen because he hopes to |
use the results when it is done. He can take a credit for any |
amount of donation up to the total tax he had to pay. |
The total tax rate could be decided by a vote of the payers of the |
tax, weighted according to the amount they will be taxed on. |
The consequences: |
* The computer-using community supports software development. |
* This community decides what level of support is needed. |
* Users who care which projects their share is spent on can |
choose this for themselves. |
In the long run, making programs free is a step toward the |
post-scarcity world, where nobody will have to work very hard just to |
make a living. People will be free to devote themselves to activities |
that are fun, such as programming, after spending the necessary ten |
hours a week on required tasks such as legislation, family counseling, |
robot repair and asteroid prospecting. There will be no need to be |
able to make a living from programming. |
We have already greatly reduced the amount of work that the whole |
society must do for its actual productivity, but only a little of this |
has translated itself into leisure for workers because much |
nonproductive activity is required to accompany productive activity. |
The main causes of this are bureaucracy and isometric struggles against |
competition. Free software will greatly reduce these drains in the |
area of software production. We must do this, in order for technical |
gains in productivity to translate into less work for us. |
---------- Footnotes ---------- |
(1) The wording here was careless. The intention was that nobody |
would have to pay for *permission* to use the GNU system. But the |
words don't make this clear, and people often interpret them as saying |
that copies of GNU should always be distributed at little or no charge. |
That was never the intent; later on, the manifesto mentions the |
possibility of companies providing the service of distribution for a |
profit. Subsequently I have learned to distinguish carefully between |
"free" in the sense of freedom and "free" in the sense of price. Free |
software is software that users have the freedom to distribute and |
change. Some users may obtain copies at no charge, while others pay to |
obtain copies--and if the funds help support improving the software, so |
much the better. The important thing is that everyone who has a copy |
has the freedom to cooperate with others in using it. |
(2) This is another place I failed to distinguish carefully between |
the two different meanings of "free". The statement as it stands is |
not false--you can get copies of GNU software at no charge, from your |
friends or over the net. But it does suggest the wrong idea. |
(3) Several such companies now exist. |
(4) The Free Software Foundation raises most of its funds from a |
distribution service, although it is a charity rather than a company. |
If *no one* chooses to obtain copies by ordering from the FSF, it |
will be unable to do its work. But this does not mean that proprietary |
restrictions are justified to force every user to pay. If a small |
fraction of all the users order copies from the FSF, that is sufficient |
to keep the FSF afloat. So we ask users to choose to support us in |
this way. Have you done your part? |
(5) A group of computer companies recently pooled funds to support |
maintenance of the GNU C Compiler. |
/shark/trunk/copyleft.txt |
---|
0,0 → 1,143 |
What Is Copyleft? |
--------------------------------------------------------------------------- |
Table of Contents |
* What Is Copyleft? |
* Translations of the GPL |
* Other Texts to Read |
--------------------------------------------------------------------------- |
What Is Copyleft? |
The simplest way to make a program free is to put it in the public domain |
(18k characters), uncopyrighted. This allows people to share the program |
and their improvements, if they are so minded. But it also allows |
uncooperative people to convert the program into proprietary software (18k |
characters). They can make changes, many or few, and distribute the result |
as a proprietary product. People who receive the program in that modified |
form do not have the freedom that the original author gave them; the |
middleman has stripped it away. |
In the GNU project, our aim is to give all users the freedom to |
redistribute and change GNU software. If middlemen could strip off the |
freedom, we might have many users, but those users would not have freedom. |
So instead of putting GNU software in the public domain, we ``copyleft'' |
it. Copyleft says that anyone who redistributes the software, with or |
without changes, must pass along the freedom to further copy and change it. |
Copyleft guarantees that every user has freedom. |
Copyleft provides another benefit as well. People who write improvements in |
free software often work for companies or universities that would do almost |
anything to get money. A programmer may want to contribute her changes to |
the community, but her employer may ``see green'' and insist on turning the |
changes into a commercial product. |
When we explain to the employer that it is illegal to distribute the |
improved version except as free software, the employer usually decides to |
release it as free software rather than throw it away. |
To copyleft a program, first we copyright it; then we add distribution |
terms, which are a legal instrument that gives everyone the rights to use, |
modify, and redistribute the program's code or any program derived from it |
but only if the distribution terms are unchanged. Thus, the code and the |
freedoms become legally inseparable. |
Proprietary software developers use copyright to take away the users' |
freedom; we use copyright to guarantee their freedom. That's why we reverse |
the name, changing ``copyright'' into ``copyleft.'' |
Copyleft is a general concept; there are many ways to fill in the details. |
In the GNU Project, the specific distribution terms that we use are |
contained in the GNU General Public License (20k characters) (GNU GPL). An |
alternate form, the GNU Library General Public License (27k characters) |
(GNU LGPL), applies to a few (but not all) GNU libraries. The library |
license permits linking the libraries into proprietary executables under |
certain conditions. |
The appropriate license is included in many manuals and in each GNU source |
code distribution (usually in files named COPYING (20k characters) and |
COPYING.LIB (27k characters)). |
The GNU GPL is designed so that you can easily apply it to your own program |
if you are the copyright holder. You don't have to modify the GNU GPL to do |
this, just add notices to your program which refer properly to the GNU GPL. |
If you would like to copyleft your program with the GNU GPL, please see the |
instructions at the end (20k characters) of the GPL text. If you would like |
to copyleft your library with the GNU LGPL, please see the instructions at |
the end (27k characters) of the LGPL text (note you can also use the |
ordinary GPL for libraries). |
Using the same distribution terms for many different programs makes it easy |
to copy code between various different programs. Since they all have the |
same distribution terms, there is no need to think about whether the terms |
are compatible. The Library GPL includes a provision that lets you alter |
the distribution terms to the ordinary GPL, so that you can copy code into |
another program covered by the GPL. |
--------------------------------------------------------------------------- |
Translations of the GPL |
Here are some translations of the GNU GPL done by others. |
* A Japanese translation of the GPL. |
* A German translation of the GPL. |
These versions are not official. Legally speaking, the original (English) |
version of the GPL is what specifies the actual distribution terms for GNU |
programs. |
The reason the FSF does not approve these translations as officially valid |
is that checking them would be difficult and expensive (needing the help of |
bilingual lawyers in other countries). Even worse, if an error did slip |
through, the results could be disastrous for the whole free software |
community. As long as the translations are unofficial, they can't do any |
harm, and we hope they help more people understand the GPL. |
--------------------------------------------------------------------------- |
Other Texts to Read |
This first group of articles directly address the philosophy of the GNU |
project and free software: |
* What is Free Software? |
* Why Software Should Not Have Owners |
* Selling Free Software Can Be Ok! |
* Categories of Free Software (18k characters) |
* Free software is more reliable! |
* What is the Free Software Foundation? |
* What is Copyleft? |
* Confusing Words which You Might Want to Avoid |
* History of the GNU Project |
* The GNU Manifesto (31k characters) |
* Why there are no GIF files on GNU web pages |
This second group of articles deal with related topics but are not directly |
about the GNU project: |
* How to Protect the Right to Write Software (independent of whether |
it's free or not) |
* Where the Copyright System and Government Plans are Leading Us |
* The Right Way to Tax DAT (22k characters) |
* Studies Find Reward Often No Motivator |
* A speech that Richard Stallman gave in 1986 at the Royal Institute of |
Technology in Sweden |
* How to Protect the Freedoms of Speech, Press, and Association on the |
Internet |
--------------------------------------------------------------------------- |
FSF & GNU inquiries & questions to gnu@prep.ai.mit.edu. Other ways to |
contact the FSF. |
Copyright (C) 1996, 1997 Free Software Foundation, Inc., 59 Temple Place - |
Suite 330, Boston, MA 02111, USA |
Verbatim copying and distribution is permitted in any medium, provided this |
notice is preserved. |
Updated: 4 Aug 1997 tower |
--------------------------------------------------------------------------- |