An application programming interface ( API ) is a connection between computers or between computer programs . It is a type of software interface , offering a service to other pieces of software . A document or standard that describes how to build such a connection or interface is called an API specification . A computer system that meets this standard is said to implement or expose an API. The term API may refer either to the specification or to the implementation.
97-644: The European Union Public Licence ( EUPL ) is a free software licence that was written and approved by the European Commission . The licence is available in 23 official languages of the European Union. All linguistic versions have the same validity. Its latest version, EUPL v1.2, was published in May 2017. Revised documentation for v1.2 was issued in late‑2021. Software, mainly produced by European administrations , has been licensed under
194-618: A copyleft license and another license is often only a one-way compatibility. This "one-way compatibility" characteristic is, for instanced, criticized by the Apache Foundation , who provides the more permissive Apache license which doesn't have this characteristic. Non-copyleft licenses, such as the FOSS permissive licenses , have a less complicated license interaction and normally exhibit better license compatibility. For example, if one license says "modified versions must mention
291-651: A dual-license setup, along with the GNU General Public License . The vast majority of free software uses undisputed free-software licenses; however, there have been many debates over whether or not certain other licenses qualify for the definition. Examples of licenses that provoked debate were the 1.x series of the Apple Public Source License , which were accepted by the Open Source Initiative but not by
388-544: A procedural language such as Lua could consist primarily of basic routines to execute code, manipulate data or handle errors while an API for an object-oriented language , such as Java, would provide a specification of classes and its class methods . Hyrum's law states that "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody." Meanwhile, several studies show that most applications that use an API tend to use
485-420: A software framework : a framework can be based on several libraries implementing several APIs, but unlike the normal use of an API, the access to the behavior built into the framework is mediated by extending its content with new classes plugged into the framework itself. Moreover, the overall program flow of control can be out of the control of the caller and in the framework's hands by inversion of control or
582-496: A user interface , an API is typically not visible to users. It is an "under the hood" portion of a software system, used for machine-to-machine communication. A well-designed API exposes only objects or actions needed by software or software developers. It hides details that have no use. This abstraction simplifies programming. Building software using APIs has been compared to using building-block toys, such as Lego bricks. Software services or software libraries are analogous to
679-449: A broad term describing much of the communication on the internet. When used in this way, the term API has overlap in meaning with the term communication protocol . The interface to a software library is one type of API. The API describes and prescribes the "expected behavior" (a specification) while the library is an "actual implementation" of this set of rules. A single API can have multiple implementations (or none, being abstract) in
776-517: A business ecosystem. The main policies for releasing an API are: An important factor when an API becomes public is its "interface stability". Changes to the API—for example adding new parameters to a function call—could break compatibility with the clients that depend on that API. When parts of a publicly presented API are subject to change and thus not stable, such parts of a particular API should be documented explicitly as "unstable". For example, in
873-460: A client would need to know for practical purposes. Documentation is crucial for the development and maintenance of applications using the API. API documentation is traditionally found in documentation files but can also be found in social media such as blogs, forums, and Q&A websites. Traditional documentation files are often presented via a documentation system, such as Javadoc or Pydoc, that has
970-435: A consistent appearance and structure. However, the types of content included in the documentation differs from API to API. In the interest of clarity, API documentation may include a description of classes and methods in the API as well as "typical usage scenarios, code snippets, design rationales, performance discussions, and contracts", but implementation details of the API services themselves are usually omitted. It can take
1067-580: A different position on licensing. The main difference is the belief that the copyleft licenses, particularly the GNU General Public License (GPL), are undesirably complicated and/or restrictive. The GPL requires any derivative work to also be released according to the GPL while the BSD license does not. Essentially, the BSD license's only requirement is to acknowledge the original authors, and poses no restrictions on how
SECTION 10
#17327809455821164-590: A discussion paper, "The seven pillars of wisdom", published in the framework of the adoption of the Interoperable Europe Act, was proposed for discussion by the writing author of the EUPL-1.2 and explains the philosophy behind the EUPL text. As from 2010, EU member states adopt or revise policies aimed to encourage – when appropriate – the open source distribution of public sector applications. The EUPL
1261-534: A given API, it is possible to infer the typical usages, as well the required contracts and directives. Then, templates can be used to generate natural language from the mined data. In 2010, Oracle Corporation sued Google for having distributed a new implementation of Java embedded in the Android operating system. Google had not acquired any permission to reproduce the Java API, although permission had been given to
1358-441: A modular software library in the 1940s for EDSAC , an early computer. The subroutines in this library were stored on punched paper tape organized in a filing cabinet . This cabinet also contained what Wilkes and Wheeler called a "library catalog" of notes about each subroutine and how to incorporate it into a program. Today, such a catalog would be called an API (or an API specification or API documentation) because it instructs
1455-470: A number of forms, including instructional documents, tutorials, and reference works. It'll also include a variety of information types, including guides and functionalities. Restrictions and limitations on how the API can be used are also covered by the documentation. For instance, documentation for an API function could note that its parameters cannot be null, that the function itself is not thread safe . Because API documentation tends to be comprehensive, it
1552-576: A position which faced opposition by Daniel J. Bernstein and others. In 2012 the dispute was finally resolved when Rosen accepted the CC0 as open source license , while admitting that contrary to his previous claims copyright can be waived away, backed by Ninth circuit decisions. In 2007, after years of draft discussion, the GPLv3 as major update of the GPLv2 was released. The release was controversial due to
1649-600: A problem which had not previously existed. This new threat was one of the reasons for writing version 3 of the GNU GPL in 2006. In recent years, a term coined tivoization describes a process where hardware restrictions are used to prevent users from running modified versions of the software on that hardware, in which the TiVo device is an example. It is viewed by the FSF as a way to turn free software to effectively non-free, and
1746-440: A programmer on how to use (or "call") each subroutine that the programmer needs. Wilkes and Wheeler's book The Preparation of Programs for an Electronic Digital Computer contains the first published API specification. Joshua Bloch considers that Wilkes and Wheeler "latently invented" the API, because it is more of a concept that is discovered than invented. The term "application program interface" (without an -ing suffix)
1843-643: A shipping company API that can be added to an eCommerce-focused website to facilitate ordering shipping services and automatically include current shipping rates, without the site developer having to enter the shipper's rate table into a web database. While "web API" historically has been virtually synonymous with web service , the recent trend (so-called Web 2.0 ) has been moving away from Simple Object Access Protocol ( SOAP ) based web services and service-oriented architecture (SOA) towards more direct representational state transfer (REST) style web resources and resource-oriented architecture (ROA). Part of this trend
1940-404: A similar mechanism. An API can specify the interface between an application and the operating system . POSIX , for example, specifies a set of common APIs that aim to enable an application written for a POSIX conformant operating system to be compiled for another POSIX conformant operating system. Linux and Berkeley Software Distribution are examples of operating systems that implement
2037-441: A small part of the API. Language bindings are also APIs. By mapping the features and capabilities of one language to an interface implemented in another language, a language binding allows a library or service written in one language to be used when developing in another language. Tools such as SWIG and F2PY, a Fortran -to- Python interface generator, facilitate the creation of such interfaces. An API can also be related to
SECTION 20
#17327809455822134-783: A user's rights if said user embarks on litigation proceedings against them due to patent litigation. Patent retaliation emerged in response to proliferation and abuse of software patents . The majority of free-software licenses require that modified software not claim to be unmodified. Some licenses also require that copyright holders be credited. One such example is version 2 of the GNU GPL, which requires that interactive programs that print warranty or license information, may not have these notices removed from modified versions intended for distribution. Licenses of software packages containing contradictory requirements render it impossible to combine source code from such packages in order to create new software packages. License compatibility between
2231-454: Is a challenge for writers to keep the documentation updated and for users to read it carefully, potentially yielding bugs. API documentation can be enriched with metadata information like Java annotations . This metadata can be used by the compiler, tools, and by the run-time environment to implement custom behaviors or custom handling. It is possible to generate API documentation in a data-driven manner. By observing many programs that use
2328-430: Is an API response . A weather forecasting app might integrate with a number of weather sensor APIs, gathering weather data from throughout a geographical area. An API is often compared to a contract . It represents an agreement between parties: a service provider who offers the API and the software developers who rely upon it. If the API remains stable, or if it changes only in predictable ways, developers' confidence in
2425-512: Is an architectural approach that revolves around providing a program interface to a set of services to different applications serving different types of consumers. When used in the context of web development , an API is typically defined as a set of specifications, such as Hypertext Transfer Protocol (HTTP) request messages, along with a definition of the structure of response messages, usually in an Extensible Markup Language ( XML ) or JavaScript Object Notation ( JSON ) format. An example might be
2522-522: Is created in one place dynamically can be posted and updated to multiple locations on the web. For example, Twitter's REST API allows developers to access core Twitter data and the Search API provides methods for developers to interact with Twitter Search and trends data. The design of an API has significant impact on its usage. The principle of information hiding describes the role of programming interfaces as enabling modular programming by hiding
2619-512: Is depending on the EU law is all the contrary: linking makes no derivatives and when merging source code licensed differently is a necessity, the resulting derivative can be licensed under a compatible license. For some of those, the copyleft is known to be “weaker” (i.e. the MPL), but this has no impact because according to the EUPL the compatible license will prevail when its provisions conflict with those of
2716-399: Is first recorded in a paper called Data structures and techniques for remote computer graphics presented at an AFIPS conference in 1968. The authors of this paper use the term to describe the interaction of an application—a graphics program in this case—with the rest of the computer system. A consistent application interface (consisting of Fortran subroutine calls) was intended to free
2813-445: Is formally mentioned in some of these policies: Free software licence Higher categories: Software , freedom A free-software license is a notice that grants the recipient of a piece of software extensive rights to modify and redistribute that software. These actions are usually prohibited by copyright law, but the rights-holder (usually the author) of a piece of software can remove these restrictions by accompanying
2910-410: Is generally believed that such agendas should not be served through software licenses; among other things because of practical aspects such as resulting legal uncertainties and problems with enforceability of vague, broad and/or subjective criteria or because tool makers are generally not held responsible for other people's use of their tools. Nevertheless some projects include legally non-binding pleas to
3007-568: Is not intended to be used directly by a person (the end user ) other than a computer programmer who is incorporating it into software. An API is often made up of different parts which act as tools or services that are available to the programmer. A program or a programmer that uses one of these parts is said to call that portion of the API. The calls that make up the API are also known as subroutines , methods, requests, or endpoints . An API specification defines these calls, meaning that it explains how to use or implement them. One purpose of APIs
European Union Public Licence - Misplaced Pages Continue
3104-453: Is now the most common meaning of the term API. The Semantic Web proposed by Tim Berners-Lee in 2001 included "semantic APIs" that recast the API as an open , distributed data interface rather than a software behavior interface. Proprietary interfaces and agents became more widespread than open ones, but the idea of the API as a data interface took hold. Because web APIs are widely used to exchange data of all kinds online, API has become
3201-694: Is qualitatively different from software and is subject to different requirements. Debian accepted, in a later resolution, that the GNU FDL complied with the Debian Free Software Guidelines when the controversial " invariant section " is removed, but considers it "still not free of trouble". Notwithstanding, most GNU documentation includes "invariant sections". Similarly, the FLOSS Manuals foundation, an organization devoted to creating manuals for free software, decided to eschew
3298-475: Is related to the Semantic Web movement toward Resource Description Framework (RDF), a concept to promote web-based ontology engineering technologies. Web APIs allow the combination of multiple APIs into new applications known as mashups . In the social media space, web APIs have allowed web communities to facilitate sharing content and data between communities and applications. In this way, content that
3395-440: Is to hide the internal details of how a system works, exposing only those parts a programmer will find useful and keeping them consistent even if the internal details later change. An API may be custom-built for a particular pair of systems, or it may be a shared standard allowing interoperability among many systems. The term API is often used to refer to web APIs , which allow communication between computers that are joined by
3492-529: Is to create an open-source licence available into 23 official languages of the European Union, and that is sure to conform to the existing copyright laws of the Member States of the European Union. The licence was developed with other open-source licences in mind and specifically authorizes covered works to be re-released under the following licences, when combined with their covered code in larger works: Many other OSI-approved licences are compatible with
3589-485: Is why they have chosen to prohibit it in GPLv3 . Most newly written free-software licenses since the late 1990s include some form of patent retaliation clauses. These measures stipulate that one's rights under the license (such as to redistribution), may be terminated if one attempts to enforce patents relating to the licensed software, under certain circumstances. As an example, the Apple Public Source License may terminate
3686-534: The Computer Programs Directive (Directive 91/250 EEC or 2009/24) . Recital 10 of this Directive defines interoperability and recital 15 states that for making two programs interoperable, the code needed can be copied, translated or adapted. For example, take program A (new original code just written) and program B (a program licensed by a third party), the developer/licensor of A, who is also a legitimate holder or recipient of B may reproduce in A
3783-533: The Fedora Project 's packages showed as most used licenses the GPL family, followed by MIT, BSD, the LGP family, Artistic (for Perl packages), LPPL (for texlive packages), and ASL. The GNU GPLv2+ was the single most popular license API In contrast to a user interface , which connects a computer to a person, an application programming interface connects computers or pieces of software to each other. It
3880-549: The Google Guava library, the parts that are considered unstable, and that might change soon, are marked with the Java annotation @Beta . A public API can sometimes declare parts of itself as deprecated or rescinded. This usually means that part of the API should be considered a candidate for being removed, or modified in a backward incompatible way. Therefore, these changes allow developers to transition away from parts of
3977-686: The Java language in particular. In the 1990s, with the spread of the internet , standards like CORBA , COM , and DCOM competed to become the most common way to expose API services. Roy Fielding 's dissertation Architectural Styles and the Design of Network-based Software Architectures at UC Irvine in 2000 outlined Representational state transfer (REST) and described the idea of a "network-based Application Programming Interface" that Fielding contrasted with traditional "library-based" APIs. XML and JSON web APIs saw widespread commercial adoption beginning in 2000 and continuing as of 2021. The web API
European Union Public Licence - Misplaced Pages Continue
4074-512: The Java remote method invocation API uses the Java Remote Method Protocol to allow invocation of functions that operate remotely, but appear local to the developer. Therefore, remote APIs are useful in maintaining the object abstraction in object-oriented programming ; a method call , executed locally on a proxy object, invokes the corresponding method on the remote object, using the remoting protocol, and acquires
4171-556: The Linux Standard Base provides an ABI. Remote APIs allow developers to manipulate remote resources through protocols , specific standards for communication that allow different technologies to work together, regardless of language or platform. For example, the Java Database Connectivity API allows developers to query many different types of databases with the same set of functions, while
4268-800: The Open Source Definition rather than the Free Software Definition . It considers Free Software Permissive license group to be a reference implementation of a Free Software license. Thus its requirements for approving licenses are different. The Free Software Foundation , the group that maintains the Free Software Definition , maintains a non-exhaustive list of free-software licences. The Free Software Foundation prefers copyleft ( share-alike ) free-software licensing rather than permissive free-software licensing for most purposes. Its list distinguishes between free-software licenses that are compatible or incompatible with
4365-479: The internet . There are also APIs for programming languages , software libraries , computer operating systems , and computer hardware . APIs originated in the 1940s, though the term did not emerge until the 1960s and 70s. An API opens a software system to interactions from the outside. It allows two software systems to communicate across a boundary — an interface — using mutually agreed-upon signals. In other words, an API connects software entities together. Unlike
4462-401: The source code available to anyone when they share or sell the object code . In this case, the source code must also contain any changes the developers may have made. If GPL code is used but not shared or sold, the code is not required to be made available and any changes may remain private. This permits developers and organizations to use and modify GPL code for private purposes (that is, when
4559-467: The source code may be used. As a result, BSD code can be used in proprietary software that only acknowledges the authors. For instance, Microsoft Windows NT 3.1 and macOS have proprietary IP stacks which are derived from BSD-licensed software. In extreme cases, the sub- or re-licensing possibilities with BSD or other permissive licenses might prevent further use in the open-source ecosystem. For instance, MathWorks ' FileExchange repository offers
4656-517: The " permissive " kind. In the mid-1980s, the GNU project produced copyleft free-software licenses for each of its software packages. An early such license (the "GNU Emacs Copying Permission Notice") was used for GNU Emacs in 1985, which was revised into the "GNU Emacs General Public License" in late 1985, and clarified in March 1987 and February 1988. Likewise, the similar GCC General Public License
4753-461: The API that will be removed or not supported in the future. Client code may contain innovative or opportunistic usages that were not intended by the API designers. In other words, for a library with a significant user base, when an element becomes part of the public API, it may be used in diverse ways. On February 19, 2020, Akamai published their annual “State of the Internet” report, showcasing
4850-489: The API will increase. This may increase their use of the API. The term API initially described an interface only for end-user-facing programs, known as application programs . This origin is still reflected in the name "application programming interface." Today, the term is broader, including also utility software and even hardware interfaces . The idea of the API is much older than the term itself. British computer scientists Maurice Wilkes and David Wheeler worked on
4947-536: The BSD license for user contributions but prevents with additional terms of use any usage beside their own proprietary MATLAB software, for instance with the FOSS GNU Octave software. Supporters of the BSD license argue that it is more free than the GPL because it grants the right to do anything with the source code, provided that the attribution is preserved. The approach has led to BSD code being used in widely used proprietary software. Proponents of
SECTION 50
#17327809455825044-668: The Department of Computer Science at the University of Victoria in Canada, presented a talk in 2013 about the methodological challenges in determining which are the most widely used free-software licenses, and showed how he could not replicate the result from Black Duck Software. A GitHub study in 2015 on their statistical data found that the MIT license was the most prominent FOSS license on that platform. In June 2016 an analysis of
5141-608: The EUPL since the launch of the European Open Source Observatory and Repository (OSOR) in October 2008, now part of Joinup collaborative platform. EUPL was originally intended to be used for the distribution of software developed in the framework of the IDABC programme, given its generic scope it was also suitable for use by any software developer. Its main goal is its focusing on being consistent with
5238-510: The EUPL v1.2 is that, unlike the GPL, it is compatible with all other reciprocal licenses listed in the EUPL appendix. Compatibility means that after merging the covered code with code covered by a compatible license, the resulting (combined) derivative work can be distributed under the compatible license. Another characteristic of the EUPL is that it is interoperable, without any " viral effect " in case of static and dynamic linking . This currently depends on European and national law, according to
5335-467: The EUPL. Since none of the compatible license prohibits the strong reciprocity implemented by the EUPL (obligation to publish and share the source code of derivatives, even distributed through a network) the copyleft resulting from the EUPL can be considered as strong. For this reason, the German lawyer Niklas Plutte created for the EUPL the new category of "Interoperable copyleft licence". In November 2023,
5432-607: The EUPL: JOINUP publish a general compatibility matrix between all OSI-approved licences and the EUPL. An overview of the EUPL licence and on what makes it different has been published in OSS-Watch. In 2020, the European Commission publishes its Joinup Licensing Assistant, which makes possible the selection and comparison of more than 50 licences, with access to their SPDX identifier and full text. EUPL v1.0
5529-537: The FSF's copyleft GNU General Public License . There exists an ongoing debate within the free-software community regarding the fine line between what restrictions can be applied and still be called "free". Only " public-domain software " and software under a public-domain-like license is restriction-free. Examples of public-domain-like licenses are, for instance, the WTFPL and the CC0 license. Permissive licenses might carry small obligations like attribution of
5626-636: The Free Software Foundation or Debian and the RealNetworks Public Source License , which was accepted by Open Source Initiative and Free Software Foundation but not by Debian . Also, the FSF recommended GNU Free Documentation License , which is incompatible with the GPL, was considered "non-free" by the Debian project around 2006, Nathanael Nerode, and Bruce Perens . The FSF argues that documentation
5723-603: The Free Software Foundation says it is not free because it infringes the so-called "zero freedom" of the GPL, that is, the freedom to use the software for any purpose. While historically the most widely used FOSS license has been the GPLv2, in 2015, according to Black Duck Software the permissive MIT license dethroned the GPLv2 to the second place while the permissive Apache License follows at third place. A study from 2012, which used publicly available data, criticized Black Duck Software for not publishing their methodology used in collecting statistics. Daniel German, professor in
5820-575: The GFDL in favor of the GPL for its texts in 2007, citing the incompatibility between the two, difficulties in implementing the GFDL, and the fact that the GFDL "does not allow for easy duplication and modification", especially for digital documentation. SLUC is a software license published in Spain in December 2006 to allow all but military use. The writers of the license maintain it is free software, but
5917-790: The GNU GPLv3 and AGPLv3. According to the EUPL v.1.1, the European Commission may publish other linguistic versions and/or new versions of the EUPL, so far this is required and reasonable, without reducing the scope of the rights granted by the Licence. Future upgrades will not be applicable automatically when software was expressly released "under the EUPL v.1.1 only". New provisions cover the Application service provider loophole of software distribution: Distribution and/or Communication (of software) includes providing on-line "access to its essential functionalities". An important characteristic of
SECTION 60
#17327809455826014-605: The GPL for the distributed computing software GPU in 2005, as well as several software projects trying to exclude use by big cloud providers. As there are several defining organizations and groups who publish definitions and guidelines about FOSS licenses, notably the FSF, the OSI, the Debian project, and the BSDs, there are sometimes conflicting opinions and interpretations. Many users and developers of BSD -based operating systems have
6111-443: The GPL point out that once code becomes proprietary, users are denied the freedoms that define free software. As a result, they consider the BSD license less free than the GPL, and that freedom is more than a lack of restriction. Since the BSD license restricts the right of developers to have changes recontributed to the community, neither it nor the GPL is "free" in the sense of "lacking any restrictions." The Debian project uses
6208-631: The GPLv2 is, by itself, not compatible with the GPLv3. Restrictions on use of a software ("use restrictions") are generally unacceptable according to the FSF, OSI , Debian , or the BSD-based distributions. Examples include prohibiting that the software be used for non-private applications, for military purposes, for comparison or benchmarking, for good use, for ethically questionable means, or in commercial organizations. While some restrictions on user freedom, e.g. concerning nuclear war, seem to enjoy moral support among most free software developers, it
6305-502: The POSIX APIs. Microsoft has shown a strong commitment to a backward-compatible API, particularly within its Windows API (Win32) library, so older applications may run on newer versions of Windows using an executable-specific setting called "Compatibility Mode". An API differs from an application binary interface (ABI) in that an API is source code based while an ABI is binary based. For instance, POSIX provides APIs while
6402-459: The US. In the German case the judge did not explicitly discuss the validity of the GPL's clauses but accepted that the GPL had to be adhered to: "If the GPL were not agreed upon by the parties, defendant would notwithstanding lack the necessary rights to copy, distribute, and make the software 'netfilter/iptables' publicly available." Because the defendant did not comply with the GPL, it had to cease use of
6499-401: The application programming interface separately from other interfaces, such as the query interface. Database professionals in the 1970s observed these different interfaces could be combined; a sufficiently rich application interface could support the other interfaces as well. This observation led to APIs that supported all types of programming, not just application programming. By 1990, the API
6596-540: The author but allow practically all code use cases. Certain licenses, namely the copyleft licenses , include intentionally stronger restrictions (especially on the distribution/distributor) in order to force derived projects to guarantee specific rights which can't be taken away. The free-software share-alike licenses written by Richard Stallman in the mid-1980s pioneered a concept known as "copyleft". Ensuing copyleft provisions stated that when modified versions of free software are distributed, they must be distributed under
6693-413: The bricks; they may be joined together via their APIs, composing a new software product. The process of joining is called integration . As an example, consider a weather sensor that offers an API. When a certain message is transmitted to the sensor, it will detect the current weather conditions and reply with a weather report. The message that activates the sensor is an API call , and the weather report
6790-497: The code or the project is not sold or otherwise shared) without being required to make their changes available to the public. Supporters of GPL claim that by mandating that derivative works remain under the GPL, it fosters the growth of free software and requires equal participation by all users. Opponents of GPL claim that "no license can guarantee future software availability" and that the disadvantages of GPL outweigh its advantages. Some also argue that restricting distribution makes
6887-612: The copyright holder of B. Unlike the "articles", the directive "recitals" are not transposed as such in national laws. However, recitals are part of European law: they are serving for understanding the scope and rationale of the law, and will be used by the court for interpreting the law, as the case may be. While recitals in EU Directives and Regulations are not considered to have independent legal value, they can expand an ambiguous provision's scope. They cannot restrict an unambiguous provision's scope, but they can be used to determine
6984-483: The copyright law in the Member States of the European Union , while retaining compatibility with popular free software licences such as the GNU General Public License . The first IDABC software packages mentioned are CIRCA groupware, IPM and the eLink G2G , G2C , G2B specification software. EUPL is the first open source licence to be released by an international governing body. A goal of this licence
7081-631: The criteria laid out in its Debian Free Software Guidelines (DFSG). The only notable cases where Debian and Free Software Foundation disagree are over the Artistic License and the GNU Free Documentation License (GFDL). Debian accepts the original Artistic License as being a free software license, but FSF disagrees. This has very little impact however since the Artistic License is almost always used in
7178-560: The developers in any advertising materials", and another license says "modified versions cannot contain additional attribution requirements", then, if someone combined a software package which uses one license with a software package which uses the other, it would be impossible to distribute the combination because these contradictory requirements cannot be fulfilled simultaneously. Thus, these two packages would be license-incompatible. When it comes to copyleft software licenses, they are not inherently compatible with other copyleft licenses, even
7275-516: The early times of software, sharing of software and source code was common in certain communities, for instance academic institutions. Before the US Commission on New Technological Uses of Copyrighted Works (CONTU) decided in 1974 that "computer programs, to the extent that they embody an author's original creation, are proper subject matter of copyright", software was not considered copyrightable. Therefore, software had no licenses attached and
7372-420: The form of different libraries that share the same programming interface. The separation of the API from its implementation can allow programs written in one language to use a library written in another. For example, because Scala and Java compile to compatible bytecode , Scala developers can take advantage of any Java API. API use can vary depending on the type of programming language involved. An API for
7469-476: The growing trend of cybercriminals targeting public API platforms at financial services worldwide. From December 2017 through November 2019, Akamai witnessed 85.42 billion credential violation attacks. About 20%, or 16.55 billion, were against hostnames defined as API endpoints. Of these, 473.5 million have targeted financial services sector organizations. API documentation describes what services an API offers and how to use those services, aiming to cover everything
7566-490: The implementation details of the modules so that users of modules need not understand the complexities inside the modules. Thus, the design of an API attempts to provide only the tools a user would expect. The design of programming interfaces represents an important part of software architecture , the organization of a complex piece of software. APIs are one of the more common ways technology companies integrate. Those that provide and use APIs are considered as being members of
7663-492: The license less free. Whereas proponents would argue that not preserving freedom during distribution would make it less free. For example, a non-copyleft license does not grant the author the freedom to see modified versions of his or her work if it gets publicly published, whereas a copyleft license does grant that freedom. During the 1990s, free-software licenses began including clauses, such as patent retaliation , in order to protect against software patent litigation cases –
7760-570: The mid-2000s, the open-source movement pushed and focused the free-software idea forward in the wider public and business perception. In the Dot-com bubble time, Netscape Communications ' step to release its webbrowser under a FOSS license in 1998, inspired many other companies to adapt to the FOSS ecosystem. In this trend companies and new projects ( Mozilla , Apache foundation , and Sun , see also this list ) wrote their own FOSS licenses, or adapted existing licenses. This License proliferation
7857-584: The nature of a provision, or to adapt it to new circumstances. It is important to make a distinction between the various flavours of the “Strong Copyleft” concept. According to the GPL/AGPL licensor vision, this means some restrictions and conditions regarding interoperability (due to the theory that linking other software with the covered code creates a combined derivative) and regarding compatibility (since no derivative could be licensed under another license, which may create incompatibilities). The EUPL vision that
7954-461: The needed code from B (e.g. the APIs or the needed data structures from program B) without copyright infringement and without authorization from the copyright holder of B. The licensor of A can do and distribute this without being bonded by conditions or limitations imposed by a licence of program B. This must stay compatible with the normal use of program B and cannot prejudice the legitimate interest of
8051-572: The permissive MIT license dethroned the GPLv2 as most popular free-software license to the second place while the permissive Apache license follows already at third place. In June 2016 an analysis of Fedora Project 's packages revealed as most used licenses the GPL, MIT, BSD, and the LGPL . The group Open Source Initiative (OSI) defines and maintains a list of approved open-source licenses . OSI agrees with FSF on all widely used free-software licenses, but differ from FSF's list, as it approves against
8148-614: The programmer from dealing with idiosyncrasies of the graphics display device, and to provide hardware independence if the computer or the display were replaced. The term was introduced to the field of databases by C. J. Date in a 1974 paper called The Relational and Network Approaches: Comparison of the Application Programming Interface . An API became a part of the ANSI/SPARC framework for database management systems . This framework treated
8245-442: The result to be used locally as a return value. A modification of the proxy object will also result in a corresponding modification of the remote object. Web APIs are the defined interfaces through which interactions happen between an enterprise and applications that use its assets, which also is a Service Level Agreement (SLA) to specify the functional provider and expose the service path or URL for its API users. An API approach
8342-452: The same terms as the original software. Hence they are referred to as "share and share alike " or " quid pro quo ". This results in the new software being open source as well. Since copyleft ensures that later generations of the software grant the freedom to modify the code, this is "free software". Non-copyleft licenses do not ensure that later generations of the software will remain free. Developers who use GPL code in their product must make
8439-459: The significant extended scope of the license, which made it incompatible with the GPLv2. Several major FOSS projects ( Linux kernel , MySQL , BusyBox , Blender , VLC media player ) decided against adopting the GPLv3. On the other hand, in 2009, two years after the release of the GPLv3, Google open-source programs office manager Chris DiBona reported that the number of open-source projects licensed software that had moved to GPLv3 from GPLv2
8536-452: The similar OpenJDK project. Judge William Alsup ruled in the Oracle v. Google case that APIs cannot be copyrighted in the U.S. and that a victory for Oracle would have widely expanded copyright protection to a "functional set of symbols" and allowed the copyrighting of simple software commands: To accept Oracle's claim would be to allow anyone to copyright one version of code to carry out
8633-500: The software with a software license which grants the recipient these rights. Software using such a license is free software (or free and open-source software ) as conferred by the copyright holder. Free-software licenses are applied to software in source code and also binary object-code form, as the copyright law recognizes both forms. Free-software licenses provide risk mitigation against different legal threats or behaviors that are seen as potentially harmful by developers: In
8730-398: The software. The US case ( MySQL vs Progress) was settled before a verdict was arrived at, but at an initial hearing, Judge Saris "saw no reason" that the GPL would not be enforceable. Around 2004 lawyer Lawrence Rosen argued in the essay Why the public domain isn't a license software could not truly be waived into public domain and can't be interpreted as very permissive FOSS license,
8827-472: The user, prominently SQLite . Among the repeated attempts by developers to regulate user behavior through the license that sparked wider debate are Douglas Crockford 's (joking) “no evil” clause, which affected the release process of the Debian distribution in 2012 and got the JSMin-PHP project expelled from Google Code , the addition of a pacifist condition based on Asimov's First Law of Robotics to
8924-501: Was 50%, counting the projects hosted at Google Code . In 2011, four years after the release of the GPLv3, 6.5% of all open-source licensed projects were GPLv3 while 42.5% were still GPLv2 according to Black Duck Software data. Following in 2011 451 Group analyst Matthew Aslett argued in a blog post that copyleft licenses went into decline and permissive licenses increased, based on statistics from Black Duck Software. In 2015 according to Black Duck Software and GitHub statistics,
9021-486: Was applied to the GNU Compiler Collection , which was initially published in 1987. The original BSD license is also one of the first free-software licenses, dating to 1988. In 1989, version 1 of the GNU General Public License (GPL) was published. Version 2 of the GPL, released in 1991, went on to become the most widely used free-software license. Starting in the mid-1990s and until
9118-524: Was approved on 9 January 2007. EUPL v1.1 was approved by the European Commission on 9 January 2009. EUPL v1.1 is OSI certified as from March 2009. EUPL v1.2 was published in May 2017. EUPL v1.2 is OSI certified in July 2017. The EUPL v1.2 was prepared as from June 2013 its decision process started in 2016 and released on 19 May 2017. A principal objective of the EUPL v1.2 is to update the appendix of compatible licences to cover newer popular licences such as
9215-455: Was defined simply as "a set of services available to a programmer for performing certain tasks" by technologist Carl Malamud . The idea of the API was expanded again with the dawn of remote procedure calls and web APIs . As computer networks became common in the 1970s and 80s, programmers wanted to call libraries located not only on their local computers, but on computers located elsewhere. These remote procedure calls were well supported by
9312-559: Was later recognized as problem for the Free and open-source ecosystem due to the increased complexity of license compatibility considerations. While the creation of new licenses slowed down later, license proliferation and its impact are considered an ongoing serious challenge for the free and open-source ecosystem. From the free-software licenses, the GNU GPL version 2 has been tested in to court, first in Germany in 2004 and later in
9409-481: Was shared as public-domain software . The CONTU decision plus court decisions such as Apple v. Franklin in 1983 for object code , clarified that the Copyright Act gave computer programs the copyright status of literary works and started the licensing of software . Free-software licenses before the late 1980s were generally informal notices written by the developers themselves. These early licenses were of
#581418