Open source, także: otwartoźródłowość (z ang. dosł. „otwarte źródło”) – pojęcie wywodzące się ze środowiska oprogramowania, odnoszące się przede wszystkim do modelu udostępniania, rozwijania i licencjonowania otwartego oprogramowania, w którym kod źródłowy jest dostępny na warunkach pozwalających na korzystanie z programu, analizowanie jego działania, modyfikowanie oraz dalsze rozpowszechnianie. W tym podstawowym znaczeniu open source nie oznacza jedynie technicznej możliwości obejrzenia kodu, lecz także istnienie licencji spełniającej kryteria Definicji otwartego źródła utrzymywanej przez Open Source Initiative (OSI).
Termin został przyjęty w 1998 roku w związku z powstaniem OSI i debatą nad sposobem opisywania otwartego modelu rozwoju oprogramowania. W literaturze przedmiotu oraz w praktyce ruchów otwartości pojęcie bywa też rozszerzane na inne dziedziny – zwłaszcza sprzęt, dane, treści, naukę lub niektóre formy współpracy – lecz takie użycia mają charakter uogólnienia modelu wypracowanego na gruncie wolnego i otwartego oprogramowania, a nie jednej uniwersalnej definicji prawnej.
W odróżnieniu od samego publicznego pokazania kodu albo dokumentacji, open source zakłada przyznanie odbiorcom odpowiednich uprawnień. W przypadku oprogramowania sam fakt umieszczenia kodu w publicznym repozytorium nie oznacza jeszcze, że projekt jest open source; jeżeli twórca nie dołączy licencji, zastosowanie mają domyślne zasady prawa autorskiego i odbiorcy nie uzyskują automatycznie prawa do reprodukowania, rozpowszechniania ani tworzenia utworów zależnych.
Znaczenie pojęcia W źródłach ogólnych oraz w piśmiennictwie dotyczącym wolnego i otwartego oprogramowania termin open source odnosi się przede wszystkim do oprogramowania i do ruchu społeczno-technicznego związanego z publikowaniem kodu źródłowego na licencjach dopuszczających używanie, modyfikowanie i redystrybucję. W tym znaczeniu pojęcie obejmuje zarazem wymiar techniczny (udostępnienie kodu źródłowego), prawny (licencja) i organizacyjny (otwarty tryb rozwijania projektu).
W literaturze poświęconej organizacji innowacji podkreśla się, że zasady wypracowane w projektach open source stały się inspiracją dla szerszych modeli, określanych m.in. jako open collaboration albo open source innovation. Nie są to jednak pojęcia tożsame. Open collaboration opisuje szerszy sposób wytwarzania i współdzielenia rezultatów pracy, natomiast open source innovation jest próbą uogólnienia niektórych zasad znanych z rozwoju oprogramowania na inne sektory gospodarki i kultury.
Z tego powodu w hasłach encyklopedycznych termin open source bywa ujmowany dwojako: w sensie ścisłym – jako kategoria dotycząca przede wszystkim oprogramowania – albo w sensie rozszerzonym, odnoszonym do innych typów wytworów, gdy dostępna jest „źródłowa” postać projektu oraz prawa pozwalające na jej analizę, modyfikację i dalsze wykorzystanie.
Kryteria i licencjonowanie W odniesieniu do oprogramowania najbardziej wpływowym standardem pozostaje Definicja otwartego źródła utrzymywana przez OSI. Definicja ta wskazuje, że open source nie oznacza jedynie dostępu do kodu źródłowego. Warunki rozpowszechniania muszą spełniać szereg kryteriów, m.in. pozwalać na swobodną redystrybucję, udostępnienie kodu źródłowego, tworzenie utworów zależnych, brak dyskryminacji osób i grup, brak ograniczeń ze względu na dziedzinę zastosowania oraz neutralność technologiczną licencji.
OSI prowadzi wykaz licencji uznanych za zgodne z „Definicją otwartego źródła”. W obrębie licencji open source wyróżnia się m.in. licencje wzajemnościowe (copyleft), które wymagają zachowania tej samej licencji przy dalszej dystrybucji utworów zależnych, oraz licencje niewzajemnościowe, zezwalające na dalsze łączenie kodu z projektami rozpowszechnianymi na innych zasadach.
Sam publiczny dostęp do repozytorium nie jest wystarczający, by projekt uznać za open source. Jeżeli kod został opublikowany bez licencji, wówczas – mimo technicznej możliwości jego pobrania albo sforkowania na danej platformie – zastosowanie mają zwykłe reguły prawa autorskiego. Dlatego w praktyce pełnoprawny projekt open source łączy co najmniej trzy elementy: dostęp do preferowanej do modyfikacji postaci programu, licencję przyznającą odbiorcy określone wolności oraz możliwość legalnego rozpowszechniania zmian.
Historia Współdzielenie informacji technicznej przed oprogramowaniem W literaturze historycznej i ekonomicznej rozwój otwartego oprogramowania bywa interpretowany jako szczególny przypadek collective invention, czyli takiego reżimu innowacyjnego, w którym konkurujący ze sobą wytwórcy lub wynalazcy ujawniają informacje o konstrukcji i działaniu nowych rozwiązań, a następnie rozwijają je przez serię drobnych ulepszeń.
Autorzy stosujący tę perspektywę wskazują, że podobne mechanizmy występowały przed erą oprogramowania m.in. w XIX-wiecznym hutnictwie w Cleveland oraz przy udoskonalaniu kornwalijskich maszyn parowych. Nie oznacza to jednak, że zjawiska te były open source w dzisiejszym, ścisłym znaczeniu: nie dotyczyły kodu źródłowego ani licencji spełniających kryteria Definicji otwartego źródła. Są one raczej traktowane jako historyczne analogie pokazujące, że publiczne ujawnianie wiedzy technicznej i kumulatywne ulepszanie wspólnej bazy rozwiązań istniały już wcześniej.
Z tej perspektywy nowość open source polega nie tyle na samym fakcie współdzielenia wiedzy, ile na przeniesieniu takiego modelu do obszaru oprogramowania oraz na powiązaniu go z licencjami, które pozwoliły utrzymać wspólny zasób kodu także po wyłonieniu się dominujących rozwiązań technicznych.
Wczesne dzielenie się oprogramowaniem Praktyka dzielenia się kodem i wspólnego poprawiania oprogramowania istniała przed upowszechnieniem samego terminu open source; według OSI historia rozwoju oprogramowania opartego na współdzieleniu i wspólnym ulepszaniu kodu jest niemal tak długa jak historia samego programowania. W pierwszych dekadach informatyki oprogramowanie często nie było jeszcze traktowane jako osobny produkt rynkowy. Użytkownicy komputerów tworzyli programy na potrzeby konkretnych maszyn, a producenci sprzętu dostarczali część programów wraz z komputerami.
Jednym z najwcześniejszych przykładów zorganizowanej wymiany programów była powstała w 1955 roku grupa użytkowników komputerów IBM o nazwie SHARE. Według Computer History Museum jej nazwa miała podkreślać ideę wymiany informacji i programów między instalacjami komputerowymi, a sama grupa szybko rozwinęła się w środowisko tworzące oprogramowanie i dokumentację dla komputerów IBM. Podobne praktyki występowały także w innych grupach użytkowników i środowiskach akademickich. Computer History Museum wskazuje, że w latach 50. korzyści ze współpracy często przeważały nad korzyściami z konkurencji, zwłaszcza w odniesieniu do oprogramowania, które nie było jeszcze samodzielnym produktem komercyjnym.
Równocześnie stopniowo kształtował się rynek oprogramowania jako oddzielnego produktu. W 1969 roku IBM rozdzielił sprzedaż wielu programów od sprzedaży sprzętu, co według Computer History Museum przyczyniło się do przejścia od traktowania oprogramowania jako dodatku do komputerów do traktowania go jako konkurencyjnego produktu komercyjnego. Zmiana ta była jednym z czynników późniejszego napięcia między modelem współdzielenia kodu a modelem własnościowego oprogramowania.
Unix, BSD i komercjalizacja oprogramowania Szczególnie istotnym środowiskiem dla późniejszego rozumienia open source była społeczność użytkowników i twórców systemu Unix. System ten został opracowany około 1970 roku w Bell Labs, a następnie był adaptowany do różnych platform sprzętowych. Wraz z kolejnymi adaptacjami powstawały odmiany systemu, rozwijane w środowiskach akademickich, badawczych i przemysłowych. Według Britanniki praktyka dzielenia się kodem była szczególnie skuteczna właśnie wśród twórców i użytkowników Uniksa, co miało znaczenie dla sukcesu tego systemu.
Ważnym przykładem przedhistorycznej formy otwartego rozwoju była Berkeley Software Distribution (BSD), wywodząca się z prac nad Uniksem na Uniwersytecie Kalifornijskim w Berkeley. W 1977 roku Bill Joy rozpoczął dystrybucję kodu Berkeley Unix, co pozwalało innym programistom uczyć się na podstawie kodu i go ulepszać. Ten moment określa się jako jeden z pionierskich etapów tego, co później zaczęto nazywać ruchem open source.
W latach 70. i 80. XX wieku coraz większe znaczenie zaczęły mieć modele własnościowe, w których użytkownik otrzymywał gotowy program, ale niekoniecznie dostęp do jego kodu źródłowego albo prawo do modyfikacji. W tym samym czasie wcześniejsze praktyki akademickiego i technicznego dzielenia się kodem zaczęły być postrzegane jako odrębna tradycja, wymagająca obrony prawnej i organizacyjnej.
Ruch wolnego oprogramowania Reakcją na rosnącą komercjalizację i zamykanie kodu było powstanie . Richard Stallman, pracujący wcześniej w środowisku MIT, opisywał tamtejszą społeczność programistyczną jako wspólnotę wymiany kodu, w której użytkownicy mogli prosić o kod źródłowy, czytać go, zmieniać i wykorzystywać fragmenty w nowych programach. Według Stallmana sytuacja zmieniła się na początku lat 80., gdy coraz częstsze stały się systemy własnościowe i umowy ograniczające użytkownikom możliwość współpracy.
W 1983 roku Stallman ogłosił projekt GNU, którego celem było stworzenie kompletnego, wolnego systemu operacyjnego zgodnego z Uniksem. Rozwój GNU rozpoczął się w styczniu 1984 roku, a w 1985 roku powstała Free Software Foundation (FSF), początkowo jako organizacja mająca wspierać finansowanie prac nad GNU. W tym samym roku Stallman opublikował GNU Manifesto, w którym przedstawił uzasadnienie projektu i apelował o pomoc w budowie wolnego systemu operacyjnego.
Znaczenie ruchu wolnego oprogramowania polegało nie tylko na tworzeniu kodu, lecz także na sformułowaniu prawnych i etycznych zasad jego udostępniania. FSF opisywała wolne oprogramowanie przez pryzmat wolności uruchamiania, kopiowania, rozpowszechniania, badania, zmieniania i ulepszania programu, przy czym dostęp do kodu źródłowego był warunkiem koniecznym części tych wolności. W 1989 roku opublikowano pierwszą wersję GNU GPL, licencji typu copyleft, która miała zabezpieczać możliwość dalszego korzystania, modyfikowania i rozpowszechniania programu oraz jego wersji pochodnych na tych samych zasadach.
Linux i ukształtowanie modelu internetowej współpracy Na początku lat 90. rozwój Internetu i poczty elektronicznej umożliwił koordynowanie pracy rozproszonych społeczności programistycznych na większą skalę. W 1991 roku Linus Torvalds, student Uniwersytetu Helsińskiego, rozpoczął rozwój jądra Linux, korzystając z narzędzi projektu GNU i publikując kolejne wersje w sposób umożliwiający udział zewnętrznych programistów. Linux jest określany jako pierwszy duży projekt open source skoncentrowany wokół Internetu, w którym szybkie wydania i zachęcanie do udziału wielu współtwórców pozwoliły na gwałtowny rozwój społeczności.
Linux odegrał szczególną rolę dlatego, że połączył wcześniejsze elementy: tradycję uniksową, narzędzia i licencje ruchu wolnego oprogramowania oraz internetowy model współpracy. W połowie lat 90. środowiska rozwijające wolne oprogramowanie zaczęły coraz wyraźniej postrzegać się jako szersza wspólnota, a Linux stał się jednym z jej najważniejszych punktów odniesienia.
W 1997 roku Eric S. Raymond opublikował esej The Cathedral and the Bazaar, w którym porównał dwa modele tworzenia oprogramowania: scentralizowany, hierarchiczny model „katedry” oraz rozproszony, publiczny i iteracyjny model „bazaru”, kojarzony przez niego z rozwojem Linuksa. Tekst ten pomógł opisać dotychczasowe praktyki jako spójny model organizacji pracy, oparty na szerokiej recenzji kodu, częstych wydaniach i traktowaniu użytkowników jako potencjalnych współtwórców.
Przyjęcie terminu „open source”