Open Source Programování

Podobné dokumenty
Open Source Programování

1 Nástroje pro správu verzí. 1.1 Pojmy:

SCM = Source Code Management software, základní typologie rozdělení je podle počtu a umístění základního úložiště kódu(=repository) na:

Obecné informace o cvičeních

Verzovací systémy. Pořádek především!

Vývoj software pro Linuxové distribuce. Installfest Praha,

Komunity a vývoj SW. Autor: Petr SiLK Koloros

Open Source Programování

úvod Historie operačních systémů

Svobodný software, open source, licence. Michal Dočekal

jako základní princip vývoje svobodného softwaru

Olga Rudikova 2. ročník APIN

Správa verzí souborů na cvičení

Jak funguje GNU/Linux

Radim Dolák Gymnázium a Obchodní akademie Orlová

Seznámení s open source vývojem a open source řešeními pro mobilní zařízení

GIT hands-on. Mgr. Šimon Tóth. 12. dubna () GIT hands-on 12. dubna / 25

Matematika v programovacích

Správa softwaru v GNU/Linuxu. Michal Dočekal

Nástroje pro vývoj software

Open Source Programování

Profesionální služby kolem Linuxu

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

ešení pro správu klientských počítač a mobilní tisk Číslo dokumentu:

Joelův test. 12 kroků k lepšímu programování. Jaroslav Šnajdr

99 % všech desktopů na platformě MS Windows

Virtualizace jako nástroj snížení nákladů. Periodické opakování nákladů nové verze Licence na pevný počet klientů

MATLAB Úvod. Úvod do Matlabu. Miloslav Čapek

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Compatibility List. GORDIC spol. s r. o. Verze

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Instalace produktu Ontopia. ver (open-source verze)

Open source a komerční linuxové distribuce Libor Pecháček

Linuxový kernel v posledních letech

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Nasazení jednotné správy identit a řízení přístupu na Masarykově univerzitě s využitím systému Perun. Slávek Licehammer

Správa obsahu webové platformy

Uživatelská příručka

w w w. u l t i m u m t e c h n o l o g i e s. c z Infrastructure-as-a-Service na platformě OpenStack

Přehled témat. Základní pojmy

1. Integrační koncept

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

manuscriptorium Manuscriptorium v Evropě Manuscriptorium.com

Vývoj programů. ÚVOD DO OPERAČNÍCH SYSTÉMŮ

Úvod do verzovacích systémů

Základy programování Úvodní informace. doc. RNDr. Petr Šaloun, Ph.D. VŠB-TUO, FEI (přednáška připravena z podkladů Ing. Michala Radeckého)

O Apache Derby detailněji. Hynek Mlnařík

2013 IBM Corporation

Střední úložiště. Uživatelská dokumentace Zřízení přístupu

icc Next Generation atlantis Copyright 2011, atlantis

Název: On-line tvorba webu Anotace:

Uživatelská dokumentace

Co by měl umět dobrý vývojář. Petr Adámek Home Credit International a.s.

The bridge to knowledge 28/05/09

Příručka pro nasazení a správu výukového systému edu-learning

Extrémně silné zabezpečení mobilního přístupu do sítě.

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Zpětná vazba od čtenářů 11 Dotazy 11 Zdrojové kódy ke knize 11 Errata 11 Typografické konvence použité v knize 12

VCS CVS - Concurrent Version System SVN - Subversion Distribuované verzovací systémy DVCS Verzování. Základní pojmy verzování souborů

Prezentace CRMplus. Téma: CRMplus jako nástroj pro kontrolu a vyhodnocení rozpracovanosti dílů na zakázkách

O projektu Nasazení OpenOffice.org v praxi

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Formy komunikace s knihovnami

Projekt implementace OS Linux do výuky informačních technologií

ŠKOLSKÝ PORTÁL Pardubického kraje

Srovnání Linuxu a BSD z pohledu jádra. Jan Dyrczyk

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source

PŘIDÁNÍ SOUBORŮ DO OBLASTI PŘIPRAVENÝCH ZMĚN

ČESKÉ VYSOKÉ UČENÍ TECHNIKÉ Fakulta elektrotechnická. Microsoft Sharepoint 2007 Workflows Průmyslové informační systémy

TECHNICKÁ PODPORA. Systémové požadavky Instalace Licencování a aktivace Náplň technické podpory Formy předplatného Kontakty

modrana: flexibilní navigační systém Martin Kolman

Vývoj řízený testy Test Driven Development

Obsah. 1) Rozšířené zadání 2) Teorie zásuvných modulů a) Druhy aplikací používajících zásuvné moduly b) Knihovny c) Architektura aplikace d) Výhody

Doporučeno pro předpokládané využití serveru pro zpracování 2000 dokumentů měsíčně. HW: 3GHz procesor, 2 jádra, 8GB RAM

Úvod do Linuxu SŠSI Tábor 1

Operační systémy: funkce

CZ.1.07/1.5.00/

BRICSCAD V15. Licencování

Řešení pro správu klientů a mobilní tisk

FAKT PRO WINDOWS. CompCity. 1 Manuál programu FAKT pro Windows verze Program pro vedení podvojného, jednoduchého účetnictví a sklad.

FORTANNS. 22. února 2010

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Linuxové distribuce. Michal Dočekal

ESET NOD32 Antivirus. pro Kerio. Instalace

DOCUMENT MANAGEMENT TOOLKIT

Základní pojmy verzování souborů. SVN - Subversion vybrané pokročilé vlastnosti. Správce verzí. Repositár

Angličtina program k procvičování slovní zásoby

Úvod 17 ČÁST 1. Kapitola 1: Principy návrhu doménové struktury služby Active Directory 21

Zálohování v MS Windows 10

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

IBM Tivoli Storage Manager 6.2 a IBM Tivoli Storage Manager FastBack 6.1.1

AIDA64 Extreme. Příručka k nastavení. v

PŘÍLOHA C Požadavky na Dokumentaci

INFORMAČNÍ TECHNOLOGIE. Charakteristika vyučovacího předmětu 2.stupeň

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

PORTÁL STÁTNÍ ROSTLINOLÉKAŘSKÉ SPRÁVY VE SLUŽBÁCH

EvMO postup při instalaci

Transkript:

Založení projektu a infrastruktura Open Source Programování http://rtime.felk.cvut.cz/osp/ Pavel Píša <pisa@fel.cvut.cz> http://cmp.felk.cvut.cz/~pisa Michal Sojka František Vacek DCE FEL ČVUT Copyright 2004 2010, Pavel Píša, Michal Sojka, František Vacek, Andrew Tridgell, Free Electrons.com, GNU.org, kernel.org, Wikipedia.org Creative Commons BY SA 3.0 license Latest update: 24. IV 2013 1

Samba příklad hodný následování Následující doporučení a diskuze vychází z přednášky autora projektu Samba (Andrew Tridgell) Samba je FOSS implementace souborového, tiskového a autentizačního serveru kompatibilního s protokoly použitými Microsoftem pro tyto služby v MS Windows V současné době je to projekt využívaný po celém světě od firem, přes vládní instituce, univerzity po domácnosti Často je součástí síťových úložišť /NAS devices Projekt začal jako pokus o Unixový sever pro DOS v roce 1991 V současné době na něm aktivně pracuje 15 členů v posledním roce okolo 40 dalších přispěvatelů, 25 změn/den Nepřímo zaměstnává/platí (podpora, integrace atd.) množství lidí 2

Jak projekty vznikají Zápal nadšení Mnoho projektů vzniklo v důsledku nadšení a zápalu jednoho vývojáře Málo kdy zakladatel přemýšlí o všech souvislostech a náležitostech vedení FOSS projektu Je potřeba znát doporučení a recepty? Obvykle to zjednodušuje život, ale dobrý kuchař improvizuje a hledá nové cesty. Je potřeba pomoc nebo motivace? Je víc potřeba pomoc s napsáním první verze nebo pocit užitečnosti/motivace od uživatelů? Pokud je potřeba pomoc, tak pomoc s volbou organizace a infrastruktury je velmi podstatná. Je dobře se tedy učit od jiných projektů a poučit se dobrými i špatnými volbami a zkušenostmi 3

Co je potřeba rozmyslet Co je cílem projektu Není dobré na začátku přehánět (Unix Multics) Být světovou špičkou stojí čas nejdřív je potřeba začít od malých věcí Jaká má být struktura projektu Na začátku stačí velmi jednoduchá struktura Je srozumitelnější a s ní méně potíží Pokud je jen jeden správce, tak je začleňování změn jednoduché Jaká má být licence Nemá smysl vymýšlet novou licenci, budou v ní chyby a nebude kompatibilní pro integraci kódu nebo jeho znovuvyužití Pozor, rozhodnutí o licenci je velmi závažné, po integraci cizí práce ji lze většinou jen velmi těžko změnit a taková snaha může být důvodem ke přím, rozdělení a až zániku projektu Správa zdrojového kódu (repositář) Vlastní nebo veřejný předpřipravený projektový hosting (SF.net, ) Bude potřeba e mailová konference (mailing list)? IRC? Web site? Bude potřeba systém pro zprávu chyb? 4

Alespoň něco musí chodit Důležité je začít s něčím, co alespoň trochu chodí Již před prvním zveřejněním je potřeba, aby bylo alespoň něco, co lze ukázat (výjimky obtížná výzva, např ReactOS) Když je již co nabídnout, tak je naděje na pozitivní odezvu od potenciálních uživatelů a přispěvatelů Funkční kód neznamená perfektní kód Dodržovaní obvyklých postupů a konvencí pomůže Učit se, jak podobné projekty řeší vývoj, překlad a úpravu kódu linux devel/documentation/codingstyle GNU Coding Standards Code Conventions for the Java Programming Language Když to jde tak využít funkční postupy a i kód Na prvním dojmu záleží Projekt musí být uživatelsky přístupný, snadná první instalace/překlad 5

Zveřejnění/publikace Počáteční oznámení Projekt by měl být vložen do nějakého katalogu obecně pro Unix a Linux je nejvhodnější freecode.com důležité je i správné zařazení, kategorie/tagy Oznámení by mělo být poslané do e mailových konferencí, které se danou problematikou nebo podobnými projekty zabývají Pozor, aby oznámení/styl nebyl považován za spam myslete z pohledu druhých, co jejich projektům může váš projekt nabídnout a nebo se rozhodněte svět přesvědčit, že jste lepší Co by vždy oznámení mělo obsahovat K čemu je/může sloužit V jakém jazyce je napsaný, na čem závisí Na jakých cílových platformách by měl běžet Jaká byla zvolena licence Kde je možné se dozvědět více Buďte poctiví, přiznejte, že je to třeba jen hra nebo naopak součást/podpora nějakého firemního řešení, jak předpokládáte, že bude vypadat další vývoj atd. 6

Rozvoj a péče o projekt Kladná odezva Klíčovým faktorem je pozitivní komunikace a zpětná vazba k těm, co přispějí Odpovězte na každý příspěvek, snažte se je povzbudit (Linus a lazy bastard) Snažte se odpovídat rychle, využijte IRC Vydání (Releases) Vydávejte balíčky rychle a často Eric S. Raymond: The Cathedral and the Bazaar Použijte snapshot vydání, když to má cenu dnes je nakonec výhodnější trvale zkompilovatelný kód z repositáře Údržba seznamu změn ke každému vydání (Changelog) Vždy uveďte autora každé změny (i nápadu) Ingo Molnar: credits Con Kolivas, for pioneering the fair scheduling approach Podporujte diskusi Ptejte se druhých na jejich názory Poslouchejte a analyzujte všechny odezvy 7

Růst projektu Je potřeba začít uvažovat o dalších záležitostech Vytváření balíčků pro hlavní distribuce a platformy Zvážit přípravu binárních balíčků Má smysl napsat článek(y) do časopisů/na webové portály Má smysl vést k vývoji blog Struktura projektu Je potřeba průběžně testovat funkčnost projektu noční můra regrese Má smysl nějak projekt formalizovat Určitě je to potřeba nejdříve prodiskutovat Vytvořit zájmovou skupinu/konsorcium V některých případech je to jasné již při založení Je potřeba začít definovat role (developer, release manager, atd.) 8

Zvládnutí růstu projektu FOSS projekty mohou růst velmi rychle Nepřerůstá množství práce možnosti jednoho/daného člena projektu Je možné projekt rozdělit na funkční celky/samostatné projekty Má smysl rozdělit konference (vývojáři, uživatelé, jednotlivé celky) Předávání pravomocí a úkolů, nalezení lidí, kterým lze věřit a rozdělení úkolů Co může pomoci Pravidelné posílání informací se shrnutím aktuálního a plánovaného vývoje Organizace projektových konferencí a srazů Opět učit se z toho, jak svůj růst zvládají a organizují jiné projekty. Vybírat si to, co funguje. 9

Správa zdrojových kódů Jednoduché nástroje diff, patch a tar Změny (patch e) posílané přímo v e mailech základní pravidla, žádné HTML, přímo v těle, pozor na spatné e mailové programy tabelátory, lámání řádků atd. Každý si udržuje svůj vlastní zdrojový strom Distribuce přes FTP a usenet 10

Změnové soubory Patch Základní způsob výměny změn v kódu existuje množství formátů v dnešní době je unidiff standardem ke změně je přidaný minimální ( dostatečný ) nezměněný kontext hlavní nástroje: diff, patch, diffstat $diff u N p r prj ver.orig prj ver >prj ver.diff prj ver/source3/rpc_server/srv_svcctl_nt.c +++ prj ver.orig/source3/rpc_server/srv_svcctl_nt.c @@ 466,9 +466,7 @@ WERROR _svcctl_enumservicesstatusw(pipes_struct *p, } blob = ndr_push_blob(ndr); if (blob.length >= r >in.offered) { memcpy(r >out.service, blob.data, r >in.offered); } + memcpy(r >out.service, blob.data, r >in.offered); } cd prj ver other patch p1 <../prj ver.diff 11

Základní pravidla pro posílání patchů Vždy použít diff up ( r N), vynechat generované soubory ( x, X) Vložit statistiku změn diffstat Přidat popis změny a uvést původního autora U většiny systémů zprávy verzí se první řádka komentáře (v e mailu předmět zprávy ) objeví jako short log, měla by tedy být výstižná, další popisné. U většiny projektů je k odlišení v e mailové konferenci zvykem vkládat na začátek předmětu značku [PATCH] Patch vždy jako plain text a přímo v těle zprávy Ještě jednou, nikdy ne jako HTML, přílohu jde někdy možná obhájit Větší změny vždy rozdělit do logických kroků, pak jako patchseries Vždy zkontrolujte dodržování stylu zápisu kódu linux 2.6.x/scripts/checkpatch.pl Ještě jednou zkontrolujte, že posíláte patch na správnou adresu Přidejte Signed off by řádku, je li to u projektu zvykem Obrňte se trpělivostí, čekejte, na připomínky odpovídejte 12

První gen. systémů pro správu verzí První SCM (source code management) byly RCS a SCCS RCS 1982, Walter F. Tichy, Purdue University Pracují pouze s jednotlivými soubory přímo na disku *,v Pouze jeden uživatel může editovat soubor v daném čase Žádná možnost slučování nezávislých změn (merge) Dokumentují historii vývoje Klíčové údaje jsou kdo, co a kdy 13

Revoluční nástup CVS Concurrent Versions System paralelní správa verzí Založený na základech a formátu RCS Dovoluje paralelní vývoj (na jednom počítači i distribuovaně) Obsahuje základní nástroje na řešení slučováni (merge) a řešení konfliktů jsou založené na nástrojích diff a patch Velmi rozšířené ve světě FOSS projektů Převládající nástroj v letech 1991 až 2005 Stále široce užívaný, ale rok od roku méně Množství nedostatků V podstatě žádná podpora pro přejmenování souborů a minimum pro práci s adresáři v podstatě jen recursive Téměř všechny operace vyžadují komunikaci se serverem Slabá podpora slučování větví 14

Centralizovaná a distribuovaná správa Kde je projekt hostovaný CVS server je centrální prvek Vývojář má pouze svůj (aktuální) checkout/sandbox/pískoviště Většina/všechna metadata (historie atd.) jsou uloženy pouze na centrálním serveru Distribuovaná správa verzí Každý vývojář má vlastní kopii celé historie projektu Většina takových systémů nabízí podporu pro snadné zakládání větví a jejich slučování export CVS_RSH=ssh CVSROOT=":ext:ppisa@ulan.cvs.sourceforge.net:/cvsroot/ulan" CVSMODULE="ulan" git cvsimport v d $CVSROOT C ulan devel i k a r ulan sf $CVSMODULE 15

Subversion Další pokus implementovat CVS tentokrát již správně Snaha o znovuvytvoření systému s centrální správou verzí Řeší mnoho omezení CVS Revize jsou zaznamenávané přes celý projekt Často nově nasazované i přechod z CVS od roku 2001 a dále Stále často užívané Centralizovaný návrh Kritika chybějícího distribuovaného návrhu Existuje nadstavba pro distribuované použití (svk), ale není často používaná Obecně lze v době Git, Mercurial (Hg), Darcs označit za minulost git svn clone https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk sdcc cd sdcc ; git svn rebase ; git gc 16

Distribuované SCM systémy Na počátku Code Co Op (pro Windows) 1997 GNU Arch (nazývaný TLA Tom Lord's Arch) 2001 Bitkeeper Použitý na Linuxové jádro od roku 2002 Problematický licenční model (viz Bydlení pro jádro ) Přesto nesmírně přispěl k rychlosti vývoje jádra Novější systémy Darcs David Roundy úvaha o novém formátu patchů pro GNU Arch, po několika měsících v roce 2002 nakonec vlastní systém postavený ne teorii patchů v C++, od roku 2003 v Haskelu Mnoho dalších systémů se objevilo v a po roce 2003 bazaar, mercurial, monotone Git Linus Torvalds 2005 17

Rozhraní k SCM systémům Příkazová řádka převažuje Nejvíce FOSS usživatelů používá příkazovou řádku Nástroje jsou zacílené na rychlou práci a umožňují skriptování Většina SCM systémů nabízí nejaké GUI a nebo integraci do editorů Webová rozhraní Většina SCM systémů nabízí tyto nadstavby/nástroje/integraci Především má význam k procházení historie vývoje cvsweb, svnweb (trac?) a gitweb či cgit Často jsou upravovány či tvořeny na míru Rozhraní pro propojení s jinými systémy Nástroje pro propojení se sledováním chyb trac Integrace s kompilačními systémy a farmami 18

Kompilační farmy Integrace SCM s kompilační farmou Automatické testování pomáhá rychle odhalit chyby Důležité pro zajištění/zachování přenositelnosti Co to taková kompilační farma je Rozsáhlá škála strojů (často i virtualizace), různé HW platformy a operační systémy Automaticky spouští regresní testy po každém commitu (změně) Chyby při kompilaci nebo testu mohou být poslané na e mail a jsou k dispozici v logu (přes web) Příklady Tinderbox Samba build farm Build bot 19

Veřejné hostování projektů a SCM Mnoho kompletních nabídek služeb sourceforge.net, berlios.de, savannah.gnu.org (kernel.org) Mnoho/většina FOSS projektů používá právě tyto veřejné služby Velmi zjednodušuje spuštění a správu projektu Na jednu stranu méně flexibilní než vlastní řešení, na druhou stranu pod profesionální zprávou, integrací a vývojem služeb http://sourceforge.net/projects/sourceforge Distribuovaná zpráva verzí DVCS Práce vyžaduje personální větve a repositáře s jednoduchou správou a třeba i bez nutnosti velkého zázemí Vzniká mnoho takových serverů pro tyto služby Git: repo.oz.cz, github.com Hg: bitbucket.org, freehg.org bzr: launchpad.net 20

Zapojení se do jiného projektu Když si vyberete projekt na práci nebo potřebujete nějaký upravit Jak naleznu více informací? Co by bylo dobré vědět? Obvyklé zdroje informací Manuálové stránky/dokumentace man abc, info/pinfo abc, cd /usr/share/doc Popis binárního balíčku, zpráva balíčku v distribuci http://packages.debian.org/ Hledání na Internetu/Webu http://freecode.com/, dříve http://freshmeat.net/ dříve LSM (Linux Software Map) 21

Klíčové informace o projektu Kdo je zapojený do vývoje? Jak je vývoj/projekt organizovaný? Jak je licencovaný? Jak je spravovaný zdrojový kód? Jak jsou připravovaná/publikovaná stabilní vydání (release)? Jaké jsou komunikační nástroje? Jak jsou ukládané informace o chybách a případně i patchích, přáních atd.? Jak je projekt propojený s dalšími projekty? 22

Struktura projektu Jakou strukturu projekt má Existuje projektový tým? Je projekt součástí většího celku/projektu? Je spojený/je do něj zapojena nějaká organizace nebo firma? Existují zde nějaké formální požadavky (na příspěvky atd.)? Kdo je správcem a kdo rozhoduje? Katedrála nebo bazar ('Cathedral' or 'Bazaar')? Kazatel/bůh na věži nebo zmatek na tržišti 23

Navázání kontaktu Nejdřív si udělej domácí úkoly! Neptej se na otázky, které jsou zodpovězené na stránkách projektu Přečti si Asking smart questions FAQ (Eric Steven Raymond) http://www.catb.org/~esr/faqs/smart questions.html Hledej odpovědi v e mailové konferenci a určitou dobu ji čti http://search.gmane.org/ často pomůže lépe než Google Pokud dojde na pokládání otázek Ještě jednou zkontroluj, že se na ní dříve někdo neptal Dodej dostatečné množství informací aby šlo odpovědět (verzi systému, zdrojových kódů projektu, architekturu, knihovny, popis případné chyby a testcase) Pokud to není v rámci placené podpory, ptej se slušně a nevyžaduj Ukaž, že jsi již investoval do nalezení odpovědi, případně nabídni co jsi zjistil 24

Příspěvek ve formě patche Nejdřív hledej a analyzuj V jaké formě má patch být? Proti jaké verzi zdrojových kódů? není to již v aktuální verzi opravené, není použitý základ již tak starý, že vývojáře nezajímá Jak moc podrobný popis je požadovaný? Má projekt vývojářskou příručku (developer guide)? Jak je nakládáno s cizími patchi? Testovat, testovat, testovat! Buď si jistý, že je úprava funkční Zkontroluj, že nepokazí něco jiného Je úprava přenositelná (endianning/32/64 bit/alignment) Klid a trpělivost Může to trvat dlouho a vyžadovat mnoho další práce, než bude patch integrován 25