Historie a filozofie¶
Projekt BeeWare začal jednoduchou otázkou: Proč se nástroje, které jako vývojáři v Pythonu používáme, nezlepšují stejným tempem jako ostatní technologie, které denně používáme?
Python se osvědčil jako velmi schopný jazyk – přístupný začátečníkům, ale mocný v rukou odborníků. Rychle se stává významnou součástí analýzy dat, vědeckých výpočtů i vývoje webových aplikací. Iniciativy jako Django Girls ukázaly, že s Pythonem lze pořádat jednodenní kurzy, které lidem bez programátorských zkušeností představí Python; na konci dne pak účastníci vytvořili a nasadili dynamický web s databází na veřejně přístupný server.
Vývojářská zkušenost při psaní v Pythonu však někdy více připomíná počátek 90. let než nové tisíciletí. Výchozím vývojovým prostředím pro Python je stále konzolové okno o velikosti 80 × 25 znaků. Pro uživatele, kteří přicházejí z prostředí Windows nebo Apple a jsou zvyklí na propracovaná, dobře navržená grafická rozhraní, může být tento třicetiletý návrat do minulosti zcela cizím zážitkem.
A ano, existují integrovaná vývojová prostředí (IDE), která pro psaní kódu nabízejí prostředí nativní aplikace. Tato řešení ale vyžadují, abyste bez výhrad přijali způsob, jakým dané IDE nahlíží na projekt. Do vývojového procesu často vnášejí tolik problémů, kolik jich řeší.
Stojíme tak před zajímavým rozporem mezi „starým způsobem“ unixového vývoje v konzolovém okně a „novým způsobem“ komplexních IDE.
Filozofie Unixu¶
Přitom to tak být nemusí. Základním principem filozofie Unixu je, že „každý nástroj dělá jednu věc a dělá ji dobře“. Jde o velmi účinnou filozofii, která kombinováním úzce zaměřených, nezávislých nástrojů umožňuje vytvářet mimořádně výkonné nástrojové řetězce.
Bohužel si většina nástrojů UNIXu tuto zásadu vyložila tak, že „všechny nástroje musí používat konzolové rozhraní“. Filozofie UNIXu však nikde neříká, že nástroje konzolové rozhraní používat musí – jen se to tak vyvinulo.
Projekt BeeWare vychází z předpokladu, že můžeme mít to nejlepší z obou světů. Můžeme mít řetězec vzájemně kombinovatelných nástrojů, z nichž každý dělá jednu věc a dělá ji dobře. Tyto nástroje však zároveň mohou své funkce zpřístupnit prostřednictvím bohatého grafického uživatelského rozhraní.
Více než jen kód¶
Nejde však jen o kód. Úspěšný softwarový projekt vyžaduje dokumentaci, návrhářské dovednosti, zpětnou vazbu a hlášení chyb. Komunita BeeWare uznává, že všechny příspěvky jsou důležité – nejen ty, které přicházejí jako pull request na GitHubu.
I v takovém případě je snadné vnímat projekt izolovaně jako součet všech příspěvků. Ve skutečnosti tomu tak ale nikdy není. Projekt s otevřeným zdrojovým kódem je především o komunitě.
Rozmanitost a začleňování¶
Rozmanitá komunita je silná komunita. Znamená to přijímat lidi všech úrovní zkušeností, ze všech prostředí a bez ohledu na rasu, vyznání, orientaci či sebevyjádření. Projekt BeeWare se zavazuje rozvíjet a udržovat inkluzivní, rozmanitou a vstřícnou komunitu.
Na podporu toho nabízíme mentorování každému, kdo se chce zapojit jako přispěvatel, a máme Kodex chování komunity BeeWare, který důsledně uplatňujeme. Každé oznámení o porušení tohoto kodexu – i pokud se ho dopustí zkušený člen komunity – bude přijato s respektem a bude na ně náležitě reagováno.
Zdravé a udržitelné¶
Je také důležité zajistit, aby komunita byla přístupná a dlouhodobě udržitelná. Bohužel se stalo uznávanou součástí open-source kultury, že „skutečné“ projekty s otevřeným zdrojovým kódem musí vznikat výhradně dobrovolnickou prací. Pro řadu skupin je to překážkou vstupu – dobrovolnické práci ve volném čase se mohou věnovat jen lidé, kteří mají volný čas.
Často také vede k vyhoření a dalším potížím s duševním zdravím u přispěvatelů. To, že jsou deprese, úzkost a vyhoření v komunitách softwarového vývoje tak běžné, by nemělo být považováno za čestný odznak ani za doklad oddanosti vývojového týmu. Je to problém, kterému je třeba čelit přímo a řešit jej jako softwarovou chybu – okamžitými provizorními řešeními i dlouhodobými plány na odstranění jeho systémové příčiny.
Velmi si vážíme příspěvků dobrovolníků, ale zároveň víme, že samotné dobrovolnictví nestačí k rozvoji zdravé a udržitelné komunity. Finanční udržitelnost je proto při fungování projektu BeeWare zásadním hlediskem. Jako komunita neignorujeme úlohu peněz při zajišťování zdrojů, které lidem umožní začít přispívat a pokračovat v tom. Budeme jako komunita nabízet přijatelné způsoby, jak mohou jednotlivci svou práci smysluplně zpeněžit, a kdykoli to bude možné, lidi za jejich práci odměníme – aniž bychom tím slevili z ideálů open-source vývoje.
Cíl¶
Konečným cílem projektu BeeWare je umožnit v oblasti mobilního a desktopového softwaru určeného uživatelům totéž, co Django umožnilo pro webový software — poskytnout uživatelům sadu nástrojů a knihoven, které jim umožní vyvíjet bohatá nativní uživatelská rozhraní a nasazovat je na jejich zařízeních. Patří sem:
- Nástroje, které umožňují spouštět Python na různých zařízeních,
- Nástroje pro zabalení projektu v Pythonu, aby jej bylo možné spouštět na těchto zařízeních,
- Knihovny pro přístup k nativním ovládacím prvkům a funkcím zařízení,
- Nástroje, které pomáhají vyvíjet, ladit a analyzovat tyto projekty.
Cílem je, aby se tato sada nástrojů dala i úplnými začátečníky v prostředí podobném Django Girls používat dostatečně snadno, ale zároveň aby byla natolik výkonná, že s ní půjde vybudovat další Instagram, Pinterest nebo Disqus.
A především je jeho cílem dosáhnout toho všeho jako komunita open source. Model open-source vývoje se osvědčil jako nejspolehlivější způsob tvorby robustního a spolehlivého softwaru. Díky tomu, že má ke softwaru přístup kdokoli, může každý – odborník i nadšený amatér – začínat se stejnou sadou vynikajících nástrojů.
Python všude¶
Moderní projekt v oblasti výpočetní techniky nemůže ignorovat největší změnu ve výpočetní technice posledních deseti let. Python si zakládá na tom, že je multiplatformním jazykem. Před deseti lety znamenala multiplatformnost dostupnost pro Windows, macOS a Linux. Dnes má mnohem větší význam mobilní výpočetní technika. Přesto není pro programování v Pythonu na mobilních platformách mnoho dobrých možností a multiplatformní vývoj mobilních aplikací zůstává nedosažitelný.
BeeWare považuje mobilní a další nastupující platformy (například chytré hodinky a set-top boxy) za plnohodnotnou součást výpočetního ekosystému – vždyť když lidé tato zařízení mají, proč by pro ně nemohli psát software v Pythonu?
Nativní všude¶
Pomocí motivů vzhledu lze snadno dosáhnout multiplatformního dojmu. Aplikace vytvořené s jejich pomocí však snadno poznáte – nechovají se úplně jako ostatní aplikace. Ovládací prvky nevypadají zcela správně nebo má aplikace pro OS X panel nabídek v okně. Motivy vzhledu se mohou hodně přiblížit, ale vždy se objeví výmluvné detaily.
Kromě toho jsou nativní ovládací prvky vždy rychlejší než obecné ovládací prvky upravené motivem vzhledu. Využíváte totiž nativní funkce systému, které byly vyladěny a optimalizovány, nikoli vykreslovací jádro přidané nad obecný ovládací prvek.
Motivy vzhledu také přicházejí o mnoho přístupnostních výhod nativních platforem. Autoři moderních operačních systémů věnují mnoho času ladění funkcí usnadňujících používání lidem s omezenou pohyblivostí, zrakem nebo kognitivními schopnostmi. Při použití nativních ovládacích prvků tyto funkce obvykle získáte zdarma. Pokud ovládací prvky znovu implementujete pomocí motivu vzhledu, musíte znovu implementovat i tyto funkce.
BeeWare využívá nativní ovládací prvky a nativní funkce namísto přístupu k vývoji aplikací založeného na motivech vzhledu.
Nativní Python¶
BeeWare je také rámec, který neochvějně staví Python na první místo. Máme rádi Python – líbí se nám, jak vypadá i jak funguje. Pokud Python na konkrétní platformě není k dispozici jako plnohodnotná možnost, uděláme vše potřebné, aby se stal dostupným vývojovým jazykem. Kdykoli budeme mít příležitost využít pro API nebo návrh idiomy Pythonu, uděláme to. To znamená, že budeme používat generátory, správce kontextu, asynchronní volání s yield from a další prostředky, abychom poskytli co nejlepší API přirozené pro Python pro multiplatformní vývoj aplikací.
Hledíme také do budoucna, a proto podporujeme výhradně Python 3.
Nativní uživatelský zážitek¶
Zážitek z používání jakéhokoli nástroje začíná instalací. Součástí filozofie BeeWare „Native everywhere“ je používání vhodných nativních mechanismů instalace. Používáte-li nástroj v uživatelském prostoru, měl by se vám nabízet jako balíček, který instalujete stejným způsobem jako kterýkoli jiný nástroj – prostřednictvím obchodu s aplikacemi, instalátoru nebo jednoduchého spustitelného balíčku. Koncoví uživatelé by neměli poznat, že jste aplikaci napsali v Pythonu.