Misplaced Pages

Common Public Attribution License

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

The Common Public Attribution License ("CPAL") is a free software license approved by the Open Source Initiative in 2007. Its purpose is to be a general license for software distributed over a network. It is based on the Mozilla Public License , but it adds an attribution term paraphrased below:

#603396

91-464: […] the Original Developer may include […] a requirement that each time an Executable and Source Code or a Larger Work is launched or initially run […] a prominent display of the Original Developer's Attribution Information […] must occur on the graphic user interface employed by the end user to access such Covered Code […] The CPAL also adds the following section discussing "network use" which triggers copyleft provisions when running CPAL licensed code on

182-453: A copyleft-licensed work are expected to reciprocate the author's action of copyleft-licensing the software by also copyleft-licensing any derivatives they might have made. Because of this requirement, copyleft licenses have also been described as "viral" due to their self-perpetuating terms. In addition to restrictions on copying, copyleft licenses address other possible impediments. They ensure that rights cannot be later revoked , and require

273-526: A decade earlier than Common Lisp, Scheme is a more minimalist design. It has a much smaller set of standard features but with certain implementation features (such as tail-call optimization and full continuations ) not specified in Common Lisp. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme. Scheme continues to evolve with

364-513: A divisive issue in the ideological strife between the Open Source Initiative and the free software movement . However, there is evidence that copyleft is both accepted and proposed by both parties: " Viral license " is a pejorative name for copyleft licenses. It originates from the terms 'General Public Virus' or 'GNU Public Virus' (GPV), which dates back to 1990, a year after the GPLv1

455-419: A fee. Unlike similar permissive licenses that also grant these freedoms, copyleft licenses also ensure that any modified versions of a work covered by a copyleft license must also grant these freedoms. Thus, copyleft licenses have conditions: that modifications of any work licensed under a copyleft license must be distributed under a compatible copyleft scheme and that the distributed modified work must include

546-407: A flexible and powerful form of dynamic dispatch . It has served as the template for many subsequent Lisp (including Scheme ) object systems, which are often implemented via a metaobject protocol , a reflective meta-circular design in which the object system is defined in terms of itself: Lisp was only the second language after Smalltalk (and is still one of the very few languages) to possess such

637-617: A great compliment because it transmits the full flavour of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts. Largely because of its resource requirements with respect to early computing hardware (including early microprocessors), Lisp did not become as popular outside of the AI community as Fortran and the ALGOL -descended C language. Because of its suitability to complex and dynamic applications, Lisp enjoyed some resurgence of popular interest in

728-460: A language others considered antiquated. New Lisp programmers often describe the language as an eye-opening experience and claim to be substantially more productive than in other languages. This increase in awareness may be contrasted to the " AI winter " and Lisp's brief gain in the mid-1990s. As of 2010 , there were eleven actively maintained Common Lisp implementations. The open source community has created new supporting infrastructure: CLiki

819-573: A letter in 1984 or 1985, on which was written: "Copyleft – all rights reversed ", which is a pun on the common copyright disclaimer " all rights reserved ". In France , a series of meetings taking place in 2000 under the title "Copyleft Attitude" gave birth to the Free Art License (FAL), theoretically valid in any jurisdiction bound by the Berne Convention and recommended by Stallman's own Free Software Foundation . Shortly thereafter,

910-576: A license that allows one to use GNU GPL in combination with a limited warranty. For projects which will be run over a network, a variation of the GNU GPL, called the Affero General Public License (GNU AGPL), ensures that the source code is available to users of software over a network. Copyleft is a distinguishing feature of some free software licenses, while other free-software licenses are not copyleft licenses because they do not require

1001-486: A means of modifying the work. Under fair use , however, copyleft licenses may be superseded, just like regular copyrights. Therefore, any person utilizing a source licensed under a copyleft license for works they invent is free to choose any other license (or none at all) provided they meet the fair use standard. Copyleft licenses necessarily make creative use of relevant rules and laws to enforce their provisions. For example, when using copyright law, those who contribute to

SECTION 10

#1732851819604

1092-445: A metaobject system. Many years later, Alan Kay suggested that as a result of the confluence of these features, only Smalltalk and Lisp could be regarded as properly conceived object-oriented programming systems. Lisp introduced the concept of automatic garbage collection , in which the system walks the heap looking for unused memory. Progress in modern sophisticated garbage collection algorithms such as generational garbage collection

1183-462: A network service and this way closing the so-called ASP loophole : The term “External Deployment” means the use, distribution, or communication of the Original Code or Modifications in any way such that the Original Code or Modifications may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over

1274-464: A network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Code or Modifications as a distribution under section 3.1 and make Source Code available under Section 3.2. The Debian project found the license to be incompatible with its Free Software Guidelines (DFSG) because of its attribution requirement. Copyleft Higher categories: Software , freedom Copyleft

1365-578: A paper in Communications of the ACM in April 1960, entitled "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I". He showed that with a few simple operators and a notation for anonymous functions borrowed from Church, one can build a Turing-complete language for algorithms. Information Processing Language was the first AI language, from 1955 or 1956, and already included many of

1456-420: A program's users, no matter what subsequent revisions anyone made to the original program. This original GPL did not grant rights to the public at large, only those who had already received the program; but it was the best that could be done under existing law. The new license was not at this time given the copyleft label. Richard Stallman stated that the use of "Copyleft" comes from Don Hopkins , who mailed him

1547-512: A separate, unrelated initiative in the United States yielded the Creative Commons license , available since 2001 in several different versions (only some of which can be described as copyleft) and more specifically tailored to U.S. law. While copyright law gives software authors control over copying, distribution and modification of their works, the goal of copyleft is to give all users of

1638-728: A series of standards (Revised Report on the Algorithmic Language Scheme) and a series of Scheme Requests for Implementation . Clojure is a dialect of Lisp that targets mainly the Java virtual machine , and the Common Language Runtime (CLR), the Python VM, the Ruby VM YARV , and compiling to JavaScript . It is designed to be a pragmatic general-purpose language. Clojure draws considerable influences from Haskell and places

1729-510: A single language. The new language, Common Lisp , was somewhat compatible with the dialects it replaced (the book Common Lisp the Language notes the compatibility of various constructs). In 1994, ANSI published the Common Lisp standard, "ANSI X3.226-1994 Information Technology Programming Language Common Lisp". Since inception, Lisp was closely connected with the artificial intelligence research community, especially on PDP-10 systems. Lisp

1820-437: A standard data structure—a quality much later dubbed " homoiconicity ". Thus, Lisp functions can be manipulated, altered or even created within a Lisp program without lower-level manipulations. This is generally considered one of the main advantages of the language with regard to its expressive power, and makes the language suitable for syntactic macros and meta-circular evaluation . A conditional using an if–then–else syntax

1911-427: A very strong emphasis on immutability. Clojure provides access to Java frameworks and libraries, with optional type hints and type inference , so that calls to Java can avoid reflection and enable fast primitive operations. Clojure is not designed to be backwards compatible with other Lisp dialects. Further, Lisp dialects are used as scripting languages in many applications, with the best-known being Emacs Lisp in

SECTION 20

#1732851819604

2002-417: A work (except the license itself) may only be modified and distributed under the terms of the work's copyleft license. Partial copyleft, by contrast, exempts some parts of the work from the copyleft provisions, permitting distribution of some modifications under terms other than the copyleft license, or in some other way does not impose all the principles of copylefting on the work. An example of partial copyleft

2093-410: A work the freedom and permission to reproduce, adapt , or distribute it, copyleft licenses are distinct from other types of copyright licenses that limit such freedoms. Instead of allowing a work to fall completely into the public domain , where no ownership of copyright is claimed, copyleft allows authors to impose restrictions on the use of their work. One of the main restrictions imposed by copyleft

2184-490: A work under copyleft usually must gain, defer, or assign copyright holder status. By submitting the copyright of their contributions under a copyleft license, they deliberately give up some of the rights that normally follow from copyright, including the right to be the unique distributor of copies of the work. Some laws used for copyleft licenses vary from one country to another, and may also be granted in terms that vary from country to country. For example, in some countries, it

2275-741: Is a mirrored version of the copyright symbol , © : a reversed C in a circle. A 2016 proposal to add the symbol to a future version of Unicode was accepted by the Unicode Technical Committee . The code point U+1F12F 🄯 COPYLEFT SYMBOL was added in Unicode 11 . The copyleft symbol has no legal status. As of 2024, the symbol is generally provided as standard in the system fonts of most current operating systems , but if need be it may be approximated with character U+2184 ↄ LATIN SMALL LETTER REVERSED C between parenthesis (ɔ) . On modern computer systems,

2366-808: Is a weekly news service, Weekly Lisp News . Common-lisp.net is a hosting site for open source Common Lisp projects. Quicklisp is a library manager for Common Lisp. Fifty years of Lisp (1958–2008) was celebrated at LISP50@OOPSLA. There are regular local user meetings in Boston, Vancouver, and Hamburg. Other events include the European Common Lisp Meeting, the European Lisp Symposium and an International Lisp Conference. The Scheme community actively maintains over twenty implementations . Several significant new implementations (Chicken, Gambit, Gauche, Ikarus, Larceny, Ypsilon) have been developed in

2457-520: Is a wiki that collects Common Lisp related information, the Common Lisp directory lists resources, #lisp is a popular IRC channel and allows the sharing and commenting of code snippets (with support by lisppaste , an IRC bot written in Lisp), Planet Lisp collects the contents of various Lisp-related blogs, on LispForum users discuss Lisp topics, Lispjobs is a service for announcing job offers and there

2548-539: Is acceptable to sell a software product without warranty, in standard GNU General Public License style, while in most European countries it is not permitted for a software distributor to waive all warranties regarding a sold product. For this reason, the extent of such warranties is specified in most European copyleft licenses, for example, the European Union Public Licence (EUPL), or the CeCILL license ,

2639-678: Is copyleft under the Creative Commons Attribution-ShareAlike license. Li-Chen Wang 's Palo Alto Tiny BASIC for the Intel 8080 appeared in Dr. Dobb's Journal in May 1976. The listing begins with the title, author's name, and date, but also has "@COPYLEFT ALL WRONGS RESERVED". The concept of copyleft was described in Richard Stallman 's GNU Manifesto in 1985, where he wrote: GNU

2730-401: Is determined by the extent to which its provisions can be imposed on all kinds of derivative works. Thus, the term "weak copyleft" refers to licenses where not all derivative works inherit the copyleft license; whether a derivative work inherits or not often depends on how it was derived. "Weak copyleft" licenses are often used to cover software libraries . This allows other software to link to

2821-565: Is implemented in Femtolisp, a dialect of Scheme (Julia is inspired by Scheme, which in turn is a Lisp dialect). In October 2019, Paul Graham released a specification for Bel , "a new dialect of Lisp." Common Lisp and Scheme represent two major streams of Lisp development. These languages embody significantly different design choices. Common Lisp is a successor to Maclisp . The primary influences were Lisp Machine Lisp , Maclisp, NIL , S-1 Lisp , Spice Lisp , and Scheme. It has many of

Common Public Attribution License - Misplaced Pages Continue

2912-480: Is intended for reading, not for computing. But he went ahead and did it. That is, he compiled the eval in my paper into IBM 704 machine code, fixing bugs , and then advertised this as a Lisp interpreter, which it certainly was. So at that point Lisp had essentially the form that it has today ... The result was a working Lisp interpreter which could be used to run Lisp programs, or more properly, "evaluate Lisp expressions". Two assembly language macros for

3003-427: Is more important than a copyleft. Common practice for using copyleft is to codify the copying terms for a work with a license . Any such license typically includes all the provisions and principles of copyleft inside the license's terms. This includes the freedom to use the work, study the work, copy, and share the work with others, modify the work, and distribute exact or modified versions of that work, with or without

3094-476: Is no reason to believe the GPL could force proprietary software to become free software, but could "try to enjoin the firm from distributing commercially a program that combined with the GPL'd code to form a derivative work, and to recover damages for infringement." If the firm "actually copied code from a GPL'd program, such a suit would be a perfectly ordinary assertion of copyright, which most private firms would defend if

3185-400: 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. Stallman's motivation was that a few years earlier he had worked on a Lisp interpreter. Symbolics asked to use

3276-421: Is that derived works must also be released under a compatible copyleft license. This is due to the underlying principle of copyleft: that anyone can benefit freely from the previous work of others, but that any modifications to that work should benefit everyone else as well, and thus must be released under similar terms. For this reason, copyleft licenses are also known as reciprocal licenses: any modifiers of

3367-525: Is that not everyone wants to share their work, and some share-alike agreements require that the whole body of work be shared, even if the author only wants to share a certain part. The plus side for an author of source code is that any modification to the code will not only benefit the original author but that the author will be recognized and ensure the same or compatible license terms cover the changed code. Some Creative Commons licenses are examples of share-alike copyleft licenses. Those licenses grant users of

3458-496: Is the GPL linking exception made for some software packages. The " share-alike " condition in some licenses imposes the requirement that any freedom that is granted regarding the original work must be granted on exactly the same or compatible terms in any derived work. This implies that any copyleft license is automatically a share-alike license but not the other way around, as some share-alike licenses include further restrictions such as prohibiting commercial use. Another restriction

3549-771: Is the legal technique of granting certain freedoms over copies of copyrighted works with the requirement that the same rights be preserved in derivative works . In this sense, freedoms refers to the use of the work for any purpose, and the ability to modify, copy, share, and redistribute the work, with or without a fee. Licenses which implement copyleft can be used to maintain copyright conditions for works ranging from computer software , to documents , art , and scientific discoveries, and similar approaches have even been applied to certain patents . Copyleft software licenses are considered protective or reciprocal in contrast with permissive free software licenses , and require that information necessary for reproducing and modifying

3640-507: Is written as s-expressions , or parenthesized lists. A function call or syntactic form is written as a list with the function or operator's name first, and the arguments following; for instance, a function f that takes three arguments would be called as ( f arg1 arg2 arg3 ) . John McCarthy began developing Lisp in 1958 while he was at the Massachusetts Institute of Technology (MIT). McCarthy published its design in

3731-406: Is written with its elements separated by whitespace , and surrounded by parentheses. For example, ( 1 2 foo ) is a list whose elements are the three atoms 1 , 2 , and foo . These values are implicitly typed: they are respectively two integers and a Lisp-specific data type called a "symbol", and do not have to be declared as such. The empty list () is also represented as

Common Public Attribution License - Misplaced Pages Continue

3822-686: The Emacs editor, AutoLISP and later Visual Lisp in AutoCAD , Nyquist in Audacity , and Scheme in LilyPond . The potential small size of a useful Scheme interpreter makes it particularly popular for embedded scripting. Examples include SIOD and TinyScheme , both of which have been successfully embedded in the GIMP image processor under the generic name "Script-fu". LIBREP, a Lisp interpreter by John Harper originally based on

3913-536: The Emacs Lisp language, has been embedded in the Sawfish window manager . Lisp has officially standardized dialects: R6RS Scheme , R7RS Scheme , IEEE Scheme, ANSI Common Lisp and ISO ISLISP . Paul Graham identifies nine important aspects of Lisp that distinguished it from existing languages like Fortran : Lisp was the first language where the structure of program code is represented faithfully and directly in

4004-537: The GNU General Public License (GPL), originally written by Richard Stallman , which was the first software copyleft license to see extensive use; the Mozilla Public License ; the Free Art License ; and the Creative Commons share-alike license condition —with the last two being intended for non-software works, such as documents and pictures, both academic or artistic in nature. Misplaced Pages

4095-535: The GNU Lesser General Public License and the Mozilla Public License . The GNU General Public License is an example of a license implementing strong copyleft. An even stronger copyleft license is the AGPL , which requires the publishing of the source code for software as a service use cases. The Sybase Open Watcom Public License is one of the strongest copyleft licenses, as this license closes

4186-554: The IBM 704 became the primitive operations for decomposing lists: car ( Contents of the Address part of Register number) and cdr ( Contents of the Decrement part of Register number), where "register" refers to registers of the computer's central processing unit (CPU). Lisp dialects still use car and cdr ( / k ɑːr / and / ˈ k ʊ d ər / ) for the operations that return

4277-590: The LLVM , the Java virtual machine , x86-64, PowerPC, Alpha, ARM, Motorola 68000, and MIPS, and operating systems such as Windows, macOS, Linux, Solaris, FreeBSD, NetBSD, OpenBSD, Dragonfly BSD, and Heroku. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy L. Steele, Jr. and Gerald Jay Sussman . It was designed to have exceptionally clear and simple semantics and few different ways to form expressions. Designed about

4368-482: The read–eval–print loop . The name LISP derives from "LISt Processor". Linked lists are one of Lisp's major data structures , and Lisp source code is made of lists. Thus, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or new domain-specific languages embedded in Lisp. The interchangeability of code and data gives Lisp its instantly recognizable syntax. All program code

4459-473: The 2000s (decade). The Revised Report on the Algorithmic Language Scheme standard of Scheme was widely accepted in the Scheme community. The Scheme Requests for Implementation process has created a lot of quasi-standard libraries and extensions for Scheme. User communities of individual Scheme implementations continue to grow. A new language standardization process was started in 2003 and led to

4550-482: The 2010s. Lisp is an expression oriented language . Unlike most other languages, no distinction is made between "expressions" and "statements" ; all code and data are written as expressions. When an expression is evaluated , it produces a value (possibly multiple values), which can then be embedded into other expressions. Each value can be any data type. McCarthy's 1958 paper introduced two types of syntax: Symbolic expressions ( S-expressions , sexps), which mirror

4641-491: The Extensible Markup Language ( XML ). The reliance on expressions gives the language great flexibility. Because Lisp functions are written as lists, they can be processed exactly like data. This allows easy writing of programs which manipulate other programs ( metaprogramming ). Many Lisp dialects exploit this feature using macro systems, which enables extension of the language almost without limit. A Lisp list

SECTION 50

#1732851819604

4732-646: The FSF asserts it does not and explicitly adds an exception allowing it in the license for the GNU Classpath re-implementation of the Java library. This ambiguity is an important difference between the GPL and the LGPL , in that the LGPL specifically allows linking or compiling works licensed under terms that are not compatible with the LGPL, with works covered by the LGPL. The copyleft symbol

4823-464: The GPL poses a threat to the intellectual property of any organization making use of it." In another context, Steve Ballmer declared that code released under GPL is useless to the commercial sector, since it can only be used if the resulting surrounding code is licensed under a GPL-compatible license, and described it thus as "a cancer that attaches itself in an intellectual property sense to everything it touches". In response to Microsoft's attacks on

4914-433: The GPL, several prominent free-software developers and advocates released a joint statement supporting the license. According to FSF compliance engineer David Turner, the term "viral license" creates a misunderstanding and a fear of using copylefted free software. While a person can catch a virus without active action, license conditions take effect upon effective usage or adoption. David McGowan has also written that there

5005-434: The Lisp interpreter, and Stallman agreed to supply them with a public domain version of his work. Symbolics extended and improved the Lisp interpreter, but when Stallman wanted access to the improvements that Symbolics had made to his interpreter, Symbolics refused. Stallman then, in 1984, proceeded to work towards eradicating this emerging behavior and culture of proprietary software , which he named software hoarding . This

5096-556: The Lisp model of incremental compilation , in which compiled and interpreted functions can intermix freely. The language used in Hart and Levin's memo is much closer to modern Lisp style than McCarthy's earlier code. Garbage collection routines were developed by MIT graduate student Daniel Edwards , prior to 1962. During the 1980s and 1990s, a great effort was made to unify the work on new Lisp dialects (mostly successors to Maclisp such as ZetaLisp and NIL (New Implementation of Lisp) into

5187-470: The R RS Scheme standard in 2007. Academic use of Scheme for teaching computer science seems to have declined somewhat. Some universities are no longer using Scheme in their computer science introductory courses; MIT now uses Python instead of Scheme for its undergraduate computer science program and MITx massive open online course. There are several new dialects of Lisp: Arc , Hy , Nu , Liskell , and LFE (Lisp Flavored Erlang). The parser for Julia

5278-456: The S-expression syntax is also responsible for much of Lisp's power: the syntax is simple and consistent, which facilitates manipulation by computer. However, the syntax of Lisp is not limited to traditional parentheses notation. It can be extended to include alternative notations. For example, XMLisp is a Common Lisp extension that employs the metaobject protocol to integrate S-expressions with

5369-481: The availability of both types of licenses, copyleft and permissive, allow authors to choose the type under which to license the works they invent. For documents, art, and other works other than software and code, the Creative Commons share-alike licensing system and the GNU Free Documentation License (GFDL) allow authors to apply limitations to certain sections of their work, exempting some parts of

5460-399: The character U+1F12F 🄯 COPYLEFT SYMBOL can be generated using one of these methods ( keyboard shortcuts ): Lisp programming language Lisp (historically LISP , an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation . Originally specified in the late 1950s, it is

5551-456: The communication is abstract, such as executing a command-line tool with a set of switches or interacting with a web server. As a consequence, even if one module of an otherwise non-copyleft product is placed under the GPL, it may still be legal for other components to communicate with it in ways such as these. This allowed communication may or may not include reusing libraries or routines via dynamic linking  – some commentators say it does,

SECTION 60

#1732851819604

5642-596: The concepts, such as list-processing and recursion, which came to be used in Lisp. McCarthy's original notation used bracketed " M-expressions " that would be translated into S-expressions . As an example, the M-expression car[cons[A,B]] is equivalent to the S-expression ( car ( cons A B )) . Once Lisp was implemented, programmers rapidly chose to use S-expressions, and M-expressions were abandoned. M-expressions surfaced again with short-lived attempts of MLisp by Horace Enea and CGOL by Vaughan Pratt . Lisp

5733-418: The core theme of an S-expression language. Moreover, each given dialect may have several implementations—for instance, there are more than a dozen implementations of Common Lisp . Differences between dialects may be quite visible—for instance, Common Lisp uses the keyword defun to name a function, but Scheme uses define . Within a dialect that is standardized, however, conforming implementations support

5824-596: The features of Lisp Machine Lisp (a large Lisp dialect used to program Lisp Machines ), but was designed to be efficiently implementable on any personal computer or workstation. Common Lisp is a general-purpose programming language and thus has a large language standard including many built-in data types, functions, macros and other language elements, and an object system ( Common Lisp Object System ). Common Lisp also borrowed certain features from Scheme such as lexical scoping and lexical closures . Common Lisp implementations are available for targeting different platforms such as

5915-415: The first item in a list and the rest of the list, respectively. The first complete Lisp compiler, written in Lisp, was implemented in 1962 by Tim Hart and Mike Levin at MIT, and could be compiled by simply having an existing LISP interpreter interpret the compiler code, producing machine code output able to be executed at a 40-fold improvement in speed over that of the interpreter. This compiler introduced

6006-504: The internal representation of code and data; and Meta expressions ( M-expressions ), which express functions of S-expressions. M-expressions never found favor, and almost all Lisps today use S-expressions to manipulate both code and data. The use of parentheses is Lisp's most immediately obvious difference from other programming language families. As a result, students have long given Lisp nicknames such as Lost In Stupid Parentheses , or Lots of Irritating Superfluous Parentheses . However,

6097-558: The library and be redistributed without the requirement for the linking software to also be licensed under the same terms. Only changes to the software licensed under a "weak copyleft" license become subject itself to copyleft provisions of such a license. This allows programs of any license to be compiled and linked against copylefted libraries such as glibc and then redistributed without any re-licensing required. The concrete effect of strong vs. weak copyleft has yet to be tested in court. Free-software licenses that use "weak" copyleft include

6188-438: The licensee to distribute derivative works under the same license. There is an ongoing debate as to which class of license provides the greater degree of freedom. This debate hinges on complex issues, such as the definition of freedom and whose freedoms are more important: the potential future recipients of a work (freedom from proprietization) or just the initial recipient (freedom to proprietize). However, current copyright law and

6279-415: The notation of Alonzo Church 's lambda calculus . It quickly became a favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science , including tree data structures , automatic storage management , dynamic typing , conditionals , higher-order functions , recursion , the self-hosting compiler , and

6370-427: The quality of their software to compete with free software. This may also have the effect of preventing monopolies in areas dominated by proprietary software. However, competition with proprietary software can also be a reason to forgo copyleft. The Free Software Foundation recommends that when "widespread use of the code is vital for advancing the cause of free software", allowing the code to be copied and used freely

6461-474: The same core language, but with different extensions and libraries. After having declined somewhat in the 1990s, Lisp has experienced a resurgence of interest after 2000. Most new activity has been focused around implementations of Common Lisp , Scheme , Emacs Lisp , Clojure , and Racket , and includes development of new portable libraries and applications. Many new Lisp programmers were inspired by writers such as Paul Graham and Eric S. Raymond to pursue

6552-435: The second-oldest high-level programming language still in common use, after Fortran . Lisp has changed since its early days, and many dialects have existed over its history. Today, the best-known general-purpose Lisp dialects are Common Lisp , Scheme , Racket , and Clojure . Lisp was originally created as a practical mathematical notation for computer programs , influenced by (though not originally derived from)

6643-411: The shoe were on the other foot." Richard Stallman has described this view with an analogy, saying, "The GPL's domain does not spread by proximity or contact, only by deliberate inclusion of GPL-covered code in your program. It spreads like a spider plant , not like a virus." Popular copyleft licenses, such as the GPL, have a clause allowing components to interact with non-copyleft components as long as

6734-714: The so-called "private usage" loophole of the GPL, and requires the publishing of source code in any use case. For this reason, the license is considered non-free by the Free Software Foundation , the GNU Project , and the Debian project. However, the license is accepted as open source by the OSI . The Design Science License (DSL) is a strong copyleft license that applies to any work, not only software or documentation, but also literature, artworks, music, photography, and video. DSL

6825-487: The software the same freedoms as copyleft licenses but do not require modified versions of that software to also include those freedoms. They have minimal restrictions on how the software can be used, modified, and redistributed, and are thus not copyleft licenses. Examples of this type of license include the X11 license , Apache license , Expat license , and the various BSD licenses . It has been suggested that copyleft has become

6916-698: The software. Some creators, such as Elastic , feel that preventing commercial enterprises from using and then selling their product under a proprietary license is also an incentive. Furthermore, the open-source culture of programming has been described as a gift economy , where social power is determined by an individual's contributions. Contributing to or creating open-source, copyleft-licensed software of high quality can lead to contributors gaining valuable experience and can lead to future career opportunities. Copyleft software has economic effects beyond individual creators. The presence of quality copyleft software can force proprietary software developers to increase

7007-406: The special atom nil . This is the only entity in Lisp which is both an atom and a list. Expressions are written as lists, using prefix notation . The first element in the list is the name of a function, the name of a macro, a lambda expression or the name of a "special operator" (see below). The remainder of the list are the arguments. For example, the function list returns its arguments as

7098-525: The work and its derivatives to be provided in a form that allows further modifications to be made. In software , this means requiring that the source code of the derived work be made available together with the software itself. The economic incentives to work on copyleft content can vary. Traditional copyright law is designed to promote progress by providing economic benefits to creators. When choosing to copyleft their work, content creators may seek complementary benefits like recognition from their peers. In

7189-449: The work from the full copyleft mechanism. In the case of the GFDL, these limitations include the use of invariant sections, which may not be altered by future editors. The initial intention of the GFDL was as a device for supporting the documentation of copylefted software. However, the result is that it can be used for any kind of document. The strength of the copyleft license governing a work

7280-464: The work must be made available to recipients of the software program, which are often distributed as executables . This information is most commonly in the form of source code files, which usually contain a copy of the license terms and acknowledge the authors of the code. Copyleft helps ensure everyone's rights to freely use the product but it prohibits owning, registering copyright and earning royalties from copyright. Notable copyleft licenses include

7371-602: The work the freedom to carry out all of these activities. These freedoms (from the Free Software Definition ) include: Similar terms are present in the Open Source Definition , a separate definition that contains similar freedoms. The vast majority of copyleft licenses satisfy both definitions, that of the Free Software Definition and Open Source Definition. By guaranteeing viewers and users of

7462-494: The world of computer programming, copyleft-licensed computer programs are often created by programmers to fill a need they have noticed. Such programs are often published with a copyleft license simply to ensure that subsequent users can also freely use modified versions of that program. This is especially true for creators who wish to prevent "open source hijacking", or the act of reusing open-source code and then adding extra restrictions to it, an action prevented by copyleft-licensing

7553-528: The wrongs he perceived it to perpetuate, he decided to work within the framework of existing law; in 1985, he created his own copyright license, the Emacs General Public License, the first copyleft license. This later evolved into the GNU General Public License , which is now one of the most popular free-software licenses. For the first time, a copyright holder had taken steps to ensure that the maximal number of rights be perpetually transferred to

7644-404: Was first implemented by Steve Russell on an IBM 704 computer using punched cards . Russell had read McCarthy's paper and realized (to McCarthy's surprise) that the Lisp eval function could be implemented in machine code . According to McCarthy Steve Russell said, look, why don't I program this eval  ... and I said to him, ho, ho, you're confusing theory with practice, this eval

7735-420: Was influenced by Smalltalk, with later dialects adopting object-oriented programming features (inheritance classes, encapsulating instances, message passing, etc.) in the 1970s. The Flavors object system introduced the concept of multiple inheritance and the mixin . The Common Lisp Object System provides multiple inheritance, multimethods with multiple dispatch , and first-class generic functions , yielding

7826-502: Was invented by McCarthy for a chess program written in Fortran . He proposed its inclusion in ALGOL , but it was not made part of the Algol 58 specification. For Lisp, McCarthy used the more general cond -structure. Algol 60 took up if–then–else and popularized it. Lisp deeply influenced Alan Kay , the leader of the research team that developed Smalltalk at Xerox PARC ; and in turn Lisp

7917-436: Was not the first time Stallman had dealt with proprietary software, but he deemed this interaction a "turning point". He justified software sharing, protesting that when sharing, the software online can be copied without the loss of the original piece of work. The software can be used multiple times without ever being damaged or worn out. As Stallman deemed it impractical in the short term to eliminate current copyright law and

8008-502: Was released. The name 'viral license' refers to the fact that any works derived from a copyleft work must preserve the copyleft permissions when distributed. Some advocates of the various BSD Licenses used the term derisively in regards to the GPL's tendency to absorb BSD-licensed code without allowing the original BSD work to benefit from it, while at the same time promoting itself as "freer" than other licenses. Microsoft vice-president Craig Mundie remarked, "This viral aspect of

8099-433: Was stimulated by its use in Lisp. Edsger W. Dijkstra in his 1972 Turing Award lecture said, With a few very basic principles at its foundation, it [LISP] has shown a remarkable stability. Besides that, LISP has been the carrier for a considerable number of in a sense our most sophisticated computer applications. LISP has jokingly been described as "the most intelligent way to misuse a computer". I think that description

8190-454: Was used as the implementation of the language Micro Planner , which was used in the famous AI system SHRDLU . In the 1970s, as AI research spawned commercial offshoots, the performance of existing Lisp systems became a growing issue, as programmers needed to be familiar with the performance ramifications of the various techniques and choices involved in the implementation of Lisp. Over its sixty-year history, Lisp has spawned many variations on

8281-475: Was written by Michael Stutz after he took an interest in applying GNU-style copyleft to non-software works, which later came to be called libre works . In the 1990s, it was used on music recordings, visual art, and even novels. It is not considered compatible with the GNU GPL by the Free Software Foundation. "Full" and "partial" copyleft relate to another issue. Full copyleft exists when all parts of

#603396