@
Tomik68 Což ale neznamená, že by nemohly škodit i tak a tím se dostáváme k dalšímu mýtu.
Addon mám nainstalovaný, ale vůbec jsem ho nespustil a přesto...
Velmi často se nějak addon "zblázní" a začně škodit. Jako třeba v současné době SCC. Ale často, když se uživatelů v případě nějakých problémů ptám, co se dělo, odpoví "Ale já jsem plugin vůbec nespustil a přesto...", a uvedou nějaký problém, který se s daným addon pojí. To, že daný plugin nespustíte ještě neznamná, že spuštěn, či alespon jeho část, být nemohl. V podstatě mohou nastat dvě situace.
Widget
Zdrojem dat widgetu může být obsah načtený z databáze Kodi, to je prapůvodní a jediný způsob, který byl ale v průběhu vývoje Kodi doplněn o možnost načtení obsahu prostřednictvím spuštění pluginu. Některé skiny tuto možnost mají zpřístupněnou v rámci své parametrizace, a tak si mnohdy ani člověk neuvědomí, když v takové parametrizaci jako zdroj zadá plugin, že spuštěním Kodi, kdy se widgety poprvé načítají, se spustí (často poprvé) i plugin. A aby to nebylo tak jednoduché, díky tomu, jak addons v Kodi fungují, je možné, pokud je takových widgetů více, že se plugin spustí i vícekrát.
Service
Některé addon, a je jich poměrně dost, mají část svého kódu obsaženu v části, které se říká service. Je to část, která se v Kodi spustí hned po jeho startu a běží, vůči vlastnímu pluginu, nezávisle a asynchronně. Jejich vzájemní vazba je velmi volná, v podstatě spolu mohou, za pomoci některých konstrukcí a funkcí v knihovnách Kodi, sdílet soubor nastavení, ale jinou vazbu si už musí programátor definovat explicitně. Problémem je, že původně byly service zamýšleny jako podpora nějaké omezené množiny funkcí v rámci addon, někteří autoři z nich ale udělal jakési jádro funkce pluginu. Platí to například pro addon Netflix a také (a tam ve značné míře) pro SCC. Tam service zajišťuje poměrně zásadní množinu funkcí pro vlastní plugin, probíhá tam zpravidla komunikace na bázi socket nebo se data vyměňují prostřednictvím jiných technik. Často tak dochází k sitiuacím, kdy service, pokud není ve 100% kondici a nedodá data pro plugin včas, jeho funkci paralyzuje.
Widget + Service
V některých případech se mohou tyto dva aspekty negativně propojit a vystavit tak uživatele, stejně jako autory v případě, pokud si nebezpečí nepřipustí, problémům. Myslím tím situaci, kdy se po startu Kodi spustí service a zároveň jednotlivé widgety začnou spouště jednu instanci plugun-u za druhou. Service nestač data pro plugin připravovat a..., problém je na světě. Dělo se to kdysi právě u SCC, pamětníci si vzpomenou na workardound, který posouval spuštění skinu po spuštění Kodi a umožnil tak service, aby se správně incializovala. Bez této úpravy někomu SCC vůbec nefungovalo.
Co si z toho vzít za ponaučení
Autorům jen jedno doporučení, "Buďte obezřetní". Nechci říkat, že by service neměly používat, ale musí počítat s tím, že čím budou jeho funkce v rámco addon významnější a rozsáhlejší, tím více se mohou případné problémy eskalovat. Nechci být jak Sheldon Cooper, a napsat "Já jsem to říkal", ale říkal jsem to.

V době, kdy ten masivní přesun funkcí addon SCC do části service proběhl jsem varoval (a tady na fóru o tom s hlavním autorem SCC diskutoval), že to nemusí mít jen pozitivní stránky a že to bude, v mnoha případech zdrojem potenciálních problémů, a autory to bude udržovat v neustálé pohotovosti. Tím více, čím se do service přesune více funkcí. A stalo se. Minimálně 2x ve větším (téměř masovém) měřítku a několikrát v menším (problémy s nastavením SCC, které tomuto fenoménu můžeme také přičíst). V případě těch dvou velkých, poprvé u již zmiňovaného problém po startu Kodi, a nyní, kdy běh service s chybou projevující se rekurzivním volání funkce, vyčerpá operační paměť. Ona ani v jednom případě není chyba v tom, že je to service, ale díky tomu, že to service je, to má takové důsledky a dopady.
Uživatelům pak to, že je potřeba být obezřetný. Je mi jasné, že ne vždy a ne všichni uživatelé úplně přesně vědí, co dělají, když například využívají parametrizační možnosti některých skinů (mimochodem, některé skiny, aby mohly dobře fungovat, instalují si addon typu service,

ale to je už téma na další díl seriálu Mýty a fakta). A také vědět, co jsem se tu dnes snažil vysvětlit. Že i když plugin nespustí, může běžet bez jejich aktivity na základě nějakého jiného nastavení, například zmíněných widgetů. A pak také to, že proste někdy část service addon může běžet bez jakéhokoliv dalšího vlivu a kromě jeho deaktivace mu v tom nezabrání nic.