Manifest príčetného softwaru v0.8
Práve vyšlo Sane software manifesto verzia v0.8. Manifest sa zaoberá tým, ako písať príčetný software s ohľadom na práva užívateľov, ochranu súkromia, slobodu, bezpečnosť a dlhodobú udržateľnosť. Pred vydaním verzie v1.0 je ideálny čas ku zasielaniu komentárov a poznámok do e-mailovej konferencie.
Pre pridávanie komentárov sa musíte prihlásiť.
Do buducna.
Poprosim autorov aby posielali svoje spravicky aspon v jazyku slovenskom, ked uz to nebude aj s diakritikou.
Dakujem
Za diakritiku hlasujem aj ja. Ale nie som za striktné dodržiavanie jazyka slovenského v správičkách. Kľudne môže byť aj jazyk český alebo anglický. Ale miešať v jednej vete jazyk český a slovenský? To sa musel niekto strašne smiať ako schválením takéhoto niečoho prispeje ku skvalitneniu portálu. Aj s trollingom jak lógr.
Admin mozno bol v euforii ze sa niekto nasiel, kto poslal spravu 6 dnoch, tak to prehladol. ;)
Mozno ak to nie je v slovencine patrilo by sa ak stratko (EN, CS) uviest, ze je text v inom jazyku.
o 6 dni
Ja som to nebol :)
Nechápem prečo by to nemohlo byť v Češtine. Určite nie som za buzeráciu našich bratov.
Ono to bolo v čecholovenčine. Polka vety v jednom jazyku, polka v druhom. Ďalšia veta bola štylizovaná rovnako. Zvyšok som už nedokázal dočítať.
Zakladna cestina ok, ale slovo príčetný som musel pozerat, co je zac. Sice sa tam dal doplnit preklad.
Slovo pricetny je aj v beznej slovencine.
Neviem, ale urcite v svojom jazyku slovo pricentny nahradzam synonimami. Zapor ale poznam. Co sa tyka pouzivanosti slov.
Schvaloval som to ja. Mne ide skor o to ze copy&paste z ineho portalu viem robit na dennej baze aj ja.
Za tu češtinu se omlouvám, příště se budu snažit posílat zprávičky slovensky.
Nicméně uvítal bych spíš věcnou diskusi. Četli jste ten manifest? Vidíte v něm něco, co by bylo nějak zásadně obtížné dodržet u vašeho projektu? Nebo vám tam naopak chybí něco z pohledu uživatele (což může být i programátor používající nějakou knihovnu) toho softwaru?
Ono to bolo písané československy, nie česky. Z toho zblbne mladším ročníkom automatický prekladač a starším ustrelí dekel.
Ohľadne manifestu, pripomína mi príkazy na radikálne dodržiavanie slobody. Keby to boli odporúčania, tak nič nepoviem. Ale mám taký dojem že príkaz sa vylučuje zo slobodou. Asi chce nahradiť Richarda Stallmana.
Striktní požadavky jsou jen část z toho, zbytek jsou doporučení nebo informace. Dá se to obarvit přidáním CSS v prohlížeči:
(časem tam dodělám nějaké tlačítko nebo tak něco)
S tou prikázanou slobodou mi skôr išlo o to, či ten manifest nevylúči otvorené projekty pre napríklad GPU keďže som si nevšimol že by GCC vedelo kompilovať taký kód, a iné kompiléry nejaké obmedzenia. To mi už zaváňa slobodným extrémizmom.
Ale ja som liberál a používanie uzavretého SW mi nevadí, ak sa ovšem dodržiava licencia pre ten SW. A ak by mi taká licencia nevyhovovala, tak: There is a plenty of fishes in the sea.
Nie. Týpek to napísal po česky korektne ale ja som to v rýchlosti prepísal do slovenčiny resp. Stala sa z toho cechoslovencina. Nevedel som že je Čech. Myslel som si že to je liny Slovak ktorý to okopírovať z CZ portálu.
Škoda. Keby to ostalo po česky, tak sa nič nedeje. Ono, skús napríklad uhádnuť v akom jazyku sú napríklad vety:
Pozor horké. To je vedro.
Vety su v ceskoslovencine. Idealny jazyk pre nas, cechoslovakov :)
A preto boli snahy dosadiť Gustáva Husáka na miesto popredného jazykovedca, a zvolit za presidenta Felixa Čechoslováčka.
To bylo čiastočné, cez Bureša na Vyšegráde.
Kľudne píš Česky, to nerieš, skôr by som povedal nesnaž sa písať slovensky :-)
Ten dokument je fajn, ja s takouto filozofiou súhlasím, aj keď niektoré body sú možno zbytočne tvrdé a môžu zneváhodniť slobodný softvér.
Pridaj tam tlačítko FORK a nech ti tam ľudia posielajú patche.
K teme spravy
Musi byt bezplatne. Nestaci zakladna verzia bezplatna? Podpora nemoze byt? Uvazoval si, ze niekto nebude realizovat nieco zadarmo, ak nesie pre nejake dovody pravnu zodpovednost?
Semantic versioning and upgrades
Ak definujes ako sa ma verziovat, naco riesis potom, kroky ku zmenam. Proste ak sa prve cislo zmeni, je to kriticka zmena a utor nech si urcite pozrie zmenu cisla.
Pisal by som takto. Preskrtnutne je zbytocne naviac. Preskrtnute je podmnozinou co zostalo. Zaroven si to komplikujes, co ak chcem zlozitejsie (viac variacii).
Otazka: Co je cielom manisfestu. Precitaj si (preklady) GPL ako je pisane, aky styl ony pouzivaju.
Odsek Interfaces, formats and protocols je potrebny. Ak mam program, viem zistit protokol. Ak je zdokumentovana, tak kde je problem. Inac, podla definicie nie je nutne dodat tento format. Dalsie vec - co ak chcem pripojit, tj. si nainstalovat addon, z uzavretym sotverom, preto ze nemam na vyber.
To ako ze XML, JSON, HTML, HTTP 1.0/1.1 mam na ne zabudnut v programe?
Nepouzivaj slovo moduly. Program. jazyk C nema moduly, Java ich ma. Nechtiac mozes stritne vymedzovat, co ma pouzit. Pouzi slovo casti.
Je to nutne? Overit sa da chybnym stavom, ktore v praxi nikdy nenastane. Myslis, ze chces nieco ako ping-pong v IRC protokole, aby nezhodilo TCP socket.
Fail fast Preco nutis vlastne urcity/-e vyvojove modely softveru?
Sane dependencies - zmaz slovo peklo a pouzi slovo zavistlosti
Zacni: Kde je to vhodne, pouzite…
Preco to musi byt?
Objektova terminologia? ;)
Co to je? Co to myslis? Pre mna nezname.
Ak to nie je mozne (pre X a Y), preco to vlastne maju robit - tie plany?
Pisal inac - Preferovat HTTPS pred HTTP. Hm, nejak formulovat ze pouzivat sifrovanie pred nesifrovanie. Cize napriklad dbat na bezpecnost dat, s kt. pracujem. Ale to mozes sifrovat i v ram, konfiguraciu. Cize len citlive data. (rozmyslal, tak som teraz pisal).
Preco? Chapem v nejakych pripadoch, ale nejak univerzalne nie.
Pozor! V niektorych krajinach je zakazane sifrovanie, takze automaticky zdiskreditujes tieto krajiny. Daj ako odporucanie.
Pis tak (pridany odsek v citacii). Jeden odsek moze mat viac pododsekov.:
Moze automaticky atd. iba ak da uzivatel suhlas. Tj. nemoze program menit sam seba alebo svoju cast (nie data s ktorymi pracuje), ak to uzivatel jednoznacne nepovolil.
Neprikazuj, ze musi. Su situacie, ked to je skor neziaduce. Napr. webserver a databaza na rozdielnych serveroch, ktore su v mojej sprave prepojene tak, ze data po linke medzi nimi su len tejto mojej aplikacie alebo aplikacii, alebo len ine, ktore mam pod kontrolou. Bezne sa k tymto datam iny uzivatel nedostane.
Toto popiera existenciu prekladacov - napr. rozdielne vygenerovany kod zo zdrojoveho kodu (napr. C, asamblery, kontretny procesor). Vydodit, resp. podumat, aby to bolo v nejakej zdravej miere zavisle a v nejakej uz nie.
Co ak sa zmeni doba a pridu ine programy, formaty?
Ak chcem raz vidiet, ako 100 krat pocut, tak nemozem dat video z Youtube. Myslienka - moze byt z 3-tych stran, ale uzivatel nesme byt znemozneme zobrazenie daneho obsahu (napr. pre geolokalizaciu).
Radsej daj, ze nieco standardne, pripadne vseobecne akceptovane.
Ach. Niektory zrejme ani o takych, tych tebou menovanych prehladavacov, nepoculi.
Radsej daj - lahko dostupne, bezpecne. A sposob nechaj na sucastnych bezpecnostych standartov. Ak chces, vytvorit napr. kazdy rok standart a technologie, kt. su ok.
Nemusi byt verejne, moze byt aj dostupne, resp. prechadzat nezavislim auditom.
Hm, problem, co ak nedostanem licenciu, lebo nevydavaju? Napr. co som tusim cital, patent v USA moze dat hockto, ale vlastne jeho konecnu platnost urcuje sud (patentovat mozu v USA myslienku, hocikto), ked sa niekto z nejakej strany nan obrati.
Pekne prava pre uzivatela, ale ochrana poskytovatela pred podvodnikmi a pravnickym kritom. Skor, ze nesmie nikoho k nicomu zavezovat a diskriminovat.
No a tu si narazil na lokalnu legislativu kazdeho statu. Vies aky je rozdiel medzi licenciou, copyright a patentmi? Rozdiel medzi patentmi v USA a v Europe? Poznas slovensku legislativu? Poznas autorsky zakon a klucove rozdiely v inych statoch?
Pre ktory stat to pises?
staci? ;)
A ocisluj si alebo opismenkuj si kapitoly.
Poskytování placené podpory je samozřejmě v pořádku a manifest to nezakazuje.
Když jsou dvě verze, tak to často směřuje k tomu, že ta bezplatná a svobodná je dost omezená a dodavatel se snaží zákazníky všemožně dotlačit k přechodu na placenou, která navíc bývá proprietární (takže jim v té základní třeba i nějak škodí). Tohle pak poškozuje svobodný software, protože ho to staví do role nějaké méněcenné omezené demoverze – a tak by to rozhodně nemělo být. Svobodný software je naopak to nejlepší, co ti může dodavatel dát, je to vlastně ta „nejvyšší edice“. Zatímco proprietární verze/programy jsou z principu omezené.
Svobodný software se dodává bez záruk – je to uvedeno v každé licenci. Pokud chce někdo záruky nebo podporu, tak je potřeba na to uzavřít samostatnou smlouvu (a tam už se platí). Mimochodem: proprietární software se taky zříká záruk, jen lidi žijí v bludu, že když za něco zaplatili, má druhá strana povinnost se o ně nějak postarat – což ale není pravda a většinou mají jen licenci užívat software tak jak je – a ne si nárokovat nějaké opravy nebo dokonce záruky (na to je potřeba opět uzavřít samostatnou smlouvu, stejně jako u toho svobodného softwaru).
Manifest není licence, není to nějaký suchý právnický text. Je to soubor pravidel, doporučení a informací. Ta doporučení a informace nejsou závazná, klidně je můžeš porušovat a stále říkat, že děláš software podle toho manifestu. Nicméně nepředpokládá se, že by to někdo chtěl „obcházet“ – když se někomu ten manifest nelíbí, tak se k němu prostě nebude hlásit.
Program se může měnit, včetně té dokumentace. Takže psát něco na základě reverzního inženýrství nebo studia zdrojáku případně i té dokumentace, je ošemetné, protože v příští verzi to musí být jinak. Interní API a formáty nejsou stavěné na to, aby je používal nebo implementoval někdo třetí. A tam, kde je veřejné stabilní API či formát, by ta specifikace měla existovat (nejen dokumentace k programu).
Ten program jako takový bude příčetný a bude definovat nějaké API, přes které se do něj ty addony připojují. Samotný addon (dodávaný třetí stranou) už příčetný být nemusí, to na program nemá žádný vliv.
Jsou to jen příklady, ne kompletní výčet. A XSD = XML Schema, takže zrovna XML tam uvedeno je.
Slovo modul tady není použito ve smyslu nějakého konkrétního programovacího jazyka. Je to obecné slovo označující nějakou jednotku/komponentu, která se zapojí do nějakého většího systému. Podobně jako addon, plug-in atd.
V praxi tohle řeším pořád dokola – někdo v ostrém provozu hlásí chyby softwaru a nakonec se ukáže, že se spolu nějaké dvě komponenty ani nespojili, protože je třeba špatně nastavený firewall, nebo se to snaží připojit někam, kde nikdo nenaslouchá. Proto mi přijde užitečné mít možnost snadno rozlišit stavy:
Čím dřív se chyba odhalí, tím lépe a tím méně nás její oprava stojí. Na chybu se může přijít v analýze (tzn. měla by se dělat revize/oponentura analýzy), při kompilaci, při testech, při instalaci, při prvním spuštění… a nebo až během provozu. Čím dřív, tím líp.
Je to doporučení – takže je nemusíš používat třeba vůbec, když ti to nepřijde vhodné. Neočekávám, že by to někdo chtěl bezhlavě dodržovat včetně všech doporučení.
Je to příklad, nemusí to být tyhle konkrétní jazyky. Cílem je snižovat komplexitu a počet závislostí. Souvisí to mj. s tímhle: Bootstrappable builds – je dobré se nad tím zamyslet, jako kdybys ten systém stavěl na zelené louce, stylem: mám HW a prázdné disky, co teď? Tzn. představit si celý ten řetězec, co všechno tam vstupuje do hry – od kompilátoru assembleru, ručně psaného zavaděče, kompilátoru céčka, jádra operačního systému, standardních knihoven, přes kompilátory vyšších jazyků a různé knihovny až k aplikacím.
Stejný případ jako u těch modulů. Není to použito ve významu určitého jazyky (jako např. interface v Javě). Je to obecný koncept - rozhraní může být třeba hlavičkový soubor C, nějaký síťový protokol nebo třeba souborový formát.
Pokud např. přejmenuješ metodu, třídu nebo funkci, tak to vyvolá spoustu změn na mnoha místech. Přitom se ale nic podstatného nezměnilo. Stejně jako když změníš odsazení nebo kódování. Naopak ta podstatná změna může být třeba jen pár řádků – a proto je dobré ji udělat jako samostatný commit, aby bylo na první pohled vidět, co se změnilo. Hodí se to i v případě, kdy chce někdo tuto změnu ručně aplikovat jinde, třeba ve starší verzi. Pak může udělat cherry-pick nebo to přenést ručně. Ale kdyby to bylo zamíchané mezi hromadu nepodstatných změn, formátování a refaktoring, tak by se v tom těžko hledala ta jedna podstatná změna.
Mělo by to být možné vždy. Pokud spustíš kompilaci v přesně definovaném prostředí, tak by z toho měl vypadnout vždy přesně stejný výsledek. Když si pak jako uživatel stahuješ binární balíčky, tak máš jistotu, že pocházejí z těch zdrojáků, které máš k dispozici, a že tam nevstupuje nic dalšího – tzn. že jsi schopný si naprosto totéž zkompilovat sám.
Cílem je, aby uživatel mohl získat software bezpečnou cestou. HTTP a HTTPS jsou nejrozšířenější, proto jsou tam jako příklad. Bohužel dodnes existují programy, které nejsou podepsané (GPG nebo jinak) a které nemají ani uvedené hashe a stahují se přes nešifrované HTTP.
Je to jen doporučení. Výhoda je jednak v tom, že můžeš stahovat z nejbližších míst tzn. rychleji a méně to zatěžuje síť, a taky není jedno centrální místo, na které by se dalo útočit.
To je chyba těch zemí, ne moje. Kvůli tomu, že mají někde špatné zákony, se nebude snižovat bezpečnost všech ostatních.
Je tam „by default“, což znamená ve výchozím stavu – tzn. na důvěryhodné síti si to šifrování můžeš vypnout. Jsou tam i poznámky (do XHTML se v současnosti nepropisují):
viz zdroják.
Strojově čitelný výstup by stále měl být nezávislý na lokalizaci. Ta se načte až při spuštění.
Tohle pravidlo se týká hlavně formátů a protokolů, kde se třeba vypisují čísla – tak aby tam nebylo třeba 1 000,20 nebo 1'000.20, ale aby tam bylo jazykově neutrální 1000.20.
Proto je tam napsáno: „or other machine readable format“. Nicméně ten manifest se v průběhu času může měnit – za deset let v něm můžou být jako příklad uvedené jiné technologie (ale smysl bude stejný).
Pokud je to jen nějaké volitelné ilustrační video, tak to tam být může (viz „required to browse/use the website“), ale pokud to nese nějakou podstatnou informaci a je to třeba součást dokumentace, tak by to mělo být součást té stránky.
Mimochodem, podívej se třeba na článek The LPT DAC a poznámku: „but we’re not thinking that link will last long. If anyone has a better link, leave a note in the comments and we’ll update this post.“ a tento komentář :-) To video, které někdo nahrál na YouTube už dávno nefunguje… Píše to „null Pokud vám vlastník k videu udělil přístup, přihlaste se prosím.“ – takže je buď smazané nebo není veřejně přístupné. Buď ho smazal YouTube nebo ten uživatel nebo jim tam něco shnilo, to je jedno, prostě už se na to nepodíváš. Zatímco na mém blogu je to video pořád – i po pěti letech.
Viz LibreJS.
Tak to je nejvyšší čas se na ně podívat a vyzkoušet je :-) Současný web je neskutečně komplexní a na tom není dobré záviset. Viz třeba tahle diskuse. Dokud nebudeme mít lepší standard, tak je rozumné řešení se omezit alespoň na takovou podmnožinu webových technologií, kterou lze používat v těch jednodušších prohlížečích.
Jak X.509, tak OpenPGP jsou tu už hodně dlouho. A kdyby se něco změnilo, tak lze změnit i příklady uvedené v manifestu.
Ten manifest cílí primárně na veřejně dostupný software – ne na software vyvíjený na zakázku pro jednoho zákazníka (i když tam bys mohl uvažovat: veřejnost = příslušné osoby u toho zákazníka).
Nicméně pointa tohoto požadavku je v tom, aby uživatel/zákazník viděl celou historii, jak se ten software průběžně měnil, kdo a proč tam ty změny dával – což ze snapshotů, mezi kterými jsou delší rozestupy, vidět není. Případně je tam i poznámka.
Tenhle bod definuje, co může projekt po přispěvateli chtít – tzn. může chtít autorská práva + případné patentové licence. To se běžně dělá a jde o to, aby přispěvatel nemohl chtít po projektu zpětně třeba peníze za užití autorského díla nebo patentů. Tzn. chtít takovou licenci nebo převod práv se považuje za příčetné. Zatímco chtít podepsat nějaké politické či náboženské prohlášení nebo podepisovat smlouvu s nějakou třetí stranou se za příčetné nepovažuje.
K tomu, abys do projektu přijal cizí kód, nic jiného než autorská práva a případné patenty nepotřebuješ.
Proto jsou u každé kapitoly i bodu #, na které se dá kliknout – je to odkaz na stabilní ID (UUID, které se nebude měnit). Zatímco čísla kapitol nebo bodů by se měnit mohla – když přibude nebo ubyde kapitola či bod uprostřed. A pak kdyby někde bylo napsáno „viz pátá kapitola, třetí bod“, tak by to nebylo jednoznačné a v čese by se ten význam měnil. Kdežto ty současné odkazy na UUID by měly být stabilní.
Ok. Rozumiem.
Ludi maju radi radsej nejaky ciselny paragraf ako dlhe ID.
Co ak uzivatel patent volne k dostupnosti. Sam sa zaviazal, ze nebude vymahat pouzitie. A tym padom nebude ani davat licenciu - ako by, ked vsetci mozu vsetko.
Pekna je idea upravovat, ale ludi maju radsej 3 verzie ako 50. Vid GPL (3) vs CC (dost variacii). Ktore je bezne viac znama? ;)
Ty citas, to co myslis, ze si tak napisal ako si napisal, ale 3. strana, tj. aj ja, citam co je tam len napisane. Nepoznam kontext. A dava sancu na spekulacie.
Mam sa trapit co robis? Bud to bude uzitocne alebo to bude zabudnute v dejinach. Ak neurobis nieco zasadovejsie - neziskovku, firmu alebo najdes silny program/projekt, ktory to bude raznejsie presadi do povedomia, tak zapadne to. Mame certifikacie kadejake, ktore su tak ozaj zname?
Daj linky na koment s video a link na YT video.
Daj XML, nie XSD. Nakolko som v praxi nevydel XSD, ale iba XML. A ked staci, lebo je dost vystizne pri pouzivani, tak XSD len to viac rozpytvava pedantnejsie.
Asi si sa nestretol v praxi pod platenymi GPL.