Open source programování

V zimním semestru školního roku 2012/2013 opět vyučuji předmět Open source programování (NPRG055) (který z administrativních důvodů oficiálně garantuje Martin Mareš). Tady najdete základní informace ke kurzu, odkazy na doplňující zdroje, podmínky pro zápočet a zkoušku a průběžné zpravodajství.

Kdy a kde? Ve středu 15:40-17:20 v S3; několik lekcí bude praktických, ty se budou odehrávat ve stejný čas v SU2 (oznámíme předem). Začínáme druhý týden v semestru.

Co a proč? Kurz si klade dva cíle: seznámit vás s open source filosofií, komunitou, ekosystémem a nástroji používanými pro vývoj a spolupráci na projektech. A naučit vás v praxi modifikovat existující open source software, předložit a obhájit své změny v komunitě a dosáhnout jejich úspěšného začlenění do upstreamu.

Co chceme od vás? Tento předmět trochu necharakteristicky vyžaduje průběžnou práci během semestru. Měli byste nějak prospěšně vylepšit vámi zvolený open source projekt (viz níže). Zápočet bude za dvě presentace během semestru. Ke zkoušce je velmi vhodné, aby vaše změna byla již v upstreamu (a měli byste mít samozřejmě přehled o probraných tématech). Zkouška bude probíhat nejspíš jako rozhovor nad patchem a záznamy komunikace s ostatními vývojáři.

Co už byste měli umět? Alespoň základní technická angličtina je prakticky nezbytná. Měli byste umět obstojně programovat v jazyce, ve kterém je napsaný projekt, který si zvolíte. Pro pochopení některých přednášek je dobré mít přehled o UNIXových systémech zhruba na úrovni předmětu Úvod do UNIXu (ovšem bez fines shellového programování).

Kontakt: Maily pište na pasky@ucw.cz, předmět zprávy prefixujte [NPRG055]. Konzultační hodiny dohodou skoro kdykoliv.

O projektech a vylepšeních

Cílem hry je získat zkušenosti s praktickou interakcí s vývojáři existujícího projektu a něco se od nich v rámci reviewu patche naučit. Dle toho byste měli vybírat projekt i téma patche.

Projekt může být vpodstatě jakýkoliv open source software (v principu je možný i hardware), ve vlastním zájmu si vyberte nějaký aktivně vyvíjený (hrst commitů za poslední měsíce). Může to být klikací aplikace (klidně windowsová!), driver pro operační systém, embedded program, webový framework, knihovna... Představivosti se meze nekladou. Ovšem neměl by to být váš vlastní projekt a pokud již do nějakého aktivně přispíváte, také si vyberte nějaký jiný, ať poznáte, jak se to dělá i jinde.

Změna, kterou naimplementujete a budete se snažit protlačit, by měla být...

Můžete tedy například fixnout složitější bug, připsat novou featuru či modul nebo napsat větší kus dokumentace... Trochu skepticky se stavíme k balíčkování software a lokalizaci uživatelského rozhraní – samy o sobě tyto úkony považujeme za triviální; to se může změnit, jsou-li spojeny např. s opravami bugů a jinými změnami kódu nutnými ke korektnímu zabalíčkování či lokalizaci.

Nápady na projekty najdete na wiki stránce předmětu, nebojte se připisovat vlastní! Projekt si musíte včas mailem zarezervovat; v případě konfliktu první přijatý mail vyhrává.

Může se z objektivních důvodů stát, že se vám změnu do upstreamu začlenit nepodaří – zejména pokud se potkáte s nekomunikativním nebo přímo nepřátelsky naladěným upstreamem. Budeme shovívaví, prokážete-li, že jste udělali vše, co bylo ve vašich osobních silách – sami jste na všechny připomínky reagovali konstruktivně a v řádu jednotek dní, své patche a dotazy jste pravidelně urgovali, atd. Nezapomeňte nás včas upozornit na problémy a třeba společně vymyslíme, v čem to vázne. Narazíte-li při implementaci na nepředvídaný zádrhel, také se včas ozvěte a domluvíme se na nějakém kompromisu. Komunikaci s upstreamem si archivujte (v případě bugzilly, fór nebo mailinglistů se tak obvykle děje implicitně), budeme na ni zvědaví.

Studenti a projekty

Daniel Lovaskoquiltquilt setup package.spec nepocita s tym, ze by v danom baliku mohol byt subor s nazvom "series" alebo adresar s nazvom "patches".
Pali RohárkernelLinuxovy ovladac, ktory o baterke v Nokii N900 bude podavat dostupne informacie. Konkretne aktualne napatie, teplotu a maximalnu (design) kapacitu (BSI). https://gitorious.org/rx51-bme-replacement/rx51_battery
Pavel TauferFlashFiler, muttOprava crashe FlashFileru na souborech >2GiB; oprava bugu v lokalizaci muttu.
Dominik TáborskýHelenOSImplementace CRC32 a taky knihovna pro cteni MBR tabulek a fdisk-like programem
Adam JuraszeksakuraImplementace nastavení: tabbar vždy zobrazovat; obecně oprava třídy problémů spojených se změnou velikosti okna.
Martin PelikánzathuraNěco z: Oprava některých crashů, podpora pro DVI, preloading PDF či něco podobného
Jiří KrálovecHelenOSAPI a implementace indexed sequence ADT v libc HelenOS
Vítězslav ČížekfoxtrotgpsMuj patch prida nove okenko ve kterem se bude zobrazovat vyskovy profil prosle trasy.

Plán semestru

(Průběžně se zde budou objevovat i odkazy na slajdy, příp. další materiály. Plán budoucích přednášek je předběžný.)

Přednášky jsou open source! pasky/oss-lec @ GitHub

  1. Administrativa. Intro, co je open source. Historie plus stručný přehled licencí. (PDF)
  2. Budeme v SU2. Infrastruktura open source projektu. Hackovací intro – vlastní názvy měst ve hře OpenTTD. Kuchařka k přijetí patche.
  3. Otevřené operační systémy, historie linuxového systému. (PDF) Návrat k tomu, jak funguje GPL, diskuse o copyleftu.
  4. Budeme v SU2. Hackovací intro II.
  5. Zajímavé open source projekty a způsoby jejich vývoje I. (PDF)
  6. První zápočtové prezentace. Domácí úkol: situace kolem kernelu v RHEL, přečtěte si GPL.
  7. Zajímavé open source projekty II. Různé styly vývoje a osobní zkušenosti. Diskuse o kernelu v RHEL.
  8. Diskuse o firmware blobech a UEFI. Anatomie Linuxu I.
  9. Budeme v SU2. Anatomie Linuxu II. Git tutorial.
  10. Diskuse o aktuálních tématech. Gitové zajímavosti. Svobodné programátorské prostředí I.
  11. Svobodné programátorské prostředí II. Otevřený hardware.
  12. Druhé zápočtové prezenace. Průvodce správce projektu.
  13. 9. 1. - Miroslav Beneš, právní otázky spojené s opensource a vývojem software.

Odkazy a materiály