Tässä osassa ollaan käsitelty ohjelmiston suunnittelua ja toteutusta. Seuraavaksi katsotaan, missä kohtaa ohjelmiston suunnittelua lisenssöinti on merkittävässä osassa.

Osan on kirjoittanut Akira Taguchi.

Kuvitellaan, että teet ohtun miniprojektiksi graafisen laskimen. Julkaiset koodisi GitHubiin, ja joku ottaa sinuun yhteyttä. Yhteydenottaja kehuu teosta ja haluaisi ottaa tämän käyttöön oletuslaskimena kehittämässään käyttöjärjestelmäjakelussaan, Cubblissa. Yhteydenottaja kuitenkin kertoo, ettei tämä onnistu ennen kuin olet lisensöinyt ohjelmasi sopivalla lisenssillä. Mitä teet?

Ohjelmistolisenssien perusteet

Ohjelmistolisenssi on lainopillinen väline, joka säätelee ohjelmiston käyttöä ja edelleenjakelua. Ohjelmistokehittäjillä tämä usein ilmenee LICENSE-tiedoston julkaisemista lähdekoodin mukana. Tämän LICENSE-tiedoston sisältö määrää valitun ohjelmistolisenssin. Esimerkki Poetryn ohjelmistolisenssistä: https://github.com/python-poetry/poetry/blob/master/LICENSE.

Ohjelmistolisenssi valitaan käyttötarkoituksen mukaan. Seuraava verkkosivu on hyvä lähtökohta löytää juuri oikea ohjelmistolisenssi tarkoitukseen: https://choosealicense.com/. Verkkosivuilta voidaan kopioida leikepöydälle haluttu lisenssi ja täyttää sillä repositorion LICENSE-tiedoston sisältö (ks. Poetry-esimerkki).

Vaikka Choose a License-verkkosivun Appendix-alasivu (https://choosealicense.com/appendix/) antaakin hyvin vertailtavaksi lisenssejä, käydään silti nyt läpi muutama käytetympi lisenssi karkeasti läpi:

Lisenssi Ehdot Tyyppi
MIT-lisenssi Lisenssin tekstin pitää säilyä lähdekoodissa ja mm. suljettuja versioita saa tehdä Suvaitseva
GNU General Public License, eli GPL Lähdekoodi pitää julkaista samalla lisenssillä eikä suljettuja versioita saa tehdä Suojeleva
GPL 2.0 Sama kuin GPL, mutta painotus ettei suljettuja versioita saa tehdä, edes muiden lakivelvotteiden vuoksi Suojeleva
GPL 3.0 Sama kuin GPLv2, mutta painotus ettei suorittava rautakaan saa rajoittaa GPL-lisenssin velvoitteita Suojeleva
Mozilla Public-lisenssi 2.0 Sama kuin GPL, paitsi mikäli projekti kasvaa merkittävän suureksi, voidaan lisenssi vaihtaa, esim. Chromium -> Chrome Suvaitseva
The Unlicense Tee mitä haluat Avoin
- (Ei lisenssiä) Omistat kaikki oikeudet Yksityisomisteinen
CC BY Lisenssin tekstin pitää säilyä teoksessa. Voidaan antaa ei-ohjelmistoille, esim. Kurssimateriaalille Suvaitseva
CC BY NC Sama kuin CC BY, mutta kaupallinen käyttö on kielletty (NC, No-Commercial) Suvaitseva

Harjoitus

Katsotaan ensin, mitä lisenssejä muut ohjelmistot käyttävät.

Mitä lisenssiä Code Climate käyttää: https://github.com/codeclimate/codeclimate/?

Vastaus GNU Affero General Public License v3.0


Mitä lisenssiä Visual Studio Code käyttää: https://github.com/microsoft/vscode/?

Vastaus MIT-lisenssi


Seuraavaksi harjoitellaan lisenssin valintaa ohtun miniprojektia varten.

Haluan, että miniprojektiani voidaan käyttää ja jakaa millä tahansa ehdoilla. Valitsen

  1. MIT-lisenssi
  2. The Unlicense
Vastaus b. The Unlicense


Mikäli miniprojektiani käytetään suuremmassa ohjelmistossa, haluan että suurempi projekti saa halutessaan käyttää eri lisenssiä, kuin miniprojektin alkuperäinen lisenssi. Valitsen

  1. MIT-lisenssi
  2. Mozilla Public-lisenssi 2.0
Vastaus b. Mozilla Public-lisenssi 2.0


Nyt osaat toivottavasti lisensoida ohtun miniprojektisi sekä tulevat ohjelmistoprojektisi. Mikäli jotain jäi epäselväksi, pingaa @mynamabitchiro (Akira Taguchi) OhTun Discord-palvelimella tai mistä vain internetin kulmasta löydätkään Akiran.

Vapaa vai avoin

Vapaalla ohjelmistolla ja avoimella lähdekoodilla on suuri ero. Seuraava video kertoo ohjelmistovapaudesta sekä tämän puolesta taistelevan Software Freedom Conservancysta:

Jos kiinnostuit ohjelmistovapaudesta, pistä rohkeasti viestiä Akiralle!