Vydání Nette 2.1 do konce roku s maximálním zachováním BC

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jan Tvrdík
Nette guru | 2595
+
0
-

Před pár hodinami vyšel Nette Framework 2.0.7. Rád bych navrhl brzké vydání verze 2.1, která se bude snažit o maximální zachování zpětné kompatibility a přitom přidá spoustu užitečností.

Co bych rád viděl ve 2.1 (návrh)

  • vylepšený debugger
  • parametry pro Route (%tld%, %basePath% a %domain%)
  • Presenter::sendJson()
  • PresenterFactory::$mapping
  • novou hodnotu BaseControl::$idMask (ta stará je v podstatě bug)
  • Arrays::isList()
  • Json::PRETTY
  • Strings::findPrefix()

Co nechci ve 2.1 (návrh)

  • rušení deprecated metod (např. getWidget(), redirectUri()…)
  • rušení NestedAccessor, anotací u SystemContainer
  • překopání DI, protože tam spousta věcí musí ještě dozrát
  • překopání validace formulářů a vykreslování chyb přímo u prvků
  • cokoliv, co rozbíjí BC a nepřidává významnou přidanou hodnotu

Nejdůležitější je vydat tu verzi brzo. To znamená, že nechci v žádném případě čekat, až se něco dokončí. Pokud to není teď hotové, tak to prostě v té verzi nechci. Verze se mají vydávat často s minimem věci, které rozbíjí BC.

Ze současné verze Nette 2.1-dev by se pochopitelně stalo Nette 2.2-dev.

hrach
Člen | 1838
+
0
-

Co bych rád viděl ve 2.1 (návrh)

  • nové definice latte blocku {#content}
Jan Tvrdík
Nette guru | 2595
+
0
-

Vidíš, na Latte jsem zapomněl. To by se mohlo nasadit skoro celé (kromě volání trigger_error u deprecated maker).

Jan Tvrdík
Nette guru | 2595
+
0
-

Budu předpokládat, že to David schválí a rovnou nastíním časový plán.

  • Do konce tohoto týdne (tj. do 2. 12. 2012) by proběhlo přejmenování 2.1-dev na 2.2-dev (nebo rovnou 2.5-dev?) a do větve release-2.1.x by se naházely příslušné commity z masteru a vyšla by 2.1.0-beta1.
  • Pokud by nikdo neměl výraznější námitky (které by případně vyústily ve verzi 2.1.0-beta2), tak by týden na to (tj. do 9. 12. 2012) vyšla verze 2.1.0-rc1, na kterou už doporučíme firmám migrovat s tím, že pokud by narazily na nějaký problém, tak ho do verze 2.1.0 vyřešíme.
  • Zároveň by s vydáním verze 2.1.0-rc1 začaly úpravy dokumentace (nemělo by jich být moc), které musí být hotové před vydáním finální 2.1.0.
David Ďurika
Člen | 328
+
0
-

ked tam bude minimum BC-breaks tak naco to volat 2.1 a nie 2.0.8?

enumag
Člen | 2118
+
0
-

Co brání zahrnutí těchto změn to 2.0.*? Připadá mi, že tam nejsou žádné BC breaky, spíše přidané fce (možná kromě BaseControl::$idMask).

EDIT: @mkoubik: Co z toho odporuje definici „neškodná změna“? :-)

Editoval enumag (28. 11. 2012 17:54)

mkoubik
Člen | 728
+
0
-

Protože setinkové verze jsou na opravy chyb a backportování užitečných a naprosto neškodných změn.

Jan Tvrdík
Nette guru | 2595
+
0
-

enumag wrote:

Co brání zahrnutí těchto změn to 2.0.*? Připadá mi, že tam nejsou žádné BC breaky, spíše přidané fce (možná kromě BaseControl::$idMask).

Přečti si něco o sémantické, verzování. Dozvíš se, že nové feature a žádné bc breaky je přesně to, co patří do minor verzí.

Co z toho odporuje definici „neškodná změna“? :-)

Příklad: přidání Presenter::sendJson() vypadá jako jednoduchá změna, co nezpůsobí BC break, že? Omyl! Všem firmám, které si implementovali svoji vlastní metodu sendJson s jinou signaturou se rozbije aplikace ⇒ nelze zařadit do 2.0.x.

David Grudl
Nette Core | 8228
+
0
-

Debugger a mapping jsou věci, se kterými nejsem spokojen a nechci se upsat zpětné kompatibilitě. Naopak errory ve formulářích vidím jako hotovou věc. Zásadní jsou třeba i DI továrničky.

Každopádně vydání 2.1RCalpha do konce roku mám v plánu. Klíčové je pro mě zlikvidovat Service Locator a připravit osamostatnění Latte a Debuggeru.

Ondřej Mirtes
Člen | 1536
+
0
-

Jan Tvrdík napsal(a):
Příklad: přidání Presenter::sendJson() vypadá jako jednoduchá změna, co nezpůsobí BC break, že? Omyl! Všem firmám, které si implementovali svoji vlastní metodu sendJson s jinou signaturou se rozbije aplikace ⇒ nelze zařadit do 2.0.x.

Na tuhle logiku by se dalo naroubovat, že je BC break úplně všechno.

Jan Tvrdík
Nette guru | 2595
+
0
-

Debugger a mapping jsou věci, se kterými nejsem spokojen a nechci se upsat zpětné kompatibilitě.

Ok, počkají na další verzi.

Naopak errory ve formulářích vidím jako hotovou věc

Ok, v tom případě je můžeme zařadit do 2.1, ač se (bohužel) jedná o nezanedbatelný BC break.

Zásadní jsou třeba i DI továrničky.

Zásadní ano, otázka jestli jsou dostatečně hotové.

Každopádně vydání 2.1RC do konce roku mám v plánu.

Chápu dobře, že tím ve skutečnosti myslíš 2.1-alpha nebo 2.1-beta (v souladu s obvyklým značením verzí)?

Klíčové je pro mě zlikvidovat Service Locator

Pokud nechceš použít tu produktivitu a prototypování ubíjející implementaci, která je v masteru (doufám, že ne), tak to bude vyžadovat ještě kus práce a tedy to patří až do další verze. (Finální Nette 2.2.0 bych rád viděl na konci února.)

připravit osamostatnění Latte a Debuggeru.

Tady nemám přehled, kolik to bude vyžadovat práce.

enumag
Člen | 2118
+
0
-

Zásadní jsou třeba i DI továrničky.

Zásadní ano, otázka jestli jsou dostatečně hotové.

Dle mého názoru nejsou.

David Grudl
Nette Core | 8228
+
0
-

Jan Tvrdík napsal(a):

Chápu dobře, že tím ve skutečnosti myslíš 2.1-alpha nebo 2.1-beta

Jasně, mělo tam být alpha.

Každopádně nevidím smysl v tom vytvářet novou verzi kvůli pár drobnostem. Jasně, „release early, release often“, ale zároveň se po mě bude chtít udržovat paralelně mnohem více větví, což rozhodně nemám chuť. Přísně semantické verzování má i stinné stránky.

mkoubik
Člen | 728
+
0
-

Smysl je v tom, aby ti, kteří chtějí používat stable verzi, nebyli ochuzeni o nové featury.

enumag
Člen | 2118
+
0
-

mkoubik: To leda udělat ještě nějakou další větev, kde by sice byly BC breaky, ale ne nové testovací věci. Tzn. bylo by to sice „stable“, ale bez záruky, že update nic nerozbije. A jednou za čas by se to otagovalo jako nová majoritní verze… Je to sice nice-to-have, ale pro Davida by to byla práce navíc, a nejsem přesvědčen, že to za to stojí.

Editoval enumag (3. 12. 2012 20:14)

Jan Tvrdík
Nette guru | 2595
+
0
-

@DavidGrudl:

zároveň se po mě bude chtít udržovat paralelně mnohem více větví, což rozhodně nemám chuť.

To, že je udržování verzí tvoje starost, je důsledek tvojí volby. Bylo ti navrženo, že by vnikla jasně definovaná množina právnických (primárně) a fyzických osob, která by se o to starala. Navíc ne všechny minor verze se musí udržovat stejně dlouho, říká se tomu LTS.

Přísně semantické verzování má i stinné stránky.

To tady ani nikdo nenavrhuje. Nicméně věřím, že teď máme rozumně nakročeno a bojím se, že odkročíme špatným směrem (vydání 2.1 za dlouho a se spoustu BC breaků).

Každopádně nevidím smysl v tom vytvářet novou verzi kvůli pár drobnostem.

Souhlasím s tím, že pokud není PresenterFactory::$mapping a vylepšený debugger dostatečně stabilní, tak klesá potřeba vydat novou verzi. Nicméně pořád si myslím, že to má smysl především jako účinná obrana proti kroku špatným směrem.

David Grudl
Nette Core | 8228
+
0
-

Jan Tvrdík napsal(a):

To, že je udržování verzí tvoje starost, je důsledek tvojí volby. Bylo ti navrženo, že by vnikla jasně definovaná množina právnických (primárně) a fyzických osob, která by se o to starala.

Nechť vznikne. Pokud mi bylo navrženo, že bych to mohl zařídit, tak potom asi nevznikne.

Filip Procházka
Moderator | 4668
+
0
-

Na druhou stranu nevidím reálně, že by přišla komunita a oznámila ti, že to přebírá :)

Tohle je imho diskuze na nějakou posobotu/hackaton.

zool
Člen | 144
+
0
-

Zdravím, chtěl jsem se zaptat, jak to vypadá s tou novou verzi 2.1?

Jan Tvrdík
Nette guru | 2595
+
0
-

@zool: Z mého pohledu špatně. Už tu několik měsíců měla být a ještě několik (zkusím hádát – 6) tu nebude.

David Grudl
Nette Core | 8228
+
0
-

Do verze 2.1 už toho zbývá udělat poměrně málo, takže bude brzy.

MartinitCZ
Člen | 580
+
0
-

@**David Grudl**: Nějaké přibližné datum by nebylo? Rozjíždim nový projekt, ale na 2.0.x už ho začít nechci a na 2.1-dev moc také ne, jelikož se razantně změnilo několik věcí a já kvůli tomu musel velkou část přepsat. Tzv. začínat něco na dev … z toho už jsem vyléčen.

Děkuji :)

enzo
Backer | 15
+
0
-

martinit napsal(a):

@**David Grudl**: Nějaké přibližné datum by nebylo? Rozjíždim nový projekt, ale na 2.0.x už ho začít nechci a na 2.1-dev moc také ne, jelikož se razantně změnilo několik věcí a já kvůli tomu musel velkou část přepsat. Tzv. začínat něco na dev … z toho už jsem vyléčen.

Děkuji :)

to samé jsem chtěl teď poslat :-) Davide, jak to vidíš?
tady https://github.com/…s/milestones je nějakých 82% hotovo, můžeme 2.1 očekávat do léta nebo až na podzim? :-) Díky

xificurk
Člen | 121
+
0
-

Přečtěte si název vlákna „Vydání Nette 2.1 do konce roku s maximálním zachováním BC“ a neptejte se tak blbě :P

Editoval xificurk (22. 5. 2013 16:43)

MartinitCZ
Člen | 580
+
0
-

@**xificurk**: A ty si přečti datum prvního postu a nedpovídej tak blbě. :P Podle toho už tu Nette 2.1 mělo být skoro 6 měsíců!!

Majkl578
Moderator | 1364
+
0
-

@xificurk: Důležité je připomenout, že vlákno nezaložil David.


Release 2.1 je velmi blízko, postupně už se sestavuje i rel. announcement.

Editoval Majkl578 (22. 5. 2013 16:51)

bene
Člen | 82
+
0
-

Co mi v u formulářů v základu chybí je CheckboxList (tak nějak se to rozšíření jmenuje). Využívám jej minimálně na 50% projektů.
Ono by ani tak nevadilo, že to nahraji jako rozšíření, ale snad pro něj půjde v snadno vytvořit/použít {input name:$key} and {label name:$key} makra. Pokud ne, prosím o začlenění CheckboxList do Nette.
Děkuji

Šaman
Člen | 2666
+
0
-

Bylo by možné do Nette přidat alias barDump pro rychlé dumpování do debug baru?
Teď mám (a pokud vím tak nejsem sám) v bootstrapu následující kód:

<?php
function barDump($var, $title='')
{
    $backtrace = debug_backtrace();
    $source = (isset($backtrace[1]['class'])) ?
        $backtrace[1]['class'] :
        basename($backtrace[0]['file']);
    $line = $backtrace[0]['line'];
    if($title !== '')
        $title .= ' – ';
    return Nette\Diagnostics\Debugger::barDump($var, $title . $source . ' (' . $line .')');
}
?>

Funguje to dobře, ale radši bych to měl přímo ve frameworku, stejně jako dump (který používám méně, než barDump).

enumag
Člen | 2118
+
0
-

@Šaman: A pokud někdo používá trochu jinou implementaci než ty? ;-) Za mne –1.

Glottis
Člen | 129
+
0
-

taky bych tam rad neco takoveho mel a implmentace je mi burt, hlavne ze to propadne do baru

enumag napsal(a):

@Šaman: A pokud někdo používá trochu jinou implementaci než ty? ;-) Za mne –1.

Šaman
Člen | 2666
+
0
-

enumag: Nejde o implementaci, ale o to dumpovat do baru. Ta implementace byla spíš ukázka, jak to udělat. Zdůrazňuji, že z mnoha důvodů je lepší dumpovat do baru, používám to častěji a proto navrhuji mít na to rychlý zápis pomocí aliasu (obdoba dump()), než pokaždé psát

<?php
Nette\Diagnostics\Debugger::barDump($var, $title);
# barDump($var, $title);
?>
enumag
Člen | 2118
+
0
-

@Šaman: S tím souhlasím, ale vzhledem k tomu že si tu funkci definuje každý trochu jinak jsem proti tomu dávat nějakou implementaci přímo do Nette.

Glottis
Člen | 129
+
0
-

jestli si to kazdy nedefinuje jinak prave proto ze to v nette neni

enumag napsal(a):

@Šaman: S tím souhlasím, ale vzhledem k tomu že si tu funkci definuje každý trochu jinak jsem proti tomu dávat nějakou implementaci přímo do Nette.

Šaman
Člen | 2666
+
0
-

enumag: Jak definuje různě? Já chci místo dlouhého zápisu

<?php
Nette\Diagnostics\Debugger::dump($var);
Nette\Diagnostics\Debugger::barDump($var, $title);
?>

použít alias

<?php
dump($var); # funguje
barDump($var, $title); # nefunguje - proč?
?>

Jak to bude definované mi je jedno. Jenom upozorňuji na funkci, která mi chybí natolik, že si ji definuji ručně v bootrapu. Nepředpokládám, že by to byl problém začlenit do Nette.

enumag
Člen | 2118
+
0
-

No např. já tu funkci mám takhle: https://gist.github.com/enumag/4262924

(Na gistu se ta fce sice menuje bd, ale v aplikacích ji mívám jako barDump.)

Šaman
Člen | 2666
+
0
-

Njn, to už ale není čistý alias k Nette\Diagnostics\Debugger::barDump($var, $title)
Chápu, že pro tebe by to znamenalo určitý BC, ale současné chování Nette mi připadá nekonzistentní (dump vs barDump). A možná ještě fireLog, ale ten mě nepálí.
Ta různá implementace podle mě vznikla čistě jen proto, že si to každý psal po svém (přesě jak píše Glottis), mě by třeba vůbec nevadilo, pokud by se barDump choval podle tvé implementace (jen by se tak musel chovat i Nette\Diagnostics\Debugger::barDump)

Ok, počkám jestli se k tomu bude ještě někdo vyjadřovat. Chtěl jsem to pushnout, ale když nevím, jestli by o tom byl zájem, tak se nejdřív ptám.

Editoval Šaman (3. 7. 2013 18:33)

Filip Procházka
Moderator | 4668
+
0
-

Tyhle helper funkce by měly být v sandboxu, nikoliv ve frameworku.

<?php // app/bootstrap.php

require_once __DIR__ . '/../libs/autoload.php';

// uncomment this to allow shortcut functions
// require_once __DIR__ . '/models/shortcuts.php';
Matúš Matula
Člen | 257
+
0
-

ma niekto z vas nejake aktualne info ohladom vydania v2.1? Ze co tam chce David este zahrnut a ani sa nepytam radsej na datum :)

enumag
Člen | 2118
+
0
-

Co jsem mluvil s Davidem na jedné posobotě tak by chtěl ještě před vydáním 2.1 dokončit tu separaci Nette na samostatné balíčky/repozitáře. Což jsem jednoznačně pro. Čekat na tuhle feature až do 2.2 bych opravdu nerad.

Pokud jde o datum tak do konce roku (jak říká nadpis tématu) se to stihne určitě. Jen raději neříkám kterého roku. :-P

Editoval enumag (15. 8. 2013 23:09)

Jan Tvrdík
Nette guru | 2595
+
0
-

enumag wrote: Čekat na tuhle feature až do 2.2 bych opravdu nerad.

Uvědomuješ si, že doba čekání je v obou případech téměř identická?

enumag
Člen | 2118
+
0
-

Jan Tvrdík napsal(a):

enumag wrote: Čekat na tuhle feature až do 2.2 bych opravdu nerad.

Uvědomuješ si, že doba čekání je v obou případech téměř identická?

Neuvědomuji protože tomu nevěřím. David by se mohl rozhodnout před vydáním 2.2 např. ještě refaktorovat Presenter a pak by ta doba byla mnohem delší.

loov
Člen | 49
+
0
-

určitě dojde k vydání těchto minoritních verzí? David na anglickém fóru psal, že dojde rovnou k vydání nette fw 3.0

Patrik Votoček
Člen | 2221
+
0
-

David na anglickém fóru psal, že dojde rovnou k vydání nette fw 3.0

kde?

enumag
Člen | 2118
+
0
-

Patrik Votoček napsal(a):

David na anglickém fóru psal, že dojde rovnou k vydání nette fw 3.0

kde?

http://lmgtfy.com/?…

David Grudl
Nette Core | 8228
+
0
-

Protože jsem se na pár měsíců musel věnovat práci, kvůli které mi nezbýval čas na nic jiného, nevyšly mi plány ohledně vydání další verze tak, jak jsem chtěl.

Takže jsem pro vydání 2.1, která by se narozdíl od současného masteru neobsahovala nedokončené změny ve formulářích. Dále bych asi vynechal

enumag
Člen | 2118
+
0
-

@David Grudl: +1 Jen bych ve 2.1 rád viděl ještě pár věcí které v masteru zatím nejsou.

David Grudl
Nette Core | 8228
+
0
-

Pokud ty věci existují v podobě odladěných PR, proč ne. Ale smyslem vydání 2.1 je ji vydat teď, ne čekat, že se objeví věci, co zatím nejsou.

Šaman
Člen | 2666
+
0
-

Co přesně znamená „automatické volání method inject v DI“?
Jedu na @dev verzi a nevím už přesně, co všechno je ve @stable jinak. Inject metody a autowiring používám, pokud by se v tomhle oproti aktuální @dev něco změnilo, asi by to pro mě byl problém.

Jinak +1 za aktuální stable verzi. Už od 2.05 jedu na vývojové verzi a při každém upgradu se bojím, jestli se něco nerozbije. Za mě by bylo úplně ideální vytvořit ještě jednu větev, kam by se průběžně zaváděly již odladěné funkce, ale která by nebyla konzervativní a nemusela za každou cenu držet BC. Pak by byla vývojová (s reálným nebezpečím chyb a změn v API), stabilní (ustálené API, při BC by se verze zvýšila o desetinu) a konzervativní (viz současná 2.0.x).

V současnosti musím mít Nette součástí repozitáře, protože kromě hashe nevím, na jakou verzi mám vlastně program odladěný – 2.0× mi nestačí (mám minimálně 3 důvody použít 2.1) ale vývojová verze přecijen není vhodná na ostré nasazení.

enumag
Člen | 2118
+
0
-

@Šaman: V Nette 2.0 se inject metody volaly jen na presenterech, ve 2.1 se volají na všech službách.

@DG: Budu konkrétní až přijdu domů.

Šaman
Člen | 2666
+
0
-

enumag napsal(a):

@Šaman: V Nette 2.0 se inject metody volaly jen na presenterech, ve 2.1 se volají na všech službách.

A nešla by přidat možnost toto chování (inject na všech službách) někde zapnout? Používám to sice v jediném případě (inject nepovinného TemplateLocatoru do komponent), ale nerad bych to dával do konstruktoru (komponenta může existovat i bez něho) a pro každou komponentu nastavovat stejný setter se mi také nechce (používám ho všude).

A propo podpora property injection v presenterech pomocí anotace zůstane?