Kompatibilita 0.9 a 2.0

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8227
+
0
-

Jak asi víte, existují na Githubu dvě vývojové větve, 0.9.x a 1.0 (větev master). Za rozdělením stojí především ten důvod, že usilovat a 100% zpětnou kompatibilitu není vždy možné nebo by to stálo moc práce. Proto zpětně nekompatibilní změny patří jen do 1.0. Otázkou je, jak moc velkou „díru“ mezi oběma verzemi si mohu dovolit.

Možné scénáře:

  1. do 0.9.x pouze bugfixy, vše nové do 1.0
  2. novinky, které by nenarušily kompatibilitu, backportovat i do 0.9.x
  3. backportovat i některé nekompatibilní změny, aby se verze přibližovaly

Samozřejmě pro uživatele by bylo ideální, aby aplikace napsaná v 0.9 fungovala bez zásahu i v 1.0, z pohledu mého je ideální scénář a) s tím, že na kompatibilitu se nehraje ;-) Realita je pak taková, že skutečně nemá smysl očekávat, že předchod bude „bez zásahu“, ale měl by být „bezbolestný“. Naopak si myslím, že uživatel ocení, pokud bude bez zásahu přechod třeba z 0.9.5 na 0.9.6.

Tudíž se mi jeví rozumnější scénář a) + semtam trošku b) a začít na wiki vytvářet stránku o tom, v čem se verze liší a jak existující app přepsat z 0.9 na 1.0 (něco jako tohle).

Nedával bych do frameworku OldTřídy jako je třeba OldIdentity, ale tomu, kdo chce novou identitu používat už dnes, bych ji raději nabídl ke stažení s poznámkou „nakopírujte do libs/ a přejmenujte třídu např. na Identity10“. Nebo naopak, kdo chce na 1.0 se starou identitou, dostane ke stažení její kompatibilní verzi.

Podobně je třeba se postavit ke snippetům. Ve verzi 0.9 se používají zavináče a „staré“ snippety, v 1.0dev existuje dvojtečkový přepínač mezi „starými“ a „novými“ snippety. Jenže do budoucna chceme preferovat „nové“ snippety a tedy musí fungovat bez dvojtečky. Než vymýšlet složité řešení, jak rozlišovat mezi oběma snippety, zdá se mi jednodušší prostě zavináče a „staré“ snippety v 1.0 zcela zrušit. A programátor dostane instrukci, že si musí projít šablony a ošetřit výskyty @{snippet ...}. (nehledě na to, že „nové“ snippety fungují stejně trošku jinak).

Vycházím z toho, že 0.9 je zralá verze a není důvod bezhlavě přecházet na 1.0. Naopak nadšenci budou nové projekty stejně vyvíjet na 1.0 a s občasnou nekompatibilitou v nightbuild verzích počítají. Dvě větve proto vnímám jako možnost udělat řadu zásahů, které dříve nebyly kvůli kompatibilitě možné a zároveň záruku, že každý další přechod z 0.9.x na 0.9.y bude poklidný.

mcmatak
Člen | 504
+
0
-

Vydej 1.0 stable a napiš článek co vše je potřeba změnit, aby to vše fungovalo (pak se ptej pro kolik lidí je to nereálné přejít). Dokud nebude stable asi těžko větší projekty na to přejdou a později bude ještě větší propast mězi oběma verzemi.

pekelnik
Člen | 462
+
0
-

Osobne preferuji variantu A :)

  • vsechen stary balast pryc
  • vsechny zavinace pryc
  • vsechny dvojjake zpusoby (stare/nove todlencto) pryc

Editoval pekelnik (16. 2. 2010 19:50)

Honza Marek
Člen | 1664
+
0
-

Jak na tom vůbec jsou nové snippety? Už umí to co staré nebo jejich jedinou přidanou hodnotou je bezzavináčovost?

pekelnik
Člen | 462
+
0
-

Honza Marek napsal(a):

Jak na tom vůbec jsou nové snippety? Už umí to co staré nebo jejich jedinou přidanou hodnotou je bezzavináčovost?

jako treba ajax?

Honza Marek
Člen | 1664
+
0
-

pekelnik napsal(a):

Honza Marek napsal(a):

Jak na tom vůbec jsou nové snippety? Už umí to co staré nebo jejich jedinou přidanou hodnotou je bezzavináčovost?

jako treba ajax?

Jako třeba:

{foreach $novinky as $novinka}
	{snippet novinka$novinka->id}
		{if $editovanaNovinka == $novinka->id}
			{widget editovaciFormularNovinky}
		{else}
			<h2>{$novinka->name}</h2>
			<p>{$novinka->text}</p>
			<p><a href="{link editujNovinku! $novinka->id}">Upravit</a></p>
		{/if}
	{/snippet}
{/foreach}
Ondřej Mirtes
Člen | 1536
+
0
-

Jsem pro A, je to běžný postup :)

Ondřej Brejla
Člen | 746
+
0
-

Já jsem taky pro a, pokud tedy bude někde hezky popsáno co a jak pozměnit|upravit pokud budu chtít přejít z 0.9.x na 1.0.x ;-)

v6ak
Člen | 206
+
0
-

Jsem taky pro A, možná výjimečně B. C mi přijde taky jako blbost.

pave.kucera
Člen | 122
+
0
-

Jsem pro a :)

Honza Kuchař
Člen | 1662
+
0
-

A je správně. (popřípadě B)

Jan Tvrdík
Nette guru | 2595
+
0
-

A + ve vybraných situacích B.

Uvítal bych dokumentaci k novým snippetům.

sodae
Nette Evangelist | 250
+
0
-

jsem pro A

Karel Klíma
Člen | 31
+
0
-

Hlasuji také pro A.

Důvody:

  • Většina lidí používající Nette Framework se angažůjí (pasivně či aktivně) na tomto fóru, mají tudíž přehled o novinkách a aplikace průběžně upravují.
  • Pokud má někdo hotový web/aplikaci na verzi 0.9, tak pravděpodobně nebude upgradovat framework na verzi 1.0 – proč taky, když daný stav funguje? Vzhledem k tomu, že je Nette Framework od základu dobře napsaný a bugů obsahuje minimum (pokud vůbec), není důvod bezhlavě přecházet na novou verzi.
  • Zajištění zpětné kombatibility bere spoustu času, zdrojů a zvětšuje kód frameworku. A lidi to neocení.
Acnnair
Člen | 34
+
0
-

Ja som pre A, jednoznačne.

Patrik Votoček
Člen | 2221
+
0
-

z 1.0 bych všechno co jenom náznakem připomíná zpětnou kompatabilitu výházet. Protože jinak z toho bude vězeňská koule min po dobu existence 1.x . (Což může být i pár let)

David Grudl
Nette Core | 8227
+
0
-

Díky za reakce, jsem rád, že to vidíme stejně. Stránka popisující změny 0.9 → 1.0 vznikne tady

v6ak
Člen | 206
+
0
-

Ve chvíli, kdy člověk má nějakou aplikaci na 0.9 a dále ji rozvíjí se může stát, že na 1.0 přecházet nechce, ale zároveň bude chtít nějakou novou vlastnost 1.0. Backporty mohou být někdy otravné, ale pokud to zabere minimum času (např. jen přidat třídu), pak to může být v takovýchto případech užitečné. To je IMHO argument pro občasné b).

Vyki
Člen | 388
+
0
-

Také si myslím, že pokud bude někde srozumitelně napsáno co je potřeba změnit tak si to každý (kdo chce migrovat na verzi 1.0) rád v kódu změní.

v6ak
Člen | 206
+
0
-

To IMHO dost záleží na konkrétních změnách. A u většího projektu to může být bolestivější.

Vyki
Člen | 388
+
0
-

A také se připojuji k J. Tvrdíkovi s tou dokumentací k novým snippetů. Pro začátek by stačil článek, kde by bylo napsáno co se vše změnilo a jak to (vnitřně) funguje. Díky

Vyki
Člen | 388
+
0
-

v6ak napsal(a):

To IMHO dost záleží na konkrétních změnách. A u většího projektu to může být bolestivější.

U většího projektu se vyplatí to nechat být a jet po staru. Až bude změn hodně tak to projít a přepsat komplet :o)

Ondřej Mirtes
Člen | 1536
+
0
-

Já myslím, že nové snippety nejsou ještě plně funkční (např. uvnitř šablon komponent, nebo když člověk použije {extends} makro s „mezišablonou“).

Honza Kuchař
Člen | 1662
+
0
-

Ondřej Mirtes napsal(a):

Já myslím, že nové snippety nejsou ještě plně funkční (např. uvnitř šablon komponent, nebo když člověk použije {extends} makro s „mezišablonou“).

Máš recht, ještě to má mouchy. Ale taky by mě zajímalo, jak to funguje. :) (a v kódu se mi to zkoumat nechce)