Abstraktní Wikipedie/Úkoly

This page is a translated version of the page Abstract Wikipedia/Tasks and the translation is 100% complete.

Jedná se o součást plánu vývoje wiki funkcí.
Pokračování z komponent Abstraktní Wikipedie.

Vývoj probíhá ve dvou hlavních částech. Část P1 se týká zprovoznění a dostatečného rozvoje funkcí Wikifunctions, aby bylo možné podporovat tvorbu obsahu potřebnou pro část P2. Část P2 se pak týká nastavení tvorby Obsahu v rámci Wikidat a umožnění přístupu Wikipedie k tomuto Obsahu. Poté bude následovat průběžný vývoj s cílem zlepšit jak Wikifunkce, tak abstraktní Wikipedii. Tento průběžný vývoj není zahrnut v tomto plánu. Všimněte si, že veškeré načasování závisí na tom, s kolika zaměstnanci budeme skutečně pracovat.

V prvním roce budeme pracovat výhradně na části P1. Část P2 začíná druhým rokem a přidává do projektu další počet pracovníků. Části P1 a P2 se pak budou vyvíjet souběžně po dobu následujících 18 měsíců. V závislosti na výsledku a úspěchu projektu je třeba kolem 24. měsíce rozhodnout o personálním obsazení dalšího vývoje a od té doby jej pravidelně přehodnocovat.

Tento plán pokrývá prvních 30 měsíců vývoje. Po uplynutí této doby budou hlavními výstupy:

  1. Wikifunkce, nový projekt WMF a wiki s vlastní komunitou a vlastním posláním, jehož cílem je poskytnout katalog funkcí a umožnit všem, aby se na tomto katalogu podíleli, a tím posílit postavení lidí demokratizací přístupu k počítačovým znalostem.
  2. Mezi-wiki úložiště pro sdílení šablon a modulů mezi projekty WMF, což je dlouhodobé přání komunit. Bude součástí Wikifunkcí.
  3. Abstraktní Wikipedie, cross-wiki projekt, který umožňuje definovat obsah ve Wikidatech nezávisle na přirozeném jazyce a který je integrován do několika lokálních Wikipedií, což výrazně zvyšuje množství znalostí, které mohou sdílet uživatelé v současnosti málo rozšířených jazyků.

Část P1: Wikifunkce

Úkol P1.1: Inicializace projektu

Zřídíme Wikistránky na Metě, komponenty pro chyby, mailing listy, chatovací místnosti, poradní sbor a další relevantní prostředky pro diskusi s širší komunitou. Zahájíme diskusi o názvech Wikifunkcí a Abstraktní Wikipedie a rozhodneme o nich, uspořádáme soutěže o loga, zorganizujeme vytvoření kodexu chování a nezbytné kroky pro zdravou komunitu.

Musíme také zahájit komunitní proces definování výběru licence pro různé části projektu: abstraktní obsah ve Wikidatech, funkce a další entity ve Wikifunkcích, jakož i právní status generovaného textu, který se má zobrazovat ve Wikipedii. To je třeba dokončit před úkolem P1.9. K tomuto rozhodnutí bude třeba získat podklady od právního poradce.

Úkol P1.2: Počáteční vývoj

Prvním krokem vývoje je vytvoření wiki Wikifunctions se jmenným prostorem Function, který umožní ukládání a editaci Z-objektů (omezenějších objektů JSON - ve skutečnosti můžeme začít s existujícími rozšířeními JSON a na nich stavět). Cílem počátečního milníku je mít:

  • Počáteční typy: unicode string, celé kladné číslo do N, boolean, list, pár, jazyk, jednojazyčný text, vícejazyčný text, typ, funkce, vestavěná implementace a chyba.
  • Počáteční sada konstant pro typy.
  • Počáteční sada funkcí: if, head, tail, is_zero, successor, predecessor, abstract, reify, equal_string, nand, konstruktory, pravděpodobně několik dalších funkcí, každá s vestavěnou implementací.

To umožňuje začít vyvíjet frontend UX pro volání funkcí a vytvořit první sadu nástrojů a rozhraní pro zobrazení různých typů objektů Z, ale také obecných objektů Z. Součástí je také první vyhodnocovací nástroj, který běží na serverech Wikimedia.

Všimněte si, že počáteční implementace pohledů, editačních rozhraní a validátorů budou po vydání verze P1.12 pravděpodobně postupně vyřazeny, jakmile budou všechny tyto prvky internalizovány. Internalizovat nějaký kód znamená přesunout jej z jádra do uživatelského prostoru, tj. reimplementovat je ve Wikifunkcích a volat je odtud.

Úkol P1.3: Nastavení testovací infrastruktury

Wikifunkce budou vyžadovat několik testovacích systémů. Jeden pro testování jádra, druhý pro testování webového uživatelského rozhraní a třetí pro testování samotného obsahu Wikifunkcí. Jedná se o trvalý úkol, který musí být integrován se správou verzí.

Úkol P1.4: Spustit veřejný testovací systém

Vytvoříme veřejně viditelný a upravitelný testovací systém, který bude pracovat s nejnovějšími verzemi kódu (alespoň jedno nasazení za pracovní den). Vyzveme komunitu, aby se zapojila a rozbíjela věci. Tento systém můžeme také používat pro kontinuální integrační testy.

Úkol P1.5: Serverový evaluátor

Zatímco v počátečním vývoji byl vytvořen jednoduchý evaluátor pracující pouze s vestavěnými moduly, a tedy s velmi předvídatelným chováním, nadcházející úloha skládání funkcí P1.6 bude vyžadovat, abychom evaluátor přehodnotili. První evaluátor bude běžet na infrastruktuře Wikimedia a potřebuje monitorovací a brzdicí schopnosti a potenciálně také možnost přidělovat uživatelům různé množství výpočetních prostředků podle toho, zda jsou přihlášeni, nebo ne.

Úkol P1.6: Složení funkcí

Umožňujeme vytvářet nová rozhraní funkcí a nový typ implementace, což jsou složená volání funkcí. Umožňuje např. implementovat

add(x, y)

jako

if(is_zero(y), x, add(successor(x), predecessor(y))

a systém je může provést. Umožňuje také více implementací.

Úkol P1.7: Zmrazování a rozmrazování entit

Úroveň ochrany, která umožňuje upravovat metadata entity (název, popis atd.), ale ne skutečnou hodnotu. Tato funkce může být užitečná i pro Wikidata. Zde je navržen propracovanější návrh verzování.

Úkol P1.8: Spuštění beta verze Wikifunkcí

V systému beta se pro účely testování spustí další iterace kódu, který bude na Wikifunkcích nasazen s dalším cyklem nasazení.

Úkol P1.9: Spuštění Wikifunkcí

Projděte kontrolou zabezpečení. Založení nového projektu Wikimedia. Přesun některých wikistránek z Meta do Wikifunkcí.

Úloha P1.10: Zkouška typu

Zavedení nového typu pro psaní testů funkcí. To se provádí zadáním vstupních hodnot a funkce, která kontroluje výstup. Kromě zavedení typu Testy musí funkce a implementace také používat testy a integrovat je do vývoje implementace a zobrazení rozhraní.

Úkol P1.11: Speciální stránka pro tvorbu volání funkcí

Potřebujeme novou speciální stránku, která umožňuje a podporuje psaní volání funkcí, se základní kontrolou syntaxe, automatickým doplňováním, dokumentací atd. Podskupina této funkce bude integrována také na stránky jednotlivých Funkcí a Implementací, aby bylo možné je spouštět se složitějšími hodnotami. Tato Speciální stránka se spoléhá na původní jednoduché API pro vyhodnocování volání Funkcí.

Úkol P1.12: Implementace v jazyce JavaScript

Umožňujeme nový typ implementací, což jsou implementace napsané v jazyce JavaScript. To vyžaduje překlad hodnot do jazyka JavaScript a zpět do Z-objektů. To také vyžaduje myslet na bezpečnost, a to prostřednictvím analýzy kódu a sandboxingu, zpočátku obohaceného o ruční revize a zmrazení P1.7. Pokud se lambda-kalkul O1 zatím nepodařil nebo byl přeskočen, můžeme se prostřednictvím tohoto úkolu dostat také k selfhostingu pro Wikifunkce, což by umožnilo internalizovat většinu kódu.

Úkol P1.13: Přístup k funkcím

Přidejte do projektů Wikimedia magické slovo F7 Lambda, které dokáže kódovat volání funkcí Wikifunkcí a integrovat výsledek do výstupu daného projektu Wikimedia. Tím vlastně vznikne centralizovaný systém šablonování, protože lidé si uvědomí, že nyní mohou šablony reimplementovat do Wikifunkcí a pak je volat z lokálních Wiki. Tomu bude předcházet analýza stávajících řešení, jako jsou TemplateData a volání v jazyce Lua.

To by mohlo vést k žádostem komunit o povolení šablonovacího jazyka MediaWiki a jazyka Lua (viz P1.15) jako programovacího jazyka v rámci Wikifunkcí. To pravděpodobně povede k žádostem o vylepšené řešení Sledovaných stránek, podobně jako to udělala Wikidata, a k implementaci šablon MediaWiki a dalším žádostem komunity. Pro splnění těchto úkolů by mohla být užitečná další osoba, která by odpovídala na požadavky komunity. Jinak by P2 mohl začít až o čtvrt roku později. Tato osoba je již uvedena ve vývojovém týmu výše.

Úkol P1.14: Vytvoření nových typů

Umožňujeme vytváření nových typů. To znamená, že bychom měli být schopni upravovat a vytvářet nové definice typů a internalizovat veškerý kód pro práci s hodnotami typu v rámci Wikifunkcí. Tj. budeme potřebovat kód pro ověřování hodnot, jejich konstrukci, vizualizaci v několika prostředích atd. Ty bychom také měli internalizovat pro všechny existující typy.

Úkol P1.15: Implementace v jazyce Lua

Přidáváme jazyk Lua jako programovací jazyk podporovaný pro implementace. Význam jazyka Lua je dán jeho širokým využitím v projektech MediaWiki. Také, pokud se tak ještě nestalo, by v tomto bodě měla být internalizována transformace hodnot z Wikifunkcí do programovacího jazyka (a také provedena pro implementace v JavaScriptu, které v tomto bodě pravděpodobně budou používat vestavěné jazyky).

Úkol P1.16: Ne-funkční rozhraní

Zatímco Wikifunkce jsou postaveny na čistě funkčních implementacích, existují některá rozhraní, která naivně funkční nejsou, například náhodná čísla, aktuální čas, automatické inkrementy nebo mnohá volání REST. Vymyslíme, jak je integrovat do Wikifunkcí.

Úkol P1.17: Volání REST

Poskytneme vestavěné moduly pro volání rozhraní REST na webu a přijímání výsledků. To by se přednostně opíralo o P1.16. Všimněte si, že volání libovolných rozhraní REST je spojeno s bezpečnostními problémy. Ty je třeba zohlednit ve správném návrhu.

Úkol P1.18: Přístup k Wikidatům a dalším projektům WMF

Poskytneme funkce pro přístup k položkám a lexémům Wikidat a také k dalšímu obsahu z projektů Wikimedia. Přednostně se to bude opírat o P1.17, ale v případě, že se to v tuto chvíli ještě nepodařilo, vestavěný modul tuto možnost odblokuje.

Úkol P1.19: Jednojazyčné generování

Vývoj těchto funkcí probíhá výhradně na wiki. Patří sem tabulky a záznamy pro reprezentaci gramatických jednotek, jako jsou podstatná jména, slovesa, větné členy atd., a také funkce pro práci s nimi. To zahrnuje implementaci kontextu, abychom mohli podle potřeby generovat anafory. To umožňuje konkrétní generování přirozeného jazyka, tedy zatím ne abstraktní.

Část P2: Abstraktní Wikipedie

Úkoly v této části budou zahájeny po roce vývoje. Neočekává se, že všechny úkoly z části P1 budou dokončeny před zahájením části P2, protože ve skutečnosti budou části P1 a P2 nadále vyvíjeny souběžně. Pouze některé úkoly z části P1 jsou nutné pro zahájení části P2.

Úkol P2.1: Konstruktory a Renderery

Zde představíme abstraktní rozhraní ke konkrétním generátorům vyvinutým v P1.19. To vede k počátečnímu vývoji konstruktorů a funkce Render. Po splnění tohoto úkolu by komunita měla být schopna vytvářet nové Konstruktory a rozšiřovat Renderery o jejich podporu.

  • Pro zápis abstraktního obsahu se používají konstruktory. Konstruktory jsou nezávislé na jazyku a neměly by obsahovat podmíněnou logiku.
  • Renderery by měly obsahovat skutečnou podmíněnou logiku (která se aplikuje na informace v konstruktorech). Renderery mohou být pro každý jazyk zvlášť (ale mohou být také sdílené napříč jazyky).
  • Oddělení mezi nimi je analogické oddělení v jiných systémech NLG, jako je Grammatical Framework.

Úkol P2.2: Podmíněné vykreslování

Zřídkakdy se stane, že by vykreslovač dokázal obsah plně vykreslit. Budeme muset podporovat postupnou degradaci: pokud se některý Obsah nepodaří vykreslit, ale jiný se stále vykresluje, měli bychom zobrazit tu část, která se vykreslila. Někdy je však nutné renderovat určitý Obsah pouze v případě, že jiný Obsah bude určitě vykreslen. V tomto úkolu implementujeme podporu takového podmíněného vykreslování, které umožní menším komunitám bezpečně rozšiřovat své Wikipedie.

Úkol P2.3: Abstraktní Wikipedie

Vytvoříme nový jmenný prostor ve Wikidatech a umožníme v něm vytvářet a spravovat obsah. Znovu použijeme prvky uživatelského rozhraní a přizpůsobíme je pro tvorbu Obsahu. Práci na uživatelském rozhraní budou předcházet výzkumné práce na designu, které mohou začít před spuštěním části P2. Několik důležitých myšlenek k tomuto návrhu najdete zde. Tento úkol také rozhodne, zda potřebujeme nová magická slova (F5, F6 a F7), nebo se jejich zavedení můžeme vyhnout.

Úkol P2.4: Mobilní uživatelské rozhraní

Tvorba a editace obsahu bude nejčastějším úkolem při vytváření vícejazyčné Wikipedie. Proto chceme zajistit, aby tento úkol byl pro uživatele příjemný a přístupný. Chceme věnovat explicitní úlohu na podporu tvorby a údržby Obsahu v mobilním rozhraní. Předpokládáme, že se nám podaří vytvořit rozhraní, které umožní lepší zážitek než editace wikitextu.

Úkol P2.5: Integrovat obsah do Wikipedie

Povolení kouzelného slova Abstraktní Wikipedie. Poté povolíme explicitní vytváření článků a nakonec implicitní vytváření článků (F1, F2, F3, F4, F5, F6).

Úkol P2.6: Pravidelné skloňování

Lexémy Wikidat obsahují skloňované formy lexému. Tyto formy jsou často pravidelné. Vytvoříme řešení, které bude generovat pravidelné skloňování prostřednictvím Wikifunkcí, a budeme s komunitou diskutovat o tom, jak jej integrovat do stávajících lexémů.

Úkol P2.7: Základní renderer pro angličtinu

Předpokládáme, že počáteční vytváření rendererů bude obtížné. Vzhledem k postavení angličtiny jako široce používaného jazyka v komunitě budeme používat angličtinu jako první jazyk pro demonstraci tvorby rendereru a dobře ji zdokumentujeme. Zapojíme pomoc komunity. To zahrnuje také funkčnost pro zobrazení referencí.

Úkol P2.8: Základní renderer pro druhý jazyk

Na základě zpětné vazby od komunity, zájmů a odborných znalostí lingvistů pracujících v týmu vybereme druhý velký jazyk, pro který společně s komunitou vytvoříme základní Renderer. Bylo by zajímavé vybrat jazyk, u kterého komunita na místní Wikipedii již potvrdila zájem o integraci Abstraktní Wikipedie.

Úkol P2.9: Renderer pro jazyk z jiné rodiny

Jelikož je pravděpodobné, že jazyk v P2.8 bude indoevropský jazyk, vytvoříme společně s komunitou základní renderer pro jazyk z jiné jazykové rodiny. Výběr tohoto jazyka bude proveden na základě odborných znalostí, které má tým k dispozici a zájmů komunity. Bylo by zajímavé vybrat jazyk, u kterého komunita na místní Wikipedii již potvrdila zájem o integraci Abstraktní Wikipedie.

Úkol P2.10: Renderer pro nedostatečně používaný jazyk

Jelikož je pravděpodobné, že jazyky v P2.8 a P2.9 budou jazyky, které jsou již dobře obslouženy aktivními a velkými komunitami Wikipedie, vybereme také jazyk, který není dostatečně obsloužen, tedy jazyk, který má v současnosti velký počet potenciálních čtenářů, ale jen malou komunitu a málo obsahu. Výběr tohoto jazyka bude proveden na základě odborných znalostí, které má tým k dispozici, a zájmů komunity. Zde je klíčové vybrat jazyk, kde se komunita na místní Wikipedii již zavázala k podpoře integrace Abstraktní Wikipedie.

Úkol P2.11: Abstraktní popisky Wikidat

Popisy Wikidat se zdají být obzvláště vhodné pro vytváření prostřednictvím funkcí Wikifunkcí. Často jsou to jen krátká podstatná jména. V tomto úkolu podporujeme ukládání a údržbu abstraktních popisů ve Wikidatech a jejich generování pro Wikidata. Měli bychom také zajistit, aby výsledkem byly jedinečné kombinace štítků a popisů.

Úkol P2.12: Abstraktní glosy

Lexémy Wikidata mají významy. Významy jsou zachyceny glosami. Glosy jsou dostupné pro jednotlivé jazyky, což znamená, že jsou obvykle dostupné pouze v několika jazycích. Pro podporu skutečně vícejazyčného slovníku navrhujeme vytvořit abstraktní glosy. Ačkoli to zní, že by to mělo být mnohem jednodušší než vytváření plnohodnotných článků Wikipedie, domníváme se, že vzhledem k povaze Glos to může být mnohem těžší úkol.

Úkol P2.13: Podpora více přirozených jazyků

Podporovat další jazykové komunity při vytváření Rendererů se zaměřením na jazyky, které nejsou dostatečně využívány.

Úkol P2.14: Obsah generovaný šablonou

Některé Wikipedie v současné době obsahují velké množství šablonovitého obsahu. Identifikujeme tento obsah a budeme diskutovat s lokální komunitou, zda jej chtějí nahradit řešením založeným na Wikifunkcích, kde je šablona ve Wikifunkcích a obsah uvedený v místní Wikipedii nebo v Abstraktní Wikipedii. To povede k udržitelnějším a udržovatelnějším řešením, která se nemusí spoléhat na jediného přispěvatele. Všimněte si, že to nemusí být vícejazyčné a může to být mnohem jednodušší než projít úplnou abstrakcí.

Úkol P2.15: Neformální komentáře

Umožnit příležitostným přispěvatelům komentovat vykreslovaný text a vytvořit mechanismy pro zachycení těchto komentářů a jejich přesměrování zpět do třídicího mechanismu, který umožní nasměrovat je buď na obsah, nebo na renderery. Je důležité, aby se neztratily připomínky příležitostných přispěvatelů. V ideálním případě bychom jim umožnili explicitně přepsat část vykresleného výstupu a považovat to za požadavek na změnu, a pak budeme mít angažovanější přispěvatele, kteří budou pracovat na převedení záměru příležitostného přispěvatele do odpovídajících změn v systému.

Úkol P2.16: Rychlé generování názvu článku

Široká veřejnost přichází na Wikipedii většinou tak, že do běžných vyhledávačů zadává názvy věcí, které hledá ve svém jazyce. To znamená, že položky Wikidat budou potřebovat popisky přeložené do daného jazyka, aby bylo možné použít implicitní tvorbu článků. Toho lze pravděpodobně dosáhnout překladem milionů štítků Wikidat. Někdy to mohou udělat roboti nebo umělá inteligence, ale to není zcela spolehlivé a škálovatelné, takže se na tom musí podílet lidé.

Současné nástroje pro masivní hromadný překlad štítků Wikidat tomuto úkolu nevyhovují. Existují dva hlavní způsoby, jak to udělat: editace štítků v samotných Wikidatech, což je dobré pro přidání třeba desítky štítků, ale rychle to omrzí, a použití programu Tabernacle, který se zdá být více zaměřen na masivní hromadné překlady, ale je příliš složitý na to, aby ho většina lidí skutečně používala.

Cílem tohoto úkolu je vyvinout masivní a integrovaný nástroj pro překlad štítků s jednoduchým a moderním frontendem, který bude moci používat mnoho lidí.

Vedlejší úkoly

Existuje celá řada dalších volitelných úkolů. V ideálním případě by se jich chopily externí komunity a vyvíjely je jako otevřený zdrojový kód mimo původní vývojový tým, ale některé z nich by možná musely být zahájeny a dokonce plně vyvinuty základním týmem.

Úkol O1: Lambda kalkul

Je možné zcela samostatně hostovat Wikifunkce, aniž by bylo nutné spoléhat na vestavěné programy nebo implementace v jiných programovacích jazycích, a to implementací lambda kalkulu ve Wikifunkcích (odtud pochází návrh názvu). To může být užitečné pro umožnění vyhodnocování bez podpory jakéhokoli jazyka, a tak snadněji nastartovat vývoj evaluatorů.

Úkol O2: CLI v terminálu

Mnoho vývojářů rádo používá rozhraní příkazového řádku pro přístup k systému, jako jsou Wikifunkce. Měli bychom ho poskytnout s obvyklými funkcemi, jako je automatické dokončování, historie, integrace se shellem atd.

Úkol O3: Uživatelské rozhraní pro vytváření, ladění a sledování funkcí

Cílem Wikifunkcí je umožnit rychlé pochopení a rozvoj funkcí ve Wikifunkcích. Vzhledem k funkčnímu přístupu by mělo být možné vytvořit uživatelské prostředí, které umožní částečné vyhodnocení, rozbalení, ladění a sledování volání funkce.

Úkol O4: Zlepšit efektivitu vyhodnocování

Existuje mnoho způsobů, jak zlepšit efektivitu evaluatorů, a tím snížit spotřebu zdrojů, zejména ukládání do cache nebo správná volba strategie evaluace. Měli bychom tomu věnovat nějaký čas a zaznamenávat výsledky, aby různé evaluatorské skupiny mohly tyto poznatky využít, ale také zajistit, aby evaluatory udržovaní základním týmem používali většinu osvědčených postupů.

Úkol O5: Implementace Web of Trust

Abychom zmírnili podmínky pro implementace v programovacích jazycích, mohli bychom zavést řešení založené na Web of Trust, které by přispěvatelům umožnilo přezkoumat existující implementace a explicitně označit jejich schválení a také označit ostatní přispěvatele za důvěryhodné. Tato schválení by pak mohla být zohledněna při výběru nebo přípravě strategie hodnocení.

Úkol O6: Implementace v jazyce Python

Python je široce používaný programovací jazyk, zejména pro studenty a v některých oblastech, jako je strojové učení. Podpora jazyka Python může Wikifunkcím otevřít bohatý ekosystém.

Úkol O7: Implementace v jiných jazycích

Budeme se snažit vyzvat ostatní komunity programovacích jazyků, aby se přidali do Wikifunkcí, a podporovat je. Kandidáty na implementaci jsou Web Assembler, PHP, Rust, C/C++, R, Swift, Go a další, ale záleží na zájmu základního týmu a externích komunit o vytvoření a podporu těchto rozhraní.

Úkol O8: Webový REPL

Webový REPL může přenést výhody rozhraní příkazového řádku O2 na web, aniž by bylo nutné instalovat CLI v místním prostředí, což někdy není možné.

Úkol O9: Rozšíření API o parser a linearizátor

Mohou existovat různé parsery a linearizátory používající Wikifunkce. API Wikifunkcí může být snadněji použitelné, pokud by je volající mohl explicitně vybrat, místo aby je ručně zabalil, což by umožnilo použití Wikifunkcí s různými povrchovými dialekty.

Úkol O10: Podpora diskusních stránek

Pro podporu diskusí na diskusních stránkách Wikifunkcí vyvinout a integrovat mechanismus, který by umožňoval (zpočátku) jednoduché diskuse a postupně zvyšoval jejich složitost podle potřeb komunit.

Úkol O11: Vytvoření právního textu

Zajímavá je aplikace Wikifunkcí pro vytváření právních textů modulárním způsobem a s různými úrovněmi (právní a lidsky čitelný text), podobně jako jsou různé úrovně popisu pro různé licence Creative Commons.

Úkol O12: Vytvoření textu týkajícího se zdraví

Zajímavé je využití Wikifunkcí při tvorbě textů týkajících se zdraví pro různé úrovně čtení. K tomu by měl přispět WikiProjekt Medicína a jeho úspěšná práce, která by se díky spolupráci s Wikifunkcemi mohla dostat k mnohem většímu počtu lidí.

Úloha O13: Knihovna NPM

Vytvoříme knihovnu Wikidata pro NPM, která umožní jednoduché použití funkcí z Wikifunkcí v programu v jazyce JavaScript. Stejná syntaxe by měla umožnit implementacím v jazyce JavaScript ve Wikifunkcích přistupovat k jiným funkcím Wikifunkcí. Všimněte si, že to lze provést na základě volání vyhodnocovače Wikifunkcí nebo kompilací požadovaných funkcí do dané báze kódu.

Úkol O14: Knihovna v Pythonu

Vytvoříme knihovnu Pythonu, která umožní jednoduché použití funkcí z Wikifunkcí ve skriptu Pythonu. Stejná syntaxe by měla umožnit implementacím Pythonu ve Wikifunkcích přístup k jiným funkcím Wikifunkcí. Všimněte si, že to lze provést na základě volání vyhodnocovače Wikifunkcí nebo kompilací požadovaných funkcí do dané báze kódu.

Úkol O15: Knihovny pro jiné programovací jazyky

Vyzveme komunity několika programovacích jazyků, aby nám pomohly s vytvořením knihoven, které umožní jednoduché volání funkcí Wikifunkcí z programů v jejich jazyce. Všimněte si, že to lze provést na základě volání evaluátoru Wikifunkcí nebo kompilací požadovaných funkcí do dané báze kódu.

Úkol O16: Evaluátor v prohlížeči

Jednou z výhod Wikidat je, že vlastní vyhodnocení volání funkce může probíhat v různých vyhodnocovacích programech. Hlavní evaluátor pro abstraktní Wikipedii bude serverový a bude ho provozovat nadace Wikimedia Foundation, ale abychom snížili výpočetní zátěž, měli bychom poskytnout také evaluátor běžící v browseru uživatele (pravděpodobně ve vlákně Worker).

Úkol O17: Evaluátor založený na Jupyteru a/nebo PAWS

Jeden ze zajímavých evaluátorů vychází ze zápisníku Jupyter nebo PAWS, a umožňuje tak obvyklé výhody těchto zápisníků, ale integruje také výhody z Wikifunkcí.

Úkol O18: Vyhodnocovací nástroj založený na aplikaci

Jeden evaluátor by měl běžet nativně na zařízeních se systémem Android nebo iOS, a umožnit tak uživateli využít značný výpočetní výkon, který má v ruce.

Úkol O19: Hodnotitel založený na P2P

Mnoho evaluátorů by se mohlo vzájemně propojit a umožnit si navzájem využívat neaktivní výpočetní zdroje ve své síti. To může, ale nemusí vyžadovat štíty mezi zúčastněnými uzly, které zajistí soukromí jednotlivých výpočtů.

Úkol O20: Cloudový evaluátor

Jedním ze zřejmých způsobů, jak získat výpočetní prostředky, je využít poskytovatele cloudu. Zatímco by bylo možné jednoduše spustit serverový vyhodnocovací nástroj na cloudové infrastruktuře, pro poskytovatele cloudu bude pravděpodobně výhodné poskytnout tenčí rozhraní pro vyhodnocovací nástroj více přizpůsobený na míru.

Úkol O21: Typ stream

Přidání podpory typu pro streamování dat, a to jak na vstupu, tak na výstupu. Typem streamu se rozumí například feed posledních změn na wiki Wikimedia.

Úkol O22: Binární typ

Přidání podpory binárních souborů na vstupu i výstupu.

Úkol O23: Integrace s mediálními soubory Commons

Povolení přímého přístupu k souborům na serveru Commons. Umožnit pracovní postupy se službou Commons, které vyžadují méně strojů pro nasazení, než je v současnosti potřeba. Vyžaduje O22.

Úkol O24: Integrace se strojovým učením

Vypracování několika příkladů integrace s řešeními strojového učení, např. pro úlohy NLP nebo pro práci s obrázky či videem, např. pomocí klasifikátorů. To vyžaduje, jak a kam ukládat modely, případně také jak je trénovat a jak k nim přistupovat.

Úkol O25: Integrace do IDE

Oslovte komunity, které vyvíjejí IDE, a podpořte je v integraci s funkcemi Wikifunctions pomocí typových nápověd, dokumentace, doplňování a mnoha dalších praktických a zásadních funkcí moderních IDE.

Úkol O26: Vytváření jednoduchých aplikací nebo webových stránek

Vyvinout systém umožňující snadné vytváření a nasazování aplikací nebo webových stránek založených na funkcích Wikifunctions.

Úkol O27: Zobrazení otevřených úkolů pro přispěvatele

Abstraktní Wikipedie bude vyžadovat jeden renderer pro každý konstruktor pro každý jazyk. Bylo by užitečné, kdyby přispěvatelé mohli dostat nějaké vodítko, který Renderer implementovat dále, protože to často není triviálně viditelné. Pouhé počítání toho, jak často se daný Konstruktor objevuje, by mohlo být první aproximací, ale pokud jsou některé Konstruktory používány častěji v čele nebo v částech textu, které blokují výskyt jiného textu, nebo v článcích, které jsou více čtené než jiné, může být tato aproximace mimo. V tomto úkolu vytvoříme formu ovládacího panelu, který umožní uživatelům zvolit jazyk (a možná i oblast, například sport, zeměpis, historie atd. a možná i filtr pro očekávanou složitost vykreslování) a poté jim poskytne seznam nevyrenderovaných Konstruktorů seřazených podle dopadu, který by implementace měla.

Mohli bychom také umožnit přispěvatelům, aby se přihlásili k odběru pravidelných zpráv, které by je informovaly o tom, jaký mají dopad (z hlediska zobrazení a vytvořeného obsahu), a to na základě stejného rámce, který je potřebný pro ovládací panel.

To je srovnatelné se zobrazením stavu překladů různých projektů na TranslateWiki.Net (pro vybraný jazyk) nebo zobrazení témat, organizací nebo autorů v Scholia. U každého projektu se zobrazuje, kolik % řetězců v něm bylo přeloženo a kolik % je třeba aktualizovat, a dobrovolný překladatel si může vybrat: získat něco z 98 % až 100 %, získat něco ze 40 % až 60 %, získat něco z 0 % až 10 % atd.

Úkol O28: Aktivní zobrazení

Zatímco výchozí zobrazení vyrenderovaného obsahu by vypadalo podobně jako statický text, mělo by existovat také aktivnější zobrazení, které vyzývá k přispění na základě existujícího obsahu, který se nepodařilo vykreslit kvůli chybějícím rendererům. V nejjednodušším případě může jít o vytvoření lexému ve Wikidatech a připojení ke správnému lexému. Ve složitějších případech to může být napsání Rendereru nebo nabídnutí příkladových vět jako textu, třeba pomocí cesty příležitostného přispívání popsané v P2.15. To by poskytlo zajímavý prostor, který by proměnil více čtenářů v přispěvatele.

Existují produktová a designová rozhodnutí o tom, jak a kde by se mělo aktivní zobrazení používat a zda by mělo být výchozím zobrazením, nebo zda by se mělo zapínat pouze po pozvání atd. Mohl by také existovat režim, ve kterém by přispěvatelé mohli přecházet z článku na článek a doplňovat chybějící části, podobně jako je tomu abstraktnějším způsobem v O27.

Pravděpodobně by bylo opravdu užitečné zajistit, aby aktivní cesta a cesta editace, ke které vede, fungovala i na mobilních zařízeních.

Úkol O29: Sestavení implementace

Kompozice funkcí použitá pro implementace by měla umožnit vytvářet vysoce výkonné kompilace poměrně vysokoúrovňových funkcí v mnoha různých cílových programovacích jazycích, zejména ve Web Assembleru a JavaScriptu. To by mělo urychlit vyhodnocování o několik řádů.

Úkol O30: Integrace s příklady kódu na Wikipedii, Wikiknihách atd.

Umožnit Wikipedii, Wikibooks a dalším projektům integrovat jejich příklady kódu přímo do wiki funkcí, aby mohly být spuštěny živě.


Jedná se o součást plánu vývoje wiki funkcí.