Misplaced Pages

D-Bus

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.

D-Bus (short for " Desktop Bus ") is a message-oriented middleware mechanism that allows communication between multiple processes running concurrently on the same machine. D-Bus was developed as part of the freedesktop.org project, initiated by GNOME developer Havoc Pennington to standardize services provided by Linux desktop environments such as GNOME and KDE .

#426573

81-500: The freedesktop.org project also developed a free and open-source software library called libdbus, as a reference implementation of the specification. This library should not be confused with D-Bus itself, as other implementations of the D-Bus specification also exist, such as GDBus (GNOME), QtDBus ( Qt /KDE), dbus-java and sd-bus (part of systemd ). D-Bus is an inter-process communication (IPC) mechanism initially designed to replace

162-441: A software-bus abstraction that gathers all the communications between a group of processes over a single shared virtual channel. Processes connected to a bus do not know how it is internally implemented, but D-Bus specification guarantees that all processes connected to the bus can communicate with each other through it. D-Bus incurs at least a 2.5x performance loss over one-to-one IPC. Linux desktop environments take advantage of

243-403: A certain service, a client must indicate not only the object path providing the desired service, but also the bus name under which the service process is connected to the bus. This in turn allows that several processes connected to the bus can export different objects with identical object paths unambiguously. An interface specifies members—methods and signals—that can be used with an object. It

324-559: A desktop component should start or stop). D-Bus was started in 2002 by Havoc Pennington, Alex Larsson ( Red Hat ) and Anders Carlsson. The version 1.0—considered API stable—was released in November 2006. Heavily influenced by the DCOP system used by versions 2 and 3 of KDE , D-Bus has replaced DCOP in the KDE 4 release. An implementation of D-Bus supports most POSIX operating systems, and

405-403: A header and a body. The header is formed by several fields that identify the type of message, the sender, as well as information required to deliver the message to its recipient (destination bus name, object path, method or signal name, interface name, etc.). The body contains the data payload that the receiver process interprets—for instance the input or output arguments. All the data is encoded in

486-421: A hub or router in charge of getting each message to its destination by repeating it through the D-Bus connection to the recipient process. The recipient process is determined by the destination bus name in the message's header field, or by the subscription information to signals maintained by the message bus daemon in the case of signal propagation messages. The message bus daemon can also produce its own messages as

567-606: A niche role outside of the mainstream of private software development. However the success of FOSS Operating Systems such as Linux, BSD and the companies based on FOSS such as Red Hat , has changed the software industry's attitude and there has been a dramatic shift in the corporate philosophy concerning its development. Users of FOSS benefit from the Four Essential Freedoms to make unrestricted use of, and to study, copy, modify, and redistribute such software with or without modification. If they would like to change

648-510: A number of administrative bus operations (called "bus services") to be performed using the /org/freedesktop/DBus object that resides in the org.freedesktop.DBus bus name. Each bus reserves this special bus name for itself, and manages any requests made specifically to this combination of bus name and object path. The administrative operations provided by the bus are those defined by the object's interface org.freedesktop.DBus . These operations are used for example to provide information about

729-424: A port for Windows exists. It is used by Qt 4 and later by GNOME . In GNOME it has gradually replaced most parts of the earlier Bonobo mechanism. It is also used by Xfce . One of the earlier adopters was the (nowadays deprecated) Hardware Abstraction Layer . HAL used D-Bus to export information about hardware that has been added to or removed from the computer. The usage of D-Bus is steadily expanding beyond

810-471: A reference guide for other reimplementations of D-Bus (such as those included in standard libraries of desktop environments, or in programming language bindings). The freedesktop.org project itself recommends applications authors to "use one of the higher level bindings or implementations" instead. The predominance of libdbus as the most used D-Bus implementation caused the terms "D-Bus" and "libdbus" to be often used interchangeably, leading to confusion. GDBus

891-462: A response to certain conditions, such as an error message to a process that sent a message to a nonexistent bus name. dbus-daemon improves the feature set already provided by D-Bus itself with additional functionality. For example, service activation allows automatic starting of services when needed—when the first request to any bus name of such service arrives at the message bus daemon. This way, service processes neither need to be launched during

SECTION 10

#1732790871427

972-581: A single unified term that could refer to both concepts, although Richard Stallman argues that it fails to be neutral unlike the similar term; "Free/Libre and Open Source Software" (FLOSS). Richard Stallman 's Free Software Definition , adopted by the FSF, defines free software as a matter of liberty, not price, and that which upholds the Four Essential Freedoms. The earliest known publication of this definition of his free software definition

1053-476: A valid bus name is org.freedesktop.NetworkManager . When a process sets up a connection to a bus, the bus assigns to the connection a special bus name called unique connection name . Bus names of this type are immutable—it is guaranteed they will not change as long as the connection exists—and, more importantly, they cannot be reused during the bus lifetime. This means that no other connection to that bus will ever have assigned such unique connection name, even if

1134-504: A well known binary format called the wire format which supports the serialization of various types, such as integers and floating-point numbers, strings, compound types, and so on, also referred to as marshaling . The D-Bus specification defines the wire protocol : how to build the D-Bus messages to be exchanged between processes within a D-Bus connection. However, it does not define the underlying transport method for delivering these messages. Most existing D-Bus implementations follow

1215-441: A well-defined structure (even the types of the data carried in their payload are defined), allowing the bus to validate them and to reject any ill-formed message. In this regard, D-Bus is closer to an RPC mechanism than to a classic IPC mechanism, with its own type definition system and its own marshaling . The bus supports two modes of interchanging messages between a client and a service process: Every D-Bus message consists of

1296-419: Is Polkit , whose policy authority daemon is implemented as a service connected to the system bus. Although there are several implementations of D-Bus, the most widely used is the reference implementation libdbus , developed by the same freedesktop.org project that designed the specification. However, libdbus is a low-level implementation that was never meant to be used directly by application developers, but as

1377-620: Is a set of declarations of methods (including its passing and returning parameters) and signals (including its parameters) identified by a dot-separated name resembling the Java language interfaces notation. An example of a valid interface name is org.freedesktop.Introspectable . Despite their similarity, interface names and bus names should not be mistaken. A D-Bus object can implement several interfaces, but at least must implement one, providing support for every method and signal defined by it. The combination of all interfaces implemented by an object

1458-433: Is already taken). It can also be used to track a service process lifecycle, since the bus sends a notification when a bus name is released due to a process termination. Because of its original conception as a replacement for several component oriented communications systems, D-Bus shares with its predecessors an object model in which to express the semantics of the communications between clients and services. The terms used in

1539-428: Is an accepted version of this page Free and open-source software ( FOSS ) is software that is available under a license that grants the right to use, modify, and distribute the software, modified or not, to everyone free of charge. The public availability of the source code is, therefore, a necessary but not sufficient condition. FOSS is an inclusive umbrella term for free software and open-source software . FOSS

1620-451: Is an implementation of D-Bus based on GIO streams included in GLib , aiming to be used by GTK+ and GNOME . GDBus is not a wrapper of libdbus, but a complete and independent reimplementation of the D-Bus specification and protocol. MATE Desktop and Xfce (version 4.14), which are also based on GTK+ 3, also use GDBus. In 2013, the systemd project rewrote libdbus in an effort to simplify

1701-858: Is called the object type . When using an object, it is a good practice for the client process to provide the member's interface name besides the member's name, but is only mandatory when there is an ambiguity caused by duplicated member names available from different interfaces implemented by the object—otherwise, the selected member is undefined or erroneous. An emitted signal, on the other hand, must always indicate to which interface it belongs. The D-Bus specification also defines several standard interfaces that objects may want to implement in addition to its own interfaces. Although technically optional, most D-Bus service developers choose to support them in their exported objects since they offer important additional features to D-Bus clients, such as introspection . These standard interfaces are: The D-Bus specification defines

SECTION 20

#1732790871427

1782-416: Is defined by what D-Bus calls an address . Unix-domain sockets are filesystem objects, and therefore they can be identified by a filename, so a valid address would be unix:path=/tmp/.hiddensocket . Both processes must pass the same address to their respective communications libraries to establish the D-Bus connection between them. An address can also provide additional data to the communications library in

1863-517: Is identified by an object path , a string of numbers, letters and underscores separated and prefixed by the slash character, called that because of their resemblance to Unix filesystem paths . The object path is selected by the requesting process, and must be unique in the context of that bus connection. An example of a valid object path is /org/kde/kspread/sheets/3/cells/4/5 . However, it is not enforced—but also not discouraged—to form hierarchies within object paths. The particular naming convention for

1944-809: Is in contrast to proprietary software , where the software is under restrictive copyright or licensing and the source code is hidden from the users. FOSS maintains the software user's civil liberty rights via the " Four Essential Freedoms " of free software. Other benefits of using FOSS include decreased software costs, increased security against malware , stability, privacy , opportunities for educational usage, and giving users more control over their own hardware. Free and open-source operating systems such as Linux distributions and descendants of BSD are widely used today, powering millions of servers , desktops , smartphones , and other devices. Free-software licenses and open-source licenses are used by many software packages today. The free software movement and

2025-496: Is not already being used by another connection to the bus. In D-Bus parlance, when a bus name is assigned to a connection, it is said the connection owns the bus name. In that sense, a bus name cannot be owned by two connections at the same time, but, unlike unique connection names, these names can be reused if they are available: a process may reclaim a bus name released—purposely or not—by another process. The idea behind these additional bus names, commonly called well-known names ,

2106-445: Is not the way in which D-Bus is normally intended to be used. The usual way is to always use a message bus daemon (i.e. dbus-daemon ) as a communications central point to which each process should establish its point-to-point D-Bus connection. When a process—client or service—sends a D-Bus message, the message bus process receives it in the first instance and delivers it to the appropriate recipient. The message bus daemon may be seen as

2187-490: Is the communications library that decides what transport methods it supports. For instance, in Unix-like operating systems such as Linux libdbus typically uses Unix domain sockets as the underlying transport method, but it also supports TCP sockets . The communications libraries of both processes must agree on the selected transport method and also on the particular channel used for their communication. This information

2268-399: Is to provide a way to refer to a service using a prearranged bus name. For instance, the service that reports the current time and date in the system bus lies in the process whose connection owns the org.freedesktop.timedate1 bus name, regardless of which process it is. Bus names can be used as a simple way to implement single-instance applications (second instances detect that the bus name

2349-534: Is today better known as Mozilla Firefox and Thunderbird . Netscape's act prompted Raymond and others to look into how to bring the FSF's Free software ideas and perceived benefits to the commercial software industry. They concluded that FSF's social activism was not appealing to companies like Netscape, and looked for a way to rebrand the Free software movement to emphasize the business potential of sharing and collaborating on software source code. The new name they chose

2430-663: Is used by the Open Source Initiative (OSI) to determine whether a software license qualifies for the organization's insignia for open-source software . The definition was based on the Debian Free Software Guidelines , written and adapted primarily by Bruce Perens . Perens did not base his writing on the Four Essential Freedoms of free software from the Free Software Foundation , which were only later available on

2511-738: The United Space Alliance , which manages the computer systems for the International Space Station (ISS), regarding why they chose to switch from Windows to Linux on the ISS. In 2017, the European Commission stated that "EU institutions should become open source software users themselves, even more than they already are" and listed open source software as one of the nine key drivers of innovation, together with big data , mobility, cloud computing and

D-Bus - Misplaced Pages Continue

2592-665: The hacker community at the MIT Artificial Intelligence Laboratory , announced the GNU project , saying that he had become frustrated with the effects of the change in culture of the computer industry and its users. Software development for the GNU operating system began in January 1984, and the Free Software Foundation (FSF) was founded in October 1985. An article outlining the project and its goals

2673-494: The internet of things . In 2020, the European Commission adopted its Open Source Strategy 2020-2023 , including encouraging sharing and reuse of software and publishing Commission's source code as key objectives. Among concrete actions there is also to set up an Open Source Programme Office in 2020 and in 2022 it launched its own FOSS repository https://code.europa.eu/ . In 2021, the Commission Decision on

2754-427: The members of the object. Any client connected to the bus can interact with an object by using its methods, making requests or commanding the object to perform actions. For instance, an object representing a time service can be queried by a client using a method that returns the current date and time. A client can also listen to signals that an object emits when its state changes due to certain events, usually related to

2835-609: The open-source software movement are online social movements behind widespread production, adoption and promotion of FOSS, with the former preferring to use the terms FLOSS , free or libre. "Free and open-source software" (FOSS) is an umbrella term for software that is simultaneously considered both free software and open-source software . The precise definition of the terms "free software" and "open-source software" applies them to any software distributed under terms that allow users to use, modify, and redistribute said software in any manner they see fit, without requiring that they pay

2916-486: The software component communications systems used by the GNOME and KDE Linux desktop environments ( CORBA and DCOP respectively). The components of these desktop environments are normally distributed in many processes, each one providing only a few—usually one— services . These services may be used by regular client applications or by other components of the desktop environment to perform their tasks. D-Bus provides

2997-401: The system initialization or user initialization stage nor need they consume memory or other resources when not being used. This feature was originally implemented using setuid helpers, but nowadays it can also be provided by systemd 's service activation framework. Service activation is an important feature that facilitates the management of the process lifecycle of services (for example when

3078-405: The D-Bus facilities by instantiating multiple buses, notably: A process can connect to any number of buses, provided that it has been granted access to them. In practice, this means that any user process can connect to the system bus and to its current session bus, but not to another user's session buses, or even to a different session bus owned by the same user. The latter restriction may change in

3159-471: The D-Bus object model mimic those used by some object oriented programming languages . That does not mean that D-Bus is somehow limited to OOP languages—in fact, the most used implementation ( libdbus ) is written in C , a procedural programming language. In D-Bus, a process offers its services by exposing objects . These objects have methods that can be invoked, and signals that the object can emit. Methods and signals are collectively referred to as

3240-638: The EU. These recommendations are to be taken into account later in the same year in Commission's proposal of the "Interoperable Europe Act" . While copyright is the primary legal mechanism that FOSS authors use to ensure license compliance for their software, other mechanisms such as legislation, patents, and trademarks have implications as well. In response to legal issues with patents and the Digital Millennium Copyright Act (DMCA),

3321-706: The FOSS ecosystem, several projects decided against upgrading to GPLv3. For instance the Linux kernel , the BusyBox project, AdvFS , Blender , and the VLC media player decided against adopting the GPLv3. Apple , a user of GCC and a heavy user of both DRM and patents, switched the compiler in its Xcode IDE from GCC to Clang , which is another FOSS compiler but is under a permissive license . LWN speculated that Apple

D-Bus - Misplaced Pages Continue

3402-653: The Free Software Foundation released version 3 of its GNU General Public License (GNU GPLv3) in 2007 that explicitly addressed the DMCA and patent rights. After the development of the GNU GPLv3 in 2007, the FSF (as the copyright holder of many pieces of the GNU system) updated many of the GNU programs' licenses from GPLv2 to GPLv3. On the other hand, the adoption of the new GPL version was heavily discussed in

3483-402: The actual causes of the many issues with Linux on notebooks such as the unnecessary power consumption. Mergers have affected major open-source software. Sun Microsystems (Sun) acquired MySQL AB , owner of the popular open-source MySQL database, in 2008. Oracle in turn purchased Sun in January 2010, acquiring their copyrights, patents, and trademarks. Thus, Oracle became the owner of both

3564-415: The architecture of the reference implementation. This architecture consists of two main components: The libdbus library (or its equivalent) internally uses a native lower-level IPC mechanism to transport the required D-Bus messages between the two processes in both ends of the D-Bus connection. D-Bus specification does not mandate which particular IPC transport mechanisms should be available to use, as it

3645-470: The author(s) of the software a royalty or fee for engaging in the listed activities. Although there is an almost complete overlap between free-software licenses and open-source-software licenses, there is a strong philosophical disagreement between the advocates of these two positions. The terminology of FOSS was created to be a neutral on these philosophical disagreements between the Free Software Foundation (FSF) and Open Source Initiative (OSI) and have

3726-563: The code, but it also resulted in a significant increase of the overall D-Bus performance. In preliminary benchmarks, BMW found that the systemd's D-Bus library increased performance by 360%. By version 221 of systemd , released in 2015, the sd-bus API was declared stable. kdbus was a project that aimed to reimplement D-Bus as a kernel-mediated peer-to-peer inter-process communication mechanism. Beside performance improvements, kdbus would have advantages arising from other Linux kernel features such as namespaces and auditing, security from

3807-434: The concept of freely distributed software and universal access to an application's source code . A Microsoft executive publicly stated in 2001 that "Open-source is an intellectual property destroyer. I can't imagine something that could be worse than this for the software business and the intellectual-property business." Companies have indeed faced copyright infringement issues when embracing FOSS. For many years FOSS played

3888-502: The copyright law was extended to computer programs in the United States —previously, computer programs could be considered ideas, procedures, methods, systems, and processes, which are not copyrightable. Early on, closed-source software was uncommon until the mid-1970s to the 1980s, when IBM implemented in 1983 an "object code only" policy, no longer distributing source code. In 1983, Richard Stallman , longtime member of

3969-440: The form of comma-separated key=value pairs. This way, for example, it can provide authentication information to a specific type of connection that supports it. When a message bus daemon like dbus-daemon is used to implement a D-Bus bus, all processes that want to connect to the bus must know the bus address , the address by which a process can establish a D-Bus connection to the central message bus process. In this scenario,

4050-562: The functionality of software they can bring about changes to the code and, if they wish, distribute such modified versions of the software or often − depending on the software's decision making model and its other users − even push or request such changes to be made via updates to the original software. Manufacturers of proprietary, closed-source software are sometimes pressured to building in backdoors or other covert, undesired features into their software. Instead of having to trust software vendors, users of FOSS can inspect and verify

4131-414: The future if all user sessions are combined into a single user bus. D-Bus provides additional or simplifies existing functionality to the applications, including information-sharing, modularity and privilege separation . For example, information on an incoming voice-call received through Bluetooth or Skype can be propagated and interpreted by any currently-running music player, which can react by muting

SECTION 50

#1732790871427

4212-416: The goal of developing the most efficient software for its users or use-cases while proprietary software is typically meant to generate profits . Furthermore, in many cases more organizations and individuals contribute to such projects than to proprietary software. It has been shown that technical superiority is typically the primary reason why companies choose open source software. According to Linus's law

4293-567: The government charged that bundled software was anticompetitive. While some software was still being provided without monetary cost and license restriction, there was a growing amount of software that was only at a monetary cost with restricted licensing. In the 1970s and early 1980s, some parts of the software industry began using technical measures (such as distributing only binary copies of computer programs ) to prevent computer users from being able to use reverse engineering techniques to study and customize software they had paid for. In 1980,

4374-491: The historical potential of an " economy of abundance " for the new digital world , FOSS may lay down a plan for political resistance or show the way towards a potential transformation of capitalism . According to Yochai Benkler , Jack N. and Lillian R. Berkman Professor for Entrepreneurial Legal Studies at Harvard Law School , free software is the most visible part of a new economy of commons-based peer production of information, knowledge, and culture. As examples, he cites

4455-519: The initial scope of desktop environments to cover an increasing amount of system services. For instance, the NetworkManager network daemon, BlueZ bluetooth stack and PulseAudio sound server use D-Bus to provide part or all of their services. systemd uses the D-Bus wire protocol for communication between systemctl and systemd, and is also promoting traditional system daemons to D-Bus services, such as logind . Another heavy user of D-Bus

4536-491: The kernel mediating, closing race conditions, and allowing D-Bus to be used during boot and shutdown (as needed by systemd). kdbus inclusion in the Linux kernel proved controversial, and was dropped in favor of BUS1 , as a more generic inter-process communication . Several programming language bindings for D-Bus have been developed, such as those for Java , C# , Ruby , Rust and Perl . Free and open-source This

4617-485: The level of interest in a particular project. However, unlike close-sourced software, improvements can be made by anyone who has the motivation, time and skill to do so. A common obstacle in FOSS development is the lack of access to some common official standards, due to costly royalties or required non-disclosure agreements (e.g., for the DVD-Video format). There is often less certainty of FOSS projects gaining

4698-400: The message bus daemon selects the bus address and the remainder processes must pass that value to their corresponding libdbus or equivalent libraries. dbus-daemon defines a different bus address for every bus instance it provides. These addresses are defined in the daemon's configuration files. Two processes can use a D-Bus connection to exchange messages directly between them, but this

4779-545: The more people who can see and test a set of code, the more likely any flaws will be caught and fixed quickly. However, this does not guarantee a high level of participation. Having a grouping of full-time professionals behind a commercial product can in some cases be superior to FOSS. Furthermore, publicized source code might make it easier for hackers to find vulnerabilities in it and write exploits. This however assumes that such malicious hackers are more effective than white hat hackers which responsibly disclose or help fix

4860-477: The most popular proprietary database and the most popular open-source database. Oracle's attempts to commercialize the open-source MySQL database have raised concerns in the FOSS community. Partly in response to uncertainty about the future of MySQL, the FOSS community forked the project into new database systems outside of Oracle's control. These include MariaDB , Percona , and Drizzle . All of these have distinct names; they are distinct projects and cannot use

4941-419: The objects of a service is entirely up to the developers of such service, but many developers choose to namespace them using the reserved domain name of the project as a prefix (e.g. /org/kde ). Every object is inextricably associated to the particular bus connection where it was exported, and, from the D-Bus point of view, only lives in the context of such connection. Therefore, in order to be able to use

SECTION 60

#1732790871427

5022-640: The open source licensing and reuse of Commission software (2021/C 495 I/01) was adopted, under which, as a general principle, the European Commission may release software under EUPL or another FOSS license, if more appropriate. There are exceptions though. In May 2022, the Expert group on the Interoperability of European Public Services came published 27 recommendations to strengthen the interoperability of public administrations across

5103-544: The parties stipulated that Google would pay no damages. Oracle appealed to the Federal Circuit , and Google filed a cross-appeal on the literal copying claim. By defying ownership regulations in the construction and use of information—a key area of contemporary growth —the Free/Open Source Software (FOSS) movement counters neoliberalism and privatization in general. By realizing

5184-418: The required resources and participation for continued development than commercial software backed by companies. However, companies also often abolish projects for being unprofitable, yet large companies may rely on, and hence co-develop, open source software. On the other hand, if the vendor of proprietary software ceases development, there are no alternatives; whereas with FOSS, any user who needs it still has

5265-484: The right, and the source-code, to continue to develop it themself, or pay a 3rd party to do so. As the FOSS operating system distributions of Linux has a lower market share of end users there are also fewer applications available. "We migrated key functions from Windows to Linux because we needed an operating system that was stable and reliable -- one that would give us in-house control. So if we needed to patch, adjust, or adapt, we could." Official statement of

5346-403: The same process closes down the connection to the bus and creates a new one. Unique connection names are easily recognizable because they start with the otherwise forbidden colon character. An example of a unique connection name is :1.1553 (the characters after the colon have no particular meaning). A process can ask for additional bus names for its connection, provided that any requested name

5427-521: The source code themselves and can put trust on a community of volunteers and users. As proprietary code is typically hidden from public view, only the vendors themselves and hackers may be aware of any vulnerabilities in them while FOSS involves as many people as possible for exposing bugs quickly. FOSS is often free of charge although donations are often encouraged. This also allows users to better test and compare software. FOSS allows for better collaboration among various parties and individuals with

5508-438: The status of the bus, or to manage the request and release of additional well-known bus names. D-Bus was conceived as a generic, high-level inter-process communication system. To accomplish such goals, D-Bus communications are based on the exchange of messages between processes instead of "raw bytes". D-Bus messages are high-level discrete items that a process can send through the bus to another connected process. Messages have

5589-518: The trademarked name MySQL. In August 2010, Oracle sued Google , claiming that its use of Java in Android infringed on Oracle's copyrights and patents. In May 2012, the trial judge determined that Google did not infringe on Oracle's patents and ruled that the structure of the Java APIs used by Google was not copyrightable. The jury found that Google infringed a small number of copied files, but

5670-480: The underlying service. An example would be when a service that manages hardware devices—such as USB or network drivers—signals a "new hardware device added" event. Clients should instruct the bus that they are interested in receiving certain signals from a particular object, since a D-Bus bus only passes signals to those processes with a registered interest in them. A process connected to a D-Bus bus can request it to export as many D-Bus objects as it wants. Each object

5751-532: The volume or by pausing playback until the call is finished. D-Bus can also be used as a framework to integrate different components of a user application. For instance, an office suite can communicate through the session bus to share data between a word processor and a spreadsheet . Every connection to a bus is identified in the context of D-Bus by what is called a bus name . A bus name consists of two or more dot-separated strings of letters, digits, dashes, and underscores—a reverse domain name . An example of

5832-837: The vulnerabilities, that no code leaks or exfiltrations occur and that reverse engineering of proprietary code is a hindrance of significance for malicious hackers. Sometimes, FOSS is not compatible with proprietary hardware or specific software. This is often due to manufacturers obstructing FOSS such as by not disclosing the interfaces or other specifications needed for members of the FOSS movement to write drivers for their hardware - for instance as they wish customers to run only their own proprietary software or as they might benefit from partnerships. While FOSS can be superior to proprietary equivalents in terms of software features and stability, in many cases it has more unfixed bugs and missing features when compared to similar commercial software. This varies per case, and usually depends on

5913-485: The web. Perens subsequently stated that he felt Eric Raymond 's promotion of open-source unfairly overshadowed the Free Software Foundation's efforts and reaffirmed his support for free software. In the following 2000s, he spoke about open source again. From the 1950s and on through the 1980s, it was common for computer users to have the source code for all programs they used, and the permission and ability to modify it for their own use. Software , including source code,

5994-590: Was "Open-source", and quickly Bruce Perens , publisher Tim O'Reilly , Linus Torvalds, and others signed on to the rebranding. The Open Source Initiative was founded in February 1998 to encourage the use of the new term and evangelize open-source principles. While the Open Source Initiative sought to encourage the use of the new term and evangelize the principles it adhered to, commercial software vendors found themselves increasingly threatened by

6075-447: Was commonly shared by individuals who used computers, often as public-domain software (FOSS is not the same as public domain software, as public domain software does not contain copyrights ). Most companies had a business model based on hardware sales, and provided or bundled software with hardware, free of charge. By the late 1960s, the prevailing business model around software was changing. A growing and evolving software industry

6156-462: Was competing with the hardware manufacturer's bundled software products; rather than funding software development from hardware revenue, these new companies were selling software directly. Leased machines required software support while providing no revenue for software, and some customers who were able to better meet their own needs did not want the costs of software bundled with hardware product costs. In United States vs. IBM , filed January 17, 1969,

6237-534: Was in the February 1986 edition of the FSF's now-discontinued GNU's Bulletin publication. The canonical source for the document is in the philosophy section of the GNU Project website. As of August 2017 , it is published in 40 languages. To meet the definition of "free software", the FSF requires the software's licensing respect the civil liberties / human rights of what the FSF calls the software user's " Four Essential Freedoms ". The Open Source Definition

6318-572: Was motivated partly by a desire to avoid GPLv3. The Samba project also switched to GPLv3, so Apple replaced Samba in their software suite by a closed-source, proprietary software alternative. Leemhuis criticizes the prioritization of skilled developers who − instead of fixing issues in already popular open-source applications and desktop environments − create new, mostly redundant software to gain fame and fortune. He also criticizes notebook manufacturers for optimizing their own products only privately or creating workarounds instead of helping fix

6399-528: Was published in March 1985 titled the GNU Manifesto . The manifesto included significant explanation of the GNU philosophy, Free Software Definition and " copyleft " ideas. The FSF takes the position that the fundamental issue Free software addresses is an ethical one—to ensure software users can exercise what it calls " The Four Essential Freedoms ". The Linux kernel , created by Linus Torvalds ,

6480-657: Was released as freely modifiable source code in 1991. Initially, Linux was not released under either a Free software or an Open-source software license. However, with version 0.12 in February 1992, he relicensed the project under the GNU General Public License . FreeBSD and NetBSD (both derived from 386BSD ) were released as Free software when the USL v. BSDi lawsuit was settled out of court in 1993. OpenBSD forked from NetBSD in 1995. Also in 1995, The Apache HTTP Server , commonly referred to as Apache,

6561-527: Was released under the Apache License 1.0 . In 1997, Eric Raymond published The Cathedral and the Bazaar , a reflective analysis of the hacker community and Free software principles. The paper received significant attention in early 1998, and was one factor in motivating Netscape Communications Corporation to release their popular Netscape Communicator Internet suite as Free software . This code

#426573