thumb|Logo van het Open Source Initiative Opensourcesoftware (soms ook openbronsoftware) is computerprogrammatuur waarvan de gebruiker de licentie heeft om de broncode te bestuderen, aan te passen, te verbeteren, te verspreiden of te verkopen. De gehanteerde softwarelicentie bepaalt voor welke doeleinden de broncode ingezet mag worden.

De ontwikkeling van opensourcesoftware komt vaak tot stand op publieke en gemeenschappelijke wijze, door samenwerking van individuele programmeurs, overheden en bedrijven. Opensourcesoftware is tevens de meest prominente ontwikkeling in de opensourcebeweging.

Situatie Een opensource-computerprogramma wordt uitgegeven, vrijgegeven aan gebruikers in twee onderdelen: de software die een computer kan uitvoeren (de gecompileerde executable) en de 'broncode' waarmee deze software gemaakt is. De broncode is niet nodig om de software te laten werken, daarvoor is alleen de executable, het uitvoerbare bestand, nodig. Mocht iemand (een deel van) de software willen aanpassen dan heeft hij de broncode nodig, past deze aan en kan de nieuwe of andere versie compileren. Er is dan een nieuwe versie van de software gemaakt.

Opensourcesoftwareprojecten kunnen ontwikkeld worden door een community, een gemeenschap van meerderen. Het succes van zo'n project is af te meten aan de activiteit en de hoeveelheid deelnemers aan de community.

De basis thumb|Eric Raymond. De ontwikkelmethode die Eric S. Raymond beschreef, gaat ervan uit dat de broncode van software beschikbaar gesteld wordt. Hiermee wordt de mogelijkheid gecreëerd om een programma aan te passen door eenieder die de kennis heeft om de broncode te begrijpen. Dit is voornamelijk gebaseerd op de gebruiken van de eerste (universitaire) computerspecialisten die (vanaf het begin van data-uitwisseling via bijvoorbeeld het interuniversitaire ARPANET) elkaar wilden helpen met het gebruiken van de (toen nieuwe) computers.

Geschiedenis Hoewel de opensourcebeweging onder die naam (open source movement) in 1998 is begonnen, komen de doelen van de beweging grotendeels overeen met die van de Free Software Foundation, en het concept van open samenwerking met vrij beschikbare broncode is al veel ouder.

In de jaren 60, toen de eerste grootschalige commerciële computers werden gemaakt door onder andere IBM, werd er vrij te gebruiken software bijgeleverd. 'Vrij' wil zeggen het kon worden gedeeld onder de gebruikers. Tevens zat de broncode erbij en kon software zo worden verbeterd en aangepast. Dit veranderde echter in de jaren 70: het werd gebruikers meestal niet langer toegestaan om dit soort software te ontwikkelen of te delen. Mede als reactie hierop gingen in de late jaren 70 en vroege jaren 80, verschillende groepen en hackers over tot het ontwikkelen van vrije besturingssystemen, zoals het latere GNU en FreeBSD.

Richard Stallman, een voormalig programmeur bij het laboratorium voor kunstmatige intelligentie van MIT aan de Amerikaanse oostkust lanceerde het GNU Project en richtte 4 oktober 1985 de Free Software Foundation ('stichting voor vrije software') op. Het uiteindelijke doel hiervan was een vrij besturingssysteem te bouwen. Als het ware een vrije kloon van het gesloten besturingssysteem Unix. De naam GNU is een recursief acroniem dat staat voor "GNU's Not Unix!". Als juridisch instrument werd daarnaast de GNU General Public License ontworpen om ervoor te zorgen dat GNU vrij zou blijven en om de vrije software te promoten. Stallman schreef eveneens het GNU-Manifest,http://www.gnu.org/gnu/manifesto.nl.html waarin hij betoogt dat de beschikbaarheid van de broncode en de vrijheid om deze verder te distribueren en te wijzigen fundamentele rechten zijn.

Tegelijkertijd werd er in de Computer Science Research Group aan de Universiteit van Californië te Berkeley gewerkt aan een verbetering van het Unix-systeem en applicaties die al snel bekend werd als "BSD Unix". BSD staat hier voor Berkeley Software Distribution. Het project werd gefinancierd door DARPA-contracten en gesteund door Unix-hackers wereldwijd. Het werd onder BSD-licentie verdeeld aan het eind van de jaren 80, nadat de software alleen binnen de gemeenschap van Unix AT&T-licentiehouders was te verkrijgen. BSD Unix-gebruikers hadden daarentegen een AT&T-licentie nodig, ten behoeve van een bruikbaar systeem.

300px|right|thumb|Ubuntu, een opensourcebesturingssysteem gebaseerd op Linux. In de jaren 80 en 90 werd de ontwikkeling van het opensourceconcept voortgezet. Door het gebruik van USENET en Internet werd het mogelijk inspanningen van hackers en programmeurs in andere delen van de wereld te coördineren. Langzaam maar zeker kon op het Unix-besturingssysteem veel en verschillende software gebouwd worden. Het werd hoog tijd voor veranderingen en die kwamen in 1991 en 1992.

Bill Jolitz in Californië verwezenlijkte de ontbrekende delen van het besturingssysteem van BSD Net/2 en maakte het mogelijk dat het werkte op Intel 80386-machines. Ook beschikte het over een werkende kernel. Deze inzet werd zeer gewaardeerd binnen BSD- en Unix-gemeenschappen. Het werd verspreid onder de BSD-licentie, wat het meteen vrije software maakte.

Linus Torvalds, een informaticastudent uit Finland, verwezenlijkte de eerste versies van de Linux-kernel. Steeds meer mensen werkten hier uiteindelijk aan samen om de kernel te blijven verbeteren, en hulpprogramma's toe te voegen om een werkelijk besturingssysteem te voltooien, GNU/Linux6. In 1993 waren zowel 386BSD en GNU/Linux6 redelijk stabiele platforms. In de jaren 90 kwamen er vele opensourceprojecten met een grote hoeveelheid aan nuttige en hoogwaardige software beschikbaar, zoals Apache, GNOME, KDE en Mozilla. Vooral GNOME en KDE waren populair omdat ze toegankelijk waren voor mensen met minder technische kennis. GNU/Linux en BSD begonnen uit te groeien tot werkelijke alternatieven voor propriëtaire systemen.http://eu.conecta.it/paper/paper.html

In 1998 werd de broncode van Netscape Communicator vrijgegeven. Naar aanleiding hiervan kwam het begrip 'open source' uit een strategie-sessie op 3 februari 1998 in Palo Alto. Hierbij aanwezig waren Todd Anderson en Chris Peterson (Foresight Institute), John “Maddog” Hall en Larry Augustin (Linux International), Sam Ockman (Silicon Valley Linux User Group), Micheal Tiemann en Eric Raymond. Voorafgaand was Raymond uitgenodigd door Netscape om hen te helpen plannen met het vrijgeven van de broncode van Netscape Communicator. De leden van de strategiesessie grepen de release van de broncode aan om zich te bevrijden van de in hun ogen ideologische en confronterende connotaties van de term Free Software. Ze brainstormden over een tactiek en een nieuw label. Open Source, mede bedacht door Peterson, was het beste dat bij hen opkwam. De week daarop werd er hard gewerkt aan het verspreiden van de term. Op 8 februari deed Raymond de eerste openbare oproep aan de gemeenschap tot het gebruiken van de nieuwe term. De oprichting van het Open Source Initiative volgde kort daarop. Op 8 april werd op Tim O'Reilly's Free Software-top ingestemd met het besluit om het gebruik van de term "Open Source" te bevorderen en om de nieuwe retoriek van pragmatische en marktvriendelijke richtlijnen, ontwikkeld door Raymond, na te volgen.https://web.archive.org/web/20021001164015/http://www.opensource.org/docs/history.php

Dit was het startpunt voor veel grote bedrijven om opensourcesoftware te accepteren. Eveneens begonnen de media nu ook meer aandacht te geven aan de voorheen marginale opensourcebeweging, die nu niet meer alleen bestaat uit particulieren en non-profitorganisaties maar ook uit kleine en middelgrote bedrijven.

In de vroege jaren 2000 waren een aantal bedrijven begonnen met het publiceren van een deel van hun broncode om te bewijzen dat zij meededen aan het Open Source fenomeen, terwijl zij de belangrijke delen voor zich hielden. Dit leidde tot het ontwikkelen van de nu wereldwijd gebruikte termen Free Open Source Software en Commercial Open Source Software om een onderscheid te maken tussen helemaal open en halfopen vormen van Open Source.

Open Source Definition Aan de hand van de Open Source Definition (definitie van open source, OSD) bepaalt het Open Source Initiative (OSI) of een softwarelicentie de kwalificatie open source verdient. De definitie is gebaseerd op de Debian Free Software Guidelines. Beide zijn geschreven en aangepast door Bruce Perens.

Ontwikkelingsfilosofie Eric S. Raymond presenteerde in het door hem geschreven essay The Cathedral and the BazaarThe Cathedral and the Bazaar, http://catb.org/~esr/writings/homesteading/introduction/, De Kathedraal en de Bazaar, https://web.archive.org/web/20070206224403/http://www.opensource.nl/bazaar.html een model voor de ontwikkeling van opensourcesoftware, bekend als de bazaar. Deze theorie beschrijft hoe software ontwikkeld zou worden in een bazaarstijl. In zijn woorden: "Een grootse brabbelende bazaar van verschillende agenda's en benaderingen."

De traditionele wijze van ontwikkeling, de kathedraal, is meer gecentraliseerd. Rollen en taken in de ontwikkeling zijn hierin duidelijk onderverdeeld. De traditionele software engineering volgt het kathedraal-model. Softwareontwikkelaar Frederick P. Brooks pleit in zijn boek The Mythical Man-Month, voor het kathedraalmodel. Hij gaat hierop verder door te pleiten voor behoud van de onkreukbaarheid van het systeem. Het systeemontwerp zou gedaan moeten worden door zo min mogelijk architecten.

Het bazaarmodel daarentegen, hanteert geen specifieke rollen. Gregorio Robles schreef dat software ontwikkeld volgens het bazaar-model de volgende patronen zou moeten volgen:A Software Engineering approach to Libre Software, Gregorio Robles, https://web.archive.org/web/20110719002451/http://www.opensourcejahrbuch.de/download/jb2004/chapter_03/III-3-Robles.pdf

Gebruikers moeten behandeld worden als medeontwikkelaars De gebruikers zouden als medeontwikkelaars behandeld moeten worden en ook toegang moeten krijgen tot de broncode van de software. Zij kunnen bijdragen aan verbetering van de software. Volgens de Wet van Linus zouden alle problemen in de software gevonden kunnen worden en kan het systeem optimaal getest en ontwikkeld worden.

Vroege releases De eerste release zouden zo vroeg mogelijk uitgegeven moeten worden om medeontwikkelaars zo snel mogelijk te betrekken.

Regelmatige integratie Code die wordt veranderd, zou zo snel mogelijk geïntegreerd moeten worden, eventueel in een gedeelde code-database, om te voorkomen dat er pas aan het eind van het project codeproblemen worden opgelost. Bij sommige open source software is dit al het geval.

Verschillende versies Er zouden op zijn minst twee versies van een softwarepakket moeten bestaan. Een stabiele versie met beperkte functionaliteit en een minder stabiele versie met meer of betere functionaliteit. De instabiele versie of ontwikkelingsversie (ook wel bèta genoemd) is voor gebruikers die over de nieuwste functies willen beschikken en het risico durven nemen om met software te werken die nog niet grondig is getest. Gebruikers zijn op deze manier ook medeontwikkelaars door feedback te geven op de software.

Modularisering De algemene structuur van de software zou per module geprogrammeerd moeten zijn, zodat er tegelijkertijd ontwikkelingen gedaan kunnen worden aan verschillende componenten

Dynamische besluit-structuur Hetzij formeel of informeel, zou er een besluit-structuur moeten zijn. Deze zou strategische keuzes moeten maken afhankelijk van het veranderen van gebruikersvereisten en andere factoren.

Ontwikkeling De structuur van medewerkers is duidelijk verschillend van de klassieke bedrijfsstructuur. In plaats van één enkel bedrijf dat het project ondersteunt, is het meestal een combinatie van groeperingen, individuen en eventueel bedrijven.N. Weynants and J. Cornelis. How open is the future? Brussels University Press, 2005. Dit heeft enkele gevolgen: