Mitä avoimen lähdekoodin ohjelmistot ovat?
Avoimen lähdekoodin ohjelmistot ovat ohjelmistoja, joiden lähdekoodi on julkisesti kaikkien tarkasteltava, muokattavissa ja jaeltavissa. Avoimen lähdekoodin aloite tarjoaa laajalti hyväksytyn määritelmän:
"Avoimen lähdekoodin ohjelmistot ovat ohjelmistoja, joiden lähdekoodia kuka tahansa voi tarkastaa, muokata ja parantaa. Tekijänoikeuksien haltija antaa käyttäjille oikeudet tutkia, muuttaa ja jakaa ohjelmistoa kenelle tahansa ja mihin tahansa tarkoitukseen avoimen lähdekoodin lisenssin ehtojen mukaisesti."
Tämä määritelmä korostaa useita keskeisiä periaatteita:
- Lähdekoodin saatavuus: Koko lähdekoodin on oltava julkisesti saatavilla, ei vain suoritettavia binääritiedostoja.
- Vapaus muuttaa: Käyttäjät voivat muuttaa ohjelmistoa tarpeidensa mukaan, korjata virheitä tai lisätä ominaisuuksia.
- Uudelleenjako-oikeudet: Käyttäjät voivat jakaa ohjelmiston muiden kanssa joko alkuperäisessä tai muokatussa muodossa.
- Käyttöoikeusehdot: Käyttöoikeudet määritellään avoimen lähdekoodin lisenssillä, joka määrittää käyttöoikeudet, rajoitukset ja velvollisuudet.
Avoimen lähdekoodin ohjelmistot eroavat perustavanlaatuisesti patentoiduista ohjelmistoista, joissa lähdekoodi pysyy salaisena ja tekijänoikeuksien haltija valvoo tiukasti käyttöoikeuksia.
Avoimen lähdekoodin yhteistyöhön perustuva malli
Avoimen lähdekoodin kehitys sisältää yhteistyöhön perustuvan ohjelmiston luomisen useiden avustajien kanssa:
Yhteisölähtöinen kehitys
- Hajautetut avustajat: Kehittäjät ympäri maailmaa osallistuvat koodiin, dokumentaatioon, testaukseen ja tukeen.
- Vapaaehtoinen osallistuminen: Monet osallistujat osallistuvat vapaaehtoisesti, motivoituneina ongelmien ratkaisemisesta, oppimisesta, maineen rakentamisesta tai käyttämiensä työkalujen tukemisesta.
- Meritokratia: Vaikutusvalta projekteissa korreloi tyypillisesti panoksen laadun ja määrän kanssa organisaatiohierarkian sijaan.
- Läpinäkyvät prosessit: Kehitys tapahtuu julkisissa arkistoissa, joissa kuka tahansa voi seurata keskusteluja, päätöksiä ja muutoksia.
Yhteistyöhön perustuvat työnkulut
- Julkiset arkistot: Koodia isännöidään alustoilla, kuten GitHub, GitLab tai Bitbucket, jossa kuka tahansa voi tarkastella sitä.
- Ongelmien seuranta: Virheitä ja ominaisuuspyyntöjä seurataan julkisesti, jolloin yhteisön jäsenet voivat tunnistaa ongelmia ja ehdottaa ratkaisuja.
- Pull-pyyntöjen tarkistukset: Muokkaajat lähettävät muutokset pull-pyynnöillä, jotka ylläpitäjät ja muut yhteisön jäsenet tarkistavat ennen yhdistämistä.
- Julkaisujen hallinta: Ylläpitäjät koordinoivat julkaisuja, varmistaen vakauden ja yhteensopivuuden samalla kun ne sisällyttävät yhteisön muokkaukset.
Projektin hallintomallit
Eri avoimen lähdekoodin projekteissa käytetään erilaisia hallintotapoja:
- Hyväntahtoinen diktaattori: Yksittäinen henkilö (usein perustaja) tekee lopulliset päätökset projektin suunnasta (esim. Python ja Guido van Rossum historiallisesti).
- Ydintiimi: Pieni ryhmä ylläpitäjiä tekee päätökset kollektiivisesti konsensuksella tai äänestyksellä.
- Säätiön hallinto: Suuret projektit luovat usein säätiöitä (kuten Apache Foundation, Linux Foundation), jotka tarjoavat oikeudellisen rakenteen, resurssit ja hallintokehykset.
- Yrityssponsorointi: Monia avoimen lähdekoodin projekteja ylläpitävät pääasiassa ohjelmistosta riippuvaisten yritysten työntekijät.
Avoimen lähdekoodin ohjelmistojen laaja käyttöönotto
Avoimen lähdekoodin ohjelmistoista on tullut kaikkialla kaikilla tekniikan aloilla:
Alan käyttöönottotilastot
- Yrityskäyttö: Yli 90% yrityksistä käyttää avoimen lähdekoodin ohjelmistoja tuotantoympäristöissä.
- Internet-infrastruktuuri: Suurin osa verkkopalvelimista toimii Linuxissa (avoin lähdekoodi), palvelee sisältöä Apachen tai Nginxin (avoimen lähdekoodin) kautta ja käyttää tietokantoja, kuten PostgreSQL tai MySQL (avoin lähdekoodi).
- Pilvipalvelut: Suuret pilvialustat käyttävät ja tukevat laajasti avoimen lähdekoodin teknologioita – Kubernetes, Docker, Terraform ja lukuisat muut avoimen lähdekoodin työkalut muodostavat modernin pilvi-infrastruktuurin perustan.
- Mobiililaitteisiin: Android, maailman suosituin mobiilikäyttöjärjestelmä, on rakennettu Linux-ytimeen ja sisältää laajat avoimen lähdekoodin komponentit.
Teknologiapinon koostumus
Nykyaikaiset teknologiapinot ovat pääasiassa avoimen lähdekoodin tuotteita:
- Käyttöjärjestelmät: Linux käyttää pilviinfrastruktuuria, säilöjä ja monia sulautettuja järjestelmiä.
- Ohjelmointikieliä: Python, JavaScript, Java, Go, Rust, Ruby, PHP – suosituimmat kielet ovat avoimen lähdekoodin.
- Tietokannat: PostgreSQL, MySQL, MongoDB, Redis, Elasticsearch hallitsevat tietokantojen käyttöönottoa.
- Web-tekniikat: React, Angular, Vue.js, Express, Django, Rails mahdollistavat verkkosovellusten kehittämisen.
- Kehittämisen työkalut: Git, Docker, Kubernetes, Jenkins, VS Code ovat välttämättömiä avoimen lähdekoodin kehitystyökaluja.
Microsoftin omaksuma avoimen lähdekoodin
Microsoft on esimerkki yritysten asenteiden muutoksesta avoimen lähdekoodin ohjelmistoja kohtaan:
Historiallinen muutos
Microsoft on historiallisesti pitänyt avointa lähdekoodia uhkana omalle ohjelmistoliiketoimintamallilleen. Tämä muuttui dramaattisesti viimeisen vuosikymmenen aikana, kun yritys tunnusti avoimen lähdekoodin strategisen merkityksen.
Avoimen lähdekoodin Azuressa
Azure integroi laajasti avoimen lähdekoodin teknologioita:
Kielet ja kestoajat: Azure tukee Pythonia, Node.js-, Java-, PHP-, Ruby-, Go- ja muita avoimen lähdekoodin kieliä ensiluokkaisina ympäristövaihtoehtoina.
Tietokannat: Azure tarjoaa hallittuja palveluita PostgreSQL:lle, MySQL:lle, MariaDB:lle ja Redisille omien tarjousten ohella.
Säilön orkestrointi: Azure Kubernetes Service (AKS) tarjoaa hallitun Kubernetesin, avoimen lähdekoodin konttien orkestrointiympäristön.
Kehittämisen työkalut: Azure DevOps integroituu Gitiin, Jenkinsiin ja muihin avoimen lähdekoodin työkaluihin, kun taas GitHub (Microsoftin ostama) on maailman suurin alusta avoimen lähdekoodin kehittämiseen.
Data ja analytiikka: Azure tukee Apache Sparkia, Hadoopia, Kafkaa ja muita avoimen lähdekoodin big data -tekniikoita.
NET-muunnos
NET-ympäristö osoittaa Microsoftin kattavan sitoutumisen avoimeen lähdekoodiin:
Avoimen lähdekoodin .NET: Microsoft julkaisi .NET Coren (nyt .NET 5+) avoimena lähdekoodina MIT-lisenssillä, jolloin koko alusta on vapaasti saatavilla lähdekoodilla. NET-suorituspalvelu, kirjastot, kääntäjät ja työkalut ovat kaikki avoimen lähdekoodin palveluksessa.
Monialustainen kehitys: Avoimen lähdekoodin .NET:n avulla Microsoft mahdollisti monialustaisen kehityksen Windowsissa, Linuxissa ja macOS:ssä ja laajensi dramaattisesti . NET:n ulottuvuus.
Yhteisön rahoitusosuudet: GitHubin .NET-tietovarastot vastaanottavat tuhansia muokkauksia Microsoftin ulkopuolisilta kehittäjiltä, ja yritys tarkastelee ja hyväksyy aktiivisesti yhteisön parannuksia.
Avoimen lähdekoodin riippuvuudet: ASP.NET Core -sovellukset sisältävät yleensä monia avoimen lähdekoodin komponentteja:
- Käyttöliittymäkirjastot: jQuery, React, Angular Vue.js mahdollistavat monipuoliset käyttöliittymät.
- Apuohjelmien kirjastot: Newtonsoft.Json, Serilog, AutoMapper ja lukemattomat muut tarjoavat yhteisiä toimintoja.
- Testauskehykset: xUnit, NUnit, Moq tukevat testilähtöistä kehitystä.
Osallistuminen avoimen lähdekoodin projekteihin
Microsoft osallistuu aktiivisesti avoimen lähdekoodin projekteihin omien projektiensa ulkopuolella:
Linux-ydin: Microsoft osallistuu Linux-ytimeen, parantaa Hyper-V integrointia ja tukee Azure-infrastruktuuria.
Kubernetes: Microsoft on Kubernetesin merkittävä tekijä, joka auttaa muokkaamaan AKS:ää käyttävää alustaa.
Avoimen lähdekoodin aloitteet: Microsoft sponsoroi avoimen lähdekoodin tapahtumia, rahoittaa kriittistä avoimen lähdekoodin infrastruktuuria ja palkkaa kehittäjiä työskentelemään kokopäiväisesti avoimen lähdekoodin projekteissa.
Microsoftin luomat avoimen lähdekoodin projektit
Olemassa olevien projektien lisäksi Microsoft luo ja avaa merkittäviä ohjelmistoja:
Visual Studio -koodi: Suosituin koodieditori on avoimen lähdekoodin, ja sen laajennukset, teemat ja parannukset ovat maailmanlaajuisen yhteisön tuottamia.
TypeScript: Microsoftin kieli tyyppiturvalliseen JavaScript-kehitykseen on avoimen lähdekoodin ja laajalti käytetty.
PowerShell-ydin: Microsoftin automaatiokehys on avoimen lähdekoodin ja monialustainen.
NET-säätiö: Microsoft perusti .NET Foundationin tukemaan avoimen lähdekoodin projekteja .NET-ekosysteemissä tarjoamalla resursseja, hallintoa ja yhteisön tukea.
Lisätietoja on .NET Foundation -sivuston.
Strategiset perustelut
Microsoftin omaksuma avoimen lähdekoodin heijastaa strategisia liiketoimintapäätöksiä:
Kehittäjän käyttöönotto: Kehittäjät suosivat avoimen lähdekoodin työkaluja ja kieliä. Tukemalla avointa lähdekoodia Microsoft houkuttelee kehittäjiä alustoilleen.
Pilviliiketoiminta: Avoimen lähdekoodin työkuormat edistävät pilvipalvelujen käyttöönottoa. Erinomainen avoimen lähdekoodin tuki Azuressa tekee alustasta houkuttelevamman.
Innovaation nopeus: Avoin lähdekoodi mahdollistaa nopeamman innovoinnin yhteisön panoksen kautta, mikä vähentää Microsoftin kehitystaakkaa.
Ekosysteemin kasvu: Avoimen lähdekoodin yhteisöt luovat arvokkaita laajennuksia, työkaluja ja tietoa, jotka lisäävät alustan arvoa.
Kilpailukykyinen asema: Koska kilpailijat (AWS, Google Cloud) tukevat laajasti avointa lähdekoodia, Microsoftin on vastattava tai ylitettävä avoimen lähdekoodin ominaisuudet.
Miksi organisaatiot valitsevat avoimen lähdekoodin
Organisaatiot valitsevat avoimen lähdekoodin ohjelmistot useista syistä:
Kustannusnäkökohdat: Lisenssimaksujen poistaminen vähentää suoria kustannuksia, mikä on erityisen tärkeää, kun ohjelmistoja otetaan käyttöön suuressa mittakaavassa tai rakennetaan tuotteita, joissa lisensointikustannukset siirrettäisiin asiakkaille.
Joustavuus ja hallinta: Lähdekoodin saatavuus tarkoittaa, että organisaatiot voivat muokata ohjelmistoja vastaamaan erityistarpeita, korjata kriittisiä virheitä itsenäisesti, eivätkä ne ole lukittuina toimittajien ominaisuuksien tai korjausten aikatauluihin.
Läpinäkyvyys ja turvallisuus: Julkinen lähdekoodi mahdollistaa tietoturvatarkastukset, yhteisön tarkistus tunnistaa haavoittuvuudet nopeammin ja piilotettujen takaovien tai tiedonkeruun puuttuminen lisää luottamusta.
Toimittajalukkiutumisen välttäminen: Avoimen lähdekoodin ohjelmistoja voidaan tyypillisesti ottaa käyttöön missä tahansa, mikä vähentää riippuvuutta tietyistä toimittajista ja parantaa neuvotteluasemia.
Yhteisön tuki: Aktiiviset avoimen lähdekoodin yhteisöt tarjoavat foorumeita, dokumentaatiota, opetusohjelmia ja vertaisapua, jotka usein kilpailevat tai ylittävät kaupallisen tuen laadun.
Innovaatio ja ominaisuudet: Huipputeknologiat syntyvät usein avoimen lähdekoodin ensimmäisenä, ja organisaatiot voivat tarjota tarvitsemiaan ominaisuuksia sen sijaan, että odottaisivat toimittajien etenemissuunnitelmia.
Avoimen lähdekoodin ohjelmistojen ymmärtäminen ja miksi ne ovat niin laajalti omaksuttuja, tarjoaa olennaisen kontekstin tutkittaessa huolenaiheita, joihin organisaatioiden on puututtava avoimen lähdekoodin komponentteja ottaessaan käyttöön.