[[!meta title="Cvičení"]] [[!toc levels=2]] Obecné informace ========== Cvičení probíhají v laboratoři [KN:E-s109][1] a vede je [Michal Sojka][2]. Druhým cvičícím je [Michal Horn][8]. Na stanicích v laboratoři je síťová instalace [Debian][6] GNU/Linux 7 (Wheezy). Informace o účtech a vzdáleném přístupu se nacházejí na stránkách [IT oddělení katedry řídicí techniky][5]. Osnova ========== 1. Seznámení se s předmětem a hodnocením. Úloha 1: [[Hackovací intro|cviceni/1]]. 2. Úloha 2: [[Tvorba "produktu" z nezávislých OSS komponent|cviceni/2]] (embedded Linux) 3. [[Specifikace individuálního zadání|cviceni/3]] samostatná práce a jeho zařazení do existujících OS projektů (konzultace se cvičícími) 4. Úloha 3: [[Verzovací systém Git|cviceni/4]] 5. [[Prezentace projektu do kterého budu přispívat v samostatné práci a nástin řešení|cviceni/5]] 6. Úloha 4: [[Obsluha mnoha klientů|cviceni/server]] 7. Úloha 5: Open street map 8. Test (16. 4. 2015) ([[zadání|cviceni/6]], [[výsledky|cviceni/6/vysledky]]) 9. [[Samostatná práce, konzultace|cviceni/konzultace]] 10. [[Samostatná práce, konzultace|cviceni/konzultace]] 11. [[Samostatná práce, konzultace|cviceni/konzultace]] 12. [[Prezentace výsledků (14. 5. 2014; povinná účast)|cviceni/11]] 13. [[Zápočet|cviceni/12]] Podmínky udělení zápočtu ========== * Účast na 1. – 8. a 12. cvičení (individuálně hodnotíme předchozí omluvy ze závažných důvodů), * odevzdané úlohy 1 – 5, * absolvován test, * prezentace záměru práce, * prezentace výsledku práce. Samostatná práce ========== Cílem samostatné práce je zkusit si na vlastní kůži jak funguje (či nefunguje :-) ) vývoj open source softwaru a naučit se komunikovat s open source vývojářskými komunitami. Každý student si vybere existující open source projekt a pokusí se do něj přispět. Vybraný projekt musí splňovat následující podmínky: * má veřejně přístupný repozitář s historií projektu * historie musí dokládat minimálně dva roky aktivního vývoje nebo na vývoji musí pracovat minimálně pět aktivních vývojářů (autorů commitů). Příspěvek do projektu může být téměř vše, co projektu prospěje – např.: * oprava chyby, * přidání nové vlastnosti, * napsání dokumentace, * lokalizace (netechnické činnosti hodnotíme menším počtem bodů). Cílem ale není pouze práci provést, ale dostat ji do projektu tak, aby její výsledky byly dostupné všem, kdo daný projekt využívají. V závislosti na typu (a velikosti) projektu může být tento krok mnohem těžší než vlastní vývojová práce. Je potřeba srozumitelně vysvětlit správcům projektu co děláte, proč to děláte a případně reagovat na další požadavky správců. Výsledky své práce zveřejněte na své [[profilové stránce|student/2015]]. Na konci semestru by vaše stránka měla vypadat podobně jako např. [[stránka pana Houdka|student/houdepre]]. Jak si vybrat vhodný projekt? ----------------------------------- Open source projekty se dají rozdělit na dobře a špatně fungující. Chceme, abyste se v tomto předmětu zapojili do těch dobrých a špatně fungujícím se vyhnuli. Nejenom, že tím dostanete víc bodů, ale hlavně ze své práce budete mít mnohem lepší pocit. V seznamu níže uvádíme naše doporučení ohledně výběru projektu a úlohy, kterou budete řešit. Doporučení vycházejí ze zkušeností z minulých běhů předmětu OSP. * Zkontrolujte, že je projekt živý, t.j. do repozitáře přibývají commity a správci projektu komunikují s ostatními (mailing list, fórum, IRC). Pokud je poslední commit v projektu několik let starý nebo se během posledních pár měsíců neobjevila v mailing listu jediná zpráva od správců, projektu se vyhněte. * Pokud se rozhodnete opravit chybu, kterou najdete v bug trackeru, je dobré si vybrat takovou chybu, která byla správci projektu potvrzena. Často se v bug trackeru objevují hlášení od uživatelů, která sice jako chyby vypadají, ale ve skutečnosti to chyby nejsou. Může se jednat i vlastnosti programu, které správci nechtějí měnit, nebo to může být chyba konfiguraci daného uživatele apod. Ať už je důvod jakýkoli, pokud takovou chybu-nechybu opravíte, moc úspěchu s tím nesklidíte. A i když si vyberete potvrzenou chybu, přemýšlejte nad tím jak je její oprava užitečná pro uživatele. Často se totiž studentům stává, že i když chybu opraví nedostanou na ni do konce předmětu žádnou odpověď, protože v projektu řeší důležitější (užitečnější) věci. * Pokud chcete implementovat novou vlastnost, vyberte si takovou věc o kterou mají uživatelé (nebo správci) zájem. Nevymýšlejte nesmysly, které nikoho nezajímají. Pokud nevíte jaký projekt si vybrat, může vám pomoct [[tato stránka|cviceni/projekty]]. Při práci na projektech vám můžou pomoct [[odpovědi na často kladené otázky|faq]]. Google summer of code ---------- Širokou nabídku open source projektů, včetně konkrétních úloh, které mají zájem o příspěvky studentů představuje [Google summer of code][4]. Většina technologií společnosti Google je postavena na open source softwaru (OSS) a proto společnost sponzoruje rozvoj těchto projektů a platí studenty na nich pracující. Studenti mohou zasílat přihlášku do 27. března. Rozhodnutí o přijetí či nepřijetí bude známo 27. dubna. Studenti OSP přijatí do GSOC získají všechny body za *průběh samostatné práce*. Povinnost závěrečné prezentace a její bodové hodnocení však zůstává. Představu o schválených organizacích a tématech projektů lze získat například z minulých běhů programu ([Google summer of code 2014][9]). Většina z přijatých organizací pokračuje v dalším běhu. Diskuze a seznam potenciálních témat pro další běh je pak připravovaný většinou na ktomu určené stránce ve Wiki projektu. Projekt RTEMS má přímo připravený [návod][10] pro zájemce o GSoC a [seznam projektů k řešení][11]. [1]:http://www.fel.cvut.cz/education/rozvrhy-ng/public/cz/mistnosti/10/12/m10121304.html [2]:http://rtime.felk.cvut.cz/~sojka/ [3]:http://cmp.felk.cvut.cz/~pisa/ [4]:https://www.google-melange.com/gsoc/homepage/google/gsoc2015 [5]:http://support.dce.felk.cvut.cz/mediawiki/index.php/GNU/Linux_v_laborato%C5%99%C3%ADch [6]:http://www.debian.org/ [7]:http://dce.fel.cvut.cz/katedra/ing-rostislav-lisovy [8]:http://dce.fel.cvut.cz/katedra/ing-michal-horn [9]:https://www.google-melange.com/gsoc/projects/list/google/gsoc2014 [10]:https://devel.rtems.org/wiki/GSoC [11]:https://devel.rtems.org/wiki/Developer/OpenProjects