Posted: 05 Feb 2009, 22:27
Ten counter mne taky napadl (používal jsem ho v jednom komerčním systému), jenže to bych musel vědět hodnotu toho counteru pro každý nainstalovaný plugin.
Jiná cesta je, aby plugin reportoval aktuální verze pluginů zpět serveru, ten by měl databázi známých verzí a buď by doporučil update nebo nahlásil, že kombinaci verze/plugin nezná. To by se však nemuselo líbit některým uživatelům pečujícím o své soukromí. (Teď plugins stahuje statický manifest přes HTTP a v UserAgent hlavičce reportuje pouze svoji verzi)
Vzhledem k přání vytvořit jednoduchý update systém podobný Firefoxu si myslím, že přesvědčit vývojáře používat standardizovaný formát verzí bude nejschůdnější cesta.
V popdsatě všechny pluginy tvořené podle aktuálního SDK a Demopluginu v něm obsaženém již standardizované jsou - major.minorA[minorB][ betatxt]:
- minorB je přidáno do řetězce jen pokud je jiné než 0 (proto 1.2=1.20<1.21<1.3=1.30, jak psal Jan Patera)
- betatxt odpovídá Salamanderu a je pro finální verze Salamandera prázdný; pro betu a RC Salamandera obsahuje popis těchto verzí (v současnosti: "beta 1").
Tento systém má však své nedostatky:
- chybí udání verze patche/revize/build number (jádro Salamandera 2.52 beta 1 již existuje v relase verzi, v opravené verzi a pak možná v privátních opravených verzích - vše se však tváří jako stejná verze "2.52 beta 1")
- nikde není stanoveno, že minorA a minorB musí být menší než 10
- betatxt je uživatelem (Altapem) definovaný řetězec, který nemá pevně stanoven budoucí formát.
Jiné aktuálně pluginy používané verzovací systémy (význam domyšlen):
- major.minor.rev - pluginy od stepand76, WinSCP
- major.minor.build.rev - Total Commander File System Proxy Plugin
Navrhuji používat 2-4 čísla oddělená tečkou s případným doplňujícím řetězcem neovlivňujícím rozhodování o verzi. Tato čísla by byla porovnávána numericky (tedy 2<3<21).
- major.minor[.num3[.num4]] [textinfo]
Co by bylo třeba změnit:
- pokud je minorB rovno nule, tak ji stejně zobrazit nebo celé minorB posunout za tečku
- přidat do verze Salamandera číslo revize/buildu - toto číslo může být jen pro potřeby About dialogu (aby uživatel věděl, kterou verzi používá) a aktualizačního procesu a nemusí být zobrazeno v obvyklích místech obsahujícíc verzi (titulek okna).
Pokud by se porovnávání verzí provádělo lexikálně (tedy 2<21<3), tak je možno ignorovat změnu minorB, ale je nutné, aby vývojáři pluginů generovali verze v plné délce, pokud chtějí využívat více cifer (02<03<21)
Jaký návrh způsobu verzování máte vy? Jak je to řešeno ve Firefoxu?
Jiná cesta je, aby plugin reportoval aktuální verze pluginů zpět serveru, ten by měl databázi známých verzí a buď by doporučil update nebo nahlásil, že kombinaci verze/plugin nezná. To by se však nemuselo líbit některým uživatelům pečujícím o své soukromí. (Teď plugins stahuje statický manifest přes HTTP a v UserAgent hlavičce reportuje pouze svoji verzi)
Vzhledem k přání vytvořit jednoduchý update systém podobný Firefoxu si myslím, že přesvědčit vývojáře používat standardizovaný formát verzí bude nejschůdnější cesta.
V popdsatě všechny pluginy tvořené podle aktuálního SDK a Demopluginu v něm obsaženém již standardizované jsou - major.minorA[minorB][ betatxt]:
- minorB je přidáno do řetězce jen pokud je jiné než 0 (proto 1.2=1.20<1.21<1.3=1.30, jak psal Jan Patera)
- betatxt odpovídá Salamanderu a je pro finální verze Salamandera prázdný; pro betu a RC Salamandera obsahuje popis těchto verzí (v současnosti: "beta 1").
Tento systém má však své nedostatky:
- chybí udání verze patche/revize/build number (jádro Salamandera 2.52 beta 1 již existuje v relase verzi, v opravené verzi a pak možná v privátních opravených verzích - vše se však tváří jako stejná verze "2.52 beta 1")
- nikde není stanoveno, že minorA a minorB musí být menší než 10
- betatxt je uživatelem (Altapem) definovaný řetězec, který nemá pevně stanoven budoucí formát.
Jiné aktuálně pluginy používané verzovací systémy (význam domyšlen):
- major.minor.rev - pluginy od stepand76, WinSCP
- major.minor.build.rev - Total Commander File System Proxy Plugin
Navrhuji používat 2-4 čísla oddělená tečkou s případným doplňujícím řetězcem neovlivňujícím rozhodování o verzi. Tato čísla by byla porovnávána numericky (tedy 2<3<21).
- major.minor[.num3[.num4]] [textinfo]
Co by bylo třeba změnit:
- pokud je minorB rovno nule, tak ji stejně zobrazit nebo celé minorB posunout za tečku
- přidat do verze Salamandera číslo revize/buildu - toto číslo může být jen pro potřeby About dialogu (aby uživatel věděl, kterou verzi používá) a aktualizačního procesu a nemusí být zobrazeno v obvyklích místech obsahujícíc verzi (titulek okna).
Pokud by se porovnávání verzí provádělo lexikálně (tedy 2<21<3), tak je možno ignorovat změnu minorB, ale je nutné, aby vývojáři pluginů generovali verze v plné délce, pokud chtějí využívat více cifer (02<03<21)
Jaký návrh způsobu verzování máte vy? Jak je to řešeno ve Firefoxu?