# Open source software overview

Open source software is when the source code is made available to the public, allowing anyone to view, modify, and distribute the software. Open sourcing software can help with the promotion of collaboration and sharing of solutions to different problems.

Open source software is typically developed by a community of developers who work together to improve the software and make it available for free. This approach encourages innovation and allows developers to build upon existing software without having to start from scratch. Examples of open source software include the Linux operating system, the Apache web server, and the Firefox web browser.

### **Benefits of open source software**

**Development speed**

Open source software can be developed more quickly when it is open to a large community of developers that benefit from using the software. Anyone can suggest changes to help resolve any issues or bugs that are identified. Internationalisation and localisation efforts also will help with increasing the speed of usage and adoption of using that software by an increased ease of understanding for people that have different native languages.

**Code quality & security**

The quality and security of open source software can be improved at a faster rate when more developers are using and testing the software for their own use cases. People who adopt the open source software can inspect the code themselves and discover potential improvements or issues from their own usage that can translate to suggested improvements. Another factor that helps with security is that open source software can be deployed in whatever manner is most suitable to the project using it. This flexibility provides projects more control over the privacy of where the software is run and any data is stored rather than relying on a third party and their own proprietary software.

**Transparency**

Open source software is openly available for others to view, alter and use themselves. This approach increases the transparency to those considering adopting it who can have more confident that they understand how it works and how it can be used.

**Cost effective**

Open software is often free to use with licenses that allow projects to freely adapt, reuse and commercialise solutions that adopt the software. This makes open source software highly cost effective to adopt in any software project.

**Flexible**

Open source software is often compared to proprietary software, which is developed by a single company and kept confidential. While proprietary software can be more polished and feature-rich, open source software is generally more flexible and customisable, making it ideal for developers who want to build their own software solutions or contribute to existing projects. Open source software can be customised to fit the unique needs of an organisation or individual, allowing for greater control over how the software operates.

**No vendor lock in**

Open source software means there is no vendor lock when adopting the software. This gives development teams the freedom to change the code or change to another solutions as they see fit. Open source software also helps with mitigating the risks of proprietary software services changing the policies, rules or availability of the software their own projects could rely on.

**Interoperable & portable**

Open source software allows anyone to suggest and implement integrations with other existing open source software helping to make the software easier to use in other contexts and use cases. Efforts can also be more freely made towards increasing compatibility with older hardware or software and this work be integrated and patched into the open source software to make it easier to use in a wider range of operating systems, projects and different environments.

**Innovation**

Open source software helps to promote more collaboration between projects that adopt the software as everyone benefits from the continuous improvement and maintenance of that software they each rely on. This helps to encourage further development and innovation around the software by the efforts made to improve and build on top of the existing code.

**Longevity**

Longevity of an open source software project can be more easily increased as the development and improvements can continue beyond the original developers who initially contributed to the source code. More adoption of the software will further help with the longevity of the software through a larger community which benefits and depends on that open source software being continuously maintained and improved.

**Education and training**

The amount of education, training and resources that are made available to help with the usage and adoption of open source software can easily increase as the adoption of the software increases and the more people there are that would benefit from quality resources. Wider adoption should also increase the number of people who are well informed on how to use the software and its benefits. A larger community would become a more effective support structure for the education and training needed to effectively use the software.

### **Other factors to consider**

**1. Ongoing maintenance effort**

For standards that get widely adopted it becomes increasingly important to consider the implications of how that standard is maintained and updated when necessary. Usually these changes can be achieved through new versions. However high adoption of a particular version can also mean a high cost to migrating to newer versions of a standard when they get introduced. If a standard becomes complex to maintain and update then the standard could even become the bottleneck for further innovation. Due to this consideration will be needed on how standards are versioned, reviewed and updated. Checks and balances will be needed to determine how a standard is updated to a newer version and based on what factors, evidence and community feedback. Backwards compatibility will be a constant concern for standards that evolve over time. Some standards will have data that could be stored on an immutable blockchain. Considerations will be needed towards how those services are able to be updated and improved over time based on improved standards.

### Examples of **well known or widely adopted open source software**

**Linux**

[Linux](https://en.wikipedia.org/wiki/Linux) is an open source operating system that is widely used in desktop computers, mobiles and backend servers. Linux currently has over a [2% marketshare for usage on desktop computers](https://gs.statcounter.com/os-market-share/desktop/worldwide) and the Linux Kernel has been used to build other open source software such as the Android mobile operating system. [Linux Kernel source code](https://www.kernel.org/).

**Android**

[Android](https://www.android.com/) is a mobile operating system that builds on top of Linux Kernel. Android is one of the most widely adopted mobile operating systems in the world with over [70% of the mobile OS market using Android](https://gs.statcounter.com/os-market-share/mobile/worldwide). [Android source code](https://source.android.com/).

**WordPress**

[WordPress](https://wordpress.org/) is an open source content management system that makes it easier for people to build their own websites. WordPress has over a [40% adoption market share](https://w3techs.com/technologies/overview/content_management) of online websites. [WordPress source code](https://wordpress.org/download/).

**Bitcoin**

[Bitcoin](https://bitcoin.org) is an open source decentralized blockchain that enables peer to peer payments. Over a [1000 developers have contributed](https://assets-global.website-files.com/614e11536f66309636c98688/63208342664438223226c3de_NYDIG%20-%20Developers%20of%20Bitcoin%202022.pdf) to the Bitcoin Core open source codebase since its inception. [Bitcoin source code](https://github.com/bitcoin/bitcoin).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.web3association.io/about/approach/contribution-outcomes/open-source-software-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
