Vydání Nette 2.1 do konce roku s maximálním zachováním BC
- Jan Tvrdík
- Nette guru | 2595
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í uSystemContainer
- 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.
- Jan Tvrdík
- Nette guru | 2595
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
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.
- Jan Tvrdík
- Nette guru | 2595
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 | 8218
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
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í metodusendJson
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
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.
- David Grudl
- Nette Core | 8218
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.
- enumag
- Člen | 2118
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
@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 | 8218
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
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.
- Jan Tvrdík
- Nette guru | 2595
@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.
- MartinitCZ
- Člen | 580
@**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
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
- MartinitCZ
- Člen | 580
@**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
@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
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 | 2658
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
).
- Šaman
- Člen | 2658
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);
?>
- Šaman
- Člen | 2658
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
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 | 2658
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
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
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
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
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
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ší.
- enumag
- Člen | 2118
Patrik Votoček napsal(a):
David na anglickém fóru psal, že dojde rovnou k vydání nette fw 3.0
kde?
- David Grudl
- Nette Core | 8218
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
- automatické volání method inject v DI (na to není svět připraven)
- nevytváření referencí v PresenterComponent (fakt nevím, co to může udělat za komplikace)
- zvolil finální název pro SelectionFactory
- vypustil zkrácené
{#block}
- vypustil podporu pro filtry v RobotLoaderu
- David Grudl
- Nette Core | 8218
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 | 2658
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í.
- Šaman
- Člen | 2658
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?