Jak se vypořádat s chybami v aktuální stable verzi?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tharos
Člen | 1030
+
0
-

Popíšu problém, kterému nyní čelím.

Používám Nette 2.0.10, ve kterém jsou jisté chyby. Zejména pak v Nette\Database jsou až zásadní chyby (díky kterým se například za jistých okolností klade enormní počet dotazů). Řada chyb už je opravených v master větvi na GitHubu, ale já nemohu přejít na dev verzi, protože ta zase pro změnu obsahuje dost BC breaků, mění se pod rukama a nepochybuji, že obsahuje zase jiné chyby :-P.

Používám Composer a je pro mě poměrně důležité, abych mohl odkázat na nějakou konkrétní verzi, protože o ručně udělané fixy přijdu, jakmile já nebo někdo jiný zavolá composer update. Pro mě dokonale patová situace. Nechce se mi kvůli tomu dělat fork Nette, do něj vyzobat opravy chyb a pak ho dávat na Packagist, abych na to mohl odkázat…

Jak řešíte tento problém vy? A nestálo by za to zavést nějaký robustnější model vydávání verzí a oprav?

enumag
Člen | 2118
+
0
-

Všechny ty fixy určitě budou ve 2.0.11, můžeš zkusit lobbovat za její urychlené vydání. Pokud to potřebuješ opravdu akutně, není tak těžké si přes git do 2.0.x cherry-picknout potřebné commity a do composer.json přidat své repository aby to composer tahal z tvého forku a ne z packagistu – takhle to řeším já v případě jiných knihoven než Nette.

Editoval enumag (18. 4. 2013 18:41)

Tharos
Člen | 1030
+
0
-

Vím, že to lze vyřešit forkem, cherry pickováním, ručním vyvěšením na packagist coby tharos/nette… ale připadá mi to zbytečně složité.

Mrzí mě, že se jednou vydané verze už vůbec nijak nefixují. V podstatě každá vydaná verze Nette je zabugovaná, protože sice jsou v ní opraveny bugy z předchozích verzí, ale zase zavádí nové bugy v nových featurách…

Přitom díky Gitu by zavedení nějakého lepšího modelu stálo jen malé úsilí.

enumag
Člen | 2118
+
0
-

ručním vyvěšením na packagist coby tharos/nette

To není třeba, stačí guthub repo a pár řádků navíc v composer.json.

castamir
Člen | 629
+
0
-

Navrhuješ něco jako 2.0.10beta/alfa/RC?

Jan Tvrdík
Nette guru | 2595
+
0
-

Asi mi něco uniká :)

Nechce se mi kvůli tomu dělat fork Nette, do něj vyzobat opravy chyb a pak ho dávat na Packagist

Proč, lenost?

A nestálo by za to zavést nějaký robustnější model vydávání verzí a oprav?

Nějaký konkrétní nápad?

Vím, že to lze vyřešit forkem, cherry pickováním, ručním vyvěšením na packagist coby tharos/nette… ale připadá mi to zbytečně složité.

Proč, lenost?

Mrzí mě, že se jednou vydané verze už vůbec nijak nefixují.

Nechápu, tohle přece není pravda. Nebo ty žiješ ve světě, kde neexistují setinkové verze?

zase zavádí nové bugy v nových featurách…

V 2.0.x nejsou (téměř) žádné nové featury.

Přitom díky Gitu by zavedení nějakého lepšího modelu stálo jen malé úsilí.

Ty to řešení očividně znáš (fork, cherry pick, pull request…), ale přestože tvrdíš, že to stojí jen malé úsilí, tak ho odmítáš vynaložit. Proč by někdo jiný měl?


A co se týče konkrétně ndb, tak jsem měl za to, že je obecně známá věc, že verze 2.0.x jsou stabilní kromě ndb, kterou nikdo stabilizovat neumí :)

Tharos
Člen | 1030
+
0
-

Jan Tvrdík napsal(a):

Asi mi něco uniká :)

Nechce se mi kvůli tomu dělat fork Nette, do něj vyzobat opravy chyb a pak ho dávat na Packagist

Proč, lenost?

Abych to upřesnil, mluvím hlavně o chybách Nette\Database. Možná tahle informace přispěje k lepšímu vzájemnému porozumění. :)

Nechce se mi vyzobávat chyby, protože Nette\Database v dev verzi není zpětně kompatibilní s verzí 2.0.10, takže bych u každého toho cherry-pickovaného commitu musel řešit, jestli je kompatibilní s Nette 2.0.10 a případně ho upravovat.

Nepřipadám si jako líný tvor, spíš se mi nechce takhle trávit čas… Framework používám proto, abych se mohl soustředit na hlavní myšlenku aplikace, a ne abych v něm cherry-pickoval chyby. :-P

A nestálo by za to zavést nějaký robustnější model vydávání verzí a oprav?

Nějaký konkrétní nápad?

No, já aktuálně většině svých projektů používám tuhle metodu větvení/verzování (myslím, že dost známou) a v ní je tohle elegantně vyřešené.

Vím, že to lze vyřešit forkem, cherry pickováním, ručním vyvěšením na packagist coby tharos/nette… ale připadá mi to zbytečně složité.

Proč, lenost?

Viz výše…

Mrzí mě, že se jednou vydané verze už vůbec nijak nefixují.

Nechápu, tohle přece není pravda. Nebo ty žiješ ve světě, kde neexistují setinkové verze?

zase zavádí nové bugy v nových featurách…

V 2.0.x nejsou (téměř) žádné nové featury.

Přitom díky Gitu by zavedení nějakého lepšího modelu stálo jen malé úsilí.

Ty to řešení očividně znáš (fork, cherry pick, pull request…), ale přestože tvrdíš, že to stojí jen malé úsilí, tak ho odmítáš vynaložit. Proč by někdo jiný měl?


A co se týče konkrétně ndb, tak jsem měl za to, že je obecně známá věc, že verze 2.0.x jsou stabilní kromě ndb, kterou nikdo stabilizovat neumí :)

Aktuální změny v masteru obsahují množství nových featur. Části frameworku jsou třeba úplně zrefaktorované a neříkej mi, že neobsahují zase nové chyby… Plánovaná další vydaná verze je v mnohých věcech zpětně nekompatibilní s verzí 2.0.10. Pokud na nějaký svůj projekt nasadím verzi z masteru, výsledkem je šňůra fatal errorů a čas investovaný do úpravy kódu…

Já teda rozumím, že s aktuálním stylem vývoje v Gitu, kdy se vše nové merguje do masteru, se bugfixy dělají blbě, ale vážně by nestálo za to s tím něco udělat?

Editoval Tharos (18. 4. 2013 19:47)

Filip Procházka
Moderator | 4668
+
0
-
  1. Forkneš Nette
  2. založíš si větev, třeba fixed, na commitu na jakém chceš (takže třeba na tagu v2.0.10)
  3. napickuješ si tam opravy jaké chceš
  4. pushneš do svého forku
  5. nakonfiguruješ Composer, aby instaloval Nette z tvého forku, pomocí sekce repositories
  6. profit
  7. když david vydá novou verzi, větev rebasuješ a opět křečkuješ opravy jaké potřebuješ
  8. profit
"require": {
    "nette/nette": "dev-fixed as 2.0.99"
},
"repositories": [
    {
        "type": "package",
        "package": {
            "name": "nette/nette",
            "version": "fixed",
            "dist": { "url": "https://github.com/Tharos/nette/archive/fixed.zip", "type": "zip" },
            "source": { "url": "https://github.com/Tharos/nette.git", "type": "git", "reference": "fixed" },
            "autoload": { "files": ["Nette/loader.php"] }
        }
    }
]

Každá verze jakéhokoliv software chyby opravuje a zároveň vytváří nové. Tomu se nevyhneš, ani kdybys každou RC verzi půl roku testoval.

Šaman
Člen | 2634
+
0
-

Jan Tvrdík napsal(a):

Proč, lenost?

WTF? Jestliže stable verze obsahuje chyby, o kterých se ví a existuje na to oprava v develop verzi, tak je dost odvážné tvrdit, že uživatelé jsou líní si sami vyzobat příslušné opravy. Není snad snahou autorů dodávat kód s co nejmenším počtem chyb?
Představa, že místo používání nějaké otagované verze prohledávám soukromé repozitáře, jestli někdo nemá vlastní opravený fork mě dost děsí. A většina uživatelů nemá na to sledovat commity a zjišťovat který co opravuje.

P.S. Ještě jsem nepracoval pro klienta, kterému by nevadilo, že si používám vlastní upravené Nette. Já bych taky takový program nepřevzal – při pokusu o upgrade se opupínkuju.

Editoval Šaman (18. 4. 2013 20:42)

Filip Procházka
Moderator | 4668
+
0
-

Šaman napsal(a):

WTF? Jestliže stable verze obsahuje chyby, o kterých se ví a existuje na to oprava v develop verzi, tak je dost odvážné tvrdit, že uživatelé jsou líní si sami vyzobat příslušné opravy. Není snad snahou autorů dodávat kód s co nejmenším počtem chyb?

Good point. Když se napíšou opravy závažných chyb, měl by se udělat tag… (Ještěže ndb nepoužívám :))

enumag
Člen | 2118
+
0
-

No, já aktuálně většině svých projektů používám tuhle metodu větvení/verzování (myslím, že dost známou) a v ní je tohle elegantně vyřešené.

Máš pravdu že Nette to používá trochu jinak – dle toho obrázku by se bugfixy měly dělat v release-* větvi a mergovat do masteru, což Nette dělá přesně naopak. A řešilo by to přesně tvůj problém, protože by sis nyní mohl stáhnout tu release-2.0.x s hotovým fixem i před vydáním 2.0.11.

Má to ale i své nevýhody – já třeba jedu na masteru a s tímto přístupem bych se musel zabývat zastaralou větví 2.0.x u které si už ani nepamatuju co a jak funguje, musel bych přemýšlet zda ten bug je i ve stable, zda ten fix nezpůsobí BC break etc. a naopak bych musel čekat než se fix objeví v masteru. Leda by to David cherry-pickoval po každém mergnutém pull requestu – velmi pochybuji že by se mu do toho chtělo.

Editoval enumag (18. 4. 2013 21:24)

Jan Tvrdík
Nette guru | 2595
+
0
-

Abych to upřesnil, mluvím hlavně o chybách Nette\Database.

Pak věz, že nevím o nikom, kdo by tu knihovnu dokázal stabilizovat. Je to známý fakt a z mého pohledu tvoje blbost, že ses ji rozhodl používat. Já od ní odrazuji lidi od té doby, co je v Nette. Žádný způsob vydávání verzí neřeší to, že to prostě nikdo neumí řešit. @hrach (a samozřejmě i další) odvedl obrovské množství práce, ale ani přes jeho obrovskou snahu ta knihovna prostě není ani zdaleka tak stabilní jako dibi.

Nechce se mi vyzobávat chyby, protože Nette\Database v dev verzi není zpětně kompatibilní s verzí 2.0.10, takže bych u každého toho cherry-pickovaného commitu musel řešit, jestli je kompatibilní s Nette 2.0.10 a případně ho upravovat.

Takže přece lenost. Přesto to už někdo zcela zdarma (@dg) 10× udělal, ve snaze ten problém řešit.

No, já aktuálně většině svých projektů používám tuhle metodu větvení/verzování (myslím, že dost známou) a v ní je tohle elegantně vyřešené.

Viz výše, tohle v podstatě nic neřeší. NDB nikdo stabilizovat neumí (nebo rozhodně ne v krátkém čase). Ve snaze se stabilitě přiblížit bylo potřeba provést zpětně nekompatibilní změny v NDB, které jsou často neportovatelné do 2.0.x.

Plánovaná další vydaná verze je v mnohých věcech zpětně nekompatibilní s verzí 2.0.10.

Z velké části právě proto, že se někdo snaží řešit to, že sis vybral nestabilní knihovnu, viz výše.

Pokud na nějaký svůj projekt nasadím verzi z masteru, výsledkem je šňůra fatal errorů a čas investovaný do úpravy kódu…

Zpětně nekompatibilních změn ve 2.1 je překvapivě poměrně málo. Největší problém bude asi (já tomu nerozumím) s NDB, důvody viz výše.


Šaman wrote:
WTF? Jestliže stable verze obsahuje chyby

A reportuješ ty chyby poctivě do issue trackeru? Každá stable verze je vydávána v dobré vůli, že žádné chyby neobsahuje. Před vydáním nové stable verze je k dispozici release candidate k otestování. Testuješ poctivě každý release candidate, že funguje bez problémů s tvým kódem?

je dost odvážné tvrdit, že uživatelé jsou líní si sami vyzobat příslušné opravy.

Ne vždy je možné ty opravy snadno naportovat. Domníváš-li se o opaku, tak si je neportuj.

P.S. Ještě jsem nepracoval pro klienta, kterému by nevadilo, že si používám vlastní upravené Nette.

Od kdy klient rozhoduje, jakou verzi frameworku použít?

při pokusu o upgrade se opupínkuju.

Pochopitelně je potřeba mít zkušenosti s merge/rebase.


@enumag: Nikdo vám nebrání (pokud vím) dělat pull requesty s opravami vůči release-2.0.x. Setinkové verze navíc vychází poměrně často.

Tharos
Člen | 1030
+
0
-

No nic no… Vůle zjevně není a jako problém tohle vidím asi jenom já (a možná ještě dva tři lidi).

Filip Procházka napsal(a):

  1. Forkneš Nette

  1. profit

Díky že jsi to takhle sepsal. Když tak krásně shrnuté vidím, co všechno to obnáší, tak to nemám chuť dělat už tuplem. Mně to totiž přijde úplně ujetý.

Pohled mnohých z vás tady je typický pro lidi, kteří denně sledují vývoj frameworku, na GitHubu čile komentují, mají o dění kolem frameworku extrémně velký přehled. Jasně, jejich rada je: „Udělej si fork, vyzobej si co potřebuješ, hoď si to na Packagist a… profit!“

Jenomže pak je tu ještě odhadem 99 % dalších uživatelů Nette, kteří vývojem frameworku tolik nežijí, sledují jen changelog na fóru, nevládnou Gitem, neumí s GitHubem, nepoužívají Composer… No a tihle chudáci jsou odsouzeni používat silně zabugované „stable verze“, protože po jejich vydání se s tou danou verzí už nic neudělá a další oficiálně vydaná verze má řadu BC breaků.

Fakt mi nejde do hlavy, jak s tímhle můžete být spokojení a považujete těch 99 % zbylých lidí za líné…

@enumag: Přečti si kdyžtak i ten článek k tomu, ne vše se tam dá vyčíst z obrázku. Přijde mi, že jsi tu pointu nepochopil (a nemyslím to nijak ve zlém, snažím se být konstruktivní). Podle toho modelu neexistuje nic jako „větev 2.0.x“. Bugfixy se typicky vyvíjejí v samostatné hotfix větvi oddělené z posledního commitu v masteru. A pak už jde jen o to mergnout je zpět do masteru a navíc ještě i do develop větve (respektive do release větve, pokud tou dobou nějaká existuje – staré se typicky odmazávají).

Dále nevím, co by to bylo za fix, který způsobuje BC break. Fix je oprava něčeho, aby se to chovalo podle očekávání, tj. aby to vyhovovalo tomu, jak se to už před tím fixem lidi snaží používat.

Editoval Tharos (18. 4. 2013 23:30)

Tharos
Člen | 1030
+
0
-

Jan Tvrdík napsal(a):

Jak jsem psal… Tohle je pro mě typický pohled člověka, který se aktivně podílí na vývoji Nette a frameworkem takříkajíc „žije“. Kolik takových lidí ale je?

Já Nette chci používat a ne spoluvyvíjet. Je to špatně? Jsem sobec/línej/whatever?

Editoval Tharos (18. 4. 2013 23:18)

Tharos
Člen | 1030
+
0
-

Jan Tvrdík napsal(a):

Přesto to už někdo zcela zdarma (@dg) 10× udělal, ve snaze ten problém řešit.

S tím zcela zdarma nesouhlasím. David nevyvíjí Nette jako volnočasovou aktivitu a framework má (myslím fungující) business model.

Caine
Člen | 216
+
0
-

Jan Tvrdík napsal(a):
Pak věz, že nevím o nikom, kdo by tu knihovnu dokázal stabilizovat. Je to známý fakt a z mého pohledu tvoje blbost, že ses ji rozhodl používat. Já od ní odrazuji lidi od té doby, co je v Nette. Žádný způsob vydávání verzí neřeší to, že to prostě nikdo neumí řešit. @hrach (a samozřejmě i další) odvedl obrovské množství práce, ale ani přes jeho obrovskou snahu ta knihovna prostě není ani zdaleka tak stabilní jako dibi.

Jestlize to je znamy fakt, tak co teda NDB dela v nette? Nekdo se s tim nauci pracovat, zalibi se mu to a zacne to pouzivat. Pak zjisti, ze to je vlastne nestabilni a nefunkcni..

Tharos
Člen | 1030
+
0
-

@Caine: +1. Proč tedy nevyčlenit NDB mimo Nette jen jako nějakou hříčku?

Z toho, jak to Honza Tvrdík vylíčil, mi fakt nejde do hlavy, proč se třeba do NDB přidává i úplně nová funkconalita… Je ta knihovna myšlena vážně?

Nemůžu si nevzpomenout, jak zde na fóru Hrach opakovaně hovořil o NotORM jako o „zabugovaném příbuzném“. By mě docela zajímalo, jak si ty dvě knihovny vedle sebe ve skutečnosti vedou…

Editoval Tharos (18. 4. 2013 23:38)

enumag
Člen | 2118
+
0
-

Pohled mnohých z vás tady je typický pro lidi, kteří denně sledují vývoj frameworku, na GitHubu čile komentují, mají o dění kolem frameworku extrémně velký přehled. Jasně, jejich rada je: „Udělej si fork, vyzobej si co potřebuješ, hoď si to na Packagist a… profi!“

Už jsem řekl že na packagist to dávat nemusíš.

Jenomže pak je tu ještě 99 % dalších uživatelů Nette, kteří vývojem frameworku tolik nežijí, sledují jen changelog na fóru, nevládnou Gitem, neumí s GitHubem, nepoužívají Composer… No a tihle chudáci jsou odsouzeni používat silně zabugované „stable verze“, protože po jejich vydání se s tou danou verzí už nic neudělá a další oficiálně vydaná verze má řadu BC breaků.

Tihle chudáci by se měli s gitem a composerem naučit, chtějí-li se stát dobrými a dobře placenými programátory. Stable verze nejsou silně zabugované – jak už tady zaznělo, každá stable verze je vydávána s vírou že neobsahuje žádné bugy nebo alespoň žádné takové které lze vyřešit bez BC breaku.

Tvůj pohled je dle mého názoru silně zkreslený tou Nette\Database – narazils ve stable na problémy v jiných částech frameworku? Jak jistě víš, Database je nejmladší část Nette a navíc poměrně komplexní, nedivím se tedy, že není až tak stable. Osobně považuji používání NDB ve stable Nette za sebevraždu – a podotýkám že narozdíl od @Jan Tvrdík jsem spokojeným uživatelem NDB.

Fakt mi nejde do hlavy, jak s tímhle můžete být spokojení a považujete těch 99 % zbylých lidí za líné…

V tomhle s tebou souhlasím. Jak už řekl Šaman, naší snahou je dodávat nezabugovaný kód a nenutit těch 99% k forkování a podobným věcem.

@enumag: Přečti si kdyžtak i ten článek k tomu, ne vše se tam dá vyčíst z obrázku. Přijde mi, že jsi tu pointu nepochopil (a nemyslím to nijak ve zlém, snažím se být konstruktivní). Podle toho modelu neexistuje nic jako „větev 2.0.x“. Bugfixy se typicky vyvíjejí v samostatné hotfix větvi oddělené z posledního commitu v masteru. A pak už jde jen o to mergnout je zpět do masteru a navíc ještě i do develop větve (respektive do release větve, pokud tou dobou nějaká existuje – staré se typicky odmazávají).

Kritiku vždy rád přijímám, ale obávám se že jsi to nepochopil ty. Na tom obrázku je přímo „release brancheS“ (ty zelené commity) a tím není ani náhodou myšlena jedna jediná větev, ale jedna větev za každou major verzi – přesně jak to má Nette. Článek jsem nečetl ale ten obrázek v tomhle mluví naprosto jasně.

Bugfixy jsem už předtím z obrázku pochopil přesně tak jak píšeš, možná jsem se špatně vyjádřil.

Dále nevím, co by to bylo za fix, který způsobuje BC break. Fix je oprava něčeho, aby se to chovalo podle očekávání, tj. aby to vyhovovalo tomu, jak se to už před tím fixem lidi snaží používat.

Některé problémy jsou způsobené špatným návrhem a tím že lidi občas něco používají jinak než původně bylo zamýšleno.

Editoval enumag (19. 4. 2013 13:40)

Jan Tvrdík
Nette guru | 2595
+
0
-

Jenomže pak je tu ještě odhadem 99 % dalších uživatelů Nette, kteří vývojem frameworku tolik nežijí, sledují jen changelog na fóru, nevládnou Gitem, neumí s GitHubem, nepoužívají Composer…

S tím souhlasím a jsem si toho vědom.

No a tihle chudáci jsou odsouzeni používat silně zabugované „stable verze“, protože po jejich vydání se s tou danou verzí už nic neudělá a další oficiálně vydaná verze má řadu BC breaků.

Neser mě Tharosi! Jak nic se s ní nedělá? Vycházejí přece setinkové verze, které opravují chyby (drtivá většina oprav se týká právě ndb). Důvod, proč není opraveno ndb už jsem ti přece vysvětlit. Nikdo ji spravit neumí. Sorry, že ji používáš.

Fakt mi nejde do hlavy, jak s tímhle můžete být spokojení

Jsem perfekcionista, pochopitelně, že s tím nejsou spokojen, ale nevidím cestu, jak z toho ven.

Dále nevím, co by to bylo za fix, který způsobuje BC break. Fix je oprava něčeho, aby se to chovalo podle očekávání, tj. aby to vyhovovalo tomu, jak se to už před tím fixem lidi snaží používat.

Fix nezpůsobuje BC break, jenomže architektura Nette\Database je natolik problematická, že je problém ty opravy vymyslet. Kdyby to nebyl problém, tak by problémy ndb vyřešila první setinková verze. Představ si to jako rozsáhlou rovnici. My víme, že s největší pravděpodobností existuje řešení (finální fix, který opraví všechny chyby v ndb), ale zatím tuto rovnici ještě nikdo nezvládl vyřešit, přesto že se na tom pracuje už přes rok.


Caine wrote: Jestlize to je znamy fakt, tak co teda NDB dela v nette?

Já jsem byl (co se pamatuji) vždycky proti tomu, aby se tam dostala. Teď tam je a minimálně ve 2.0.x ji odstranit nelze. Zatím nic nenasvědčuje tomu, že bude ve verzi 2.1 odstraněna. Proč? Zřejmě proto, že se věří v to, že jednoho dne ta knihovna dosáhne stability.


Tharos wrote: Z toho, jak to Honza Tvrdík vylíčil, mi fakt nejde do hlavy, proč se třeba do NDB přidává i úplně nová funkconalita…

Kdyby to bylo na mně, tak já bych tu knihovnu vyhodil. Nicméně @dg, @hrach a spousta dalších ji má rádo. Proto knihovnu používají, implementují novou funkcionalitu a opravují chyby.

Šaman
Člen | 2634
+
0
-

Za těchto okolností si myslím, že integrace NDatabase v Nette je chyba. Nevím, proč David změnil názor (Dibi byla samostatná knihovna, aby měl uživatel svobodný výběr databázové vrstvy).
Teď, když je NDatabase součástí frameworku a všechny návody s ní počítají, tak se to každý nováček naučí používat (kecám, nenaučí, naučí se maximálně traverzovat mezi tabulkami, na zbytek se ptá) a pokud nemá dobrý důvod na ni zanevřít, tak se ji snaží používat.

Já si nad NDatadase zkusil dva projekty, jeden relativně bez problémů (když nepočítám problematickou dokumentaci, hackovaný left joiny a některé věci stále neumím), na druhém projektu byl výkonnostní problém s AcriveRow. (Zkusil jsem Fabik\Database, pak YetORM a lagy se vyřešily až odstraněním ActiveRow z Entity. Koneckonců, že aktivní entita je antipattern jsem věděl od začátku, ale nedbal jsem.) Takže dobrý důvod zanevřít NDatabase mám, stálo mě to ale dost času i nervů.

Druhá věc, která mi maličko vadí je ta, že pomalu zapomínám SQL syntax, takže když pak dojde na optimalizaci dotazu a databázová vrstva na to nestačí, tak mi najednou chybí základní programátorská abilita, kterou jsem s Dibi vždy měl. Takže Resumé je návrat ke kořenům.

enumag
Člen | 2118
+
0
-

@Šaman: Můžeš trochu rozvést čím konkrétně byl ActiveRow tak pomalý? Možná o tom nevíš, ale __set a __unset jsou v masteru deprecated a ActiveRow je read-only.

Glottis
Člen | 129
+
0
-

ja NDB vnimam jako neco pro zacatecnika (zatim). par jednoduchych selectu, zaiterovat si v sablone a easy web je na svete. a konec :) pokud to naroubujes na neco sloziteho a najednou po ni chces nejake megajoiny a dalsi kraviny, nevybral sis dobre. ja si ndb zkusil a zjistil, ze delam slozitejsi aplikace nez ndb zvladala nejak jednoduse a bez chyb a sahl po dibi. ale pak sem delal nejaky jednoduchy webik a tam sem si ndb klidne dal, pro tu jednoduchost.

staci se zamyslet a pouzit spravnou vec na tu spravnou situaci :)

Jan Tvrdík
Nette guru | 2595
+
0
-

Glottis wrote: ja NDB vnimam jako neco pro zacatecnika (zatim).

Osobně si myslím, že toto je jeden z důvodů nestability NDB. Kdyby NDB masivně používali zkušení programátoři™ (co dnes velmi často používají Doctrine), tak by na tom ta knihovna byla mnohem líp, protože zkušení programátoři jednak mohou posílat pull requesty s opravami a jednak mají aplikaci pokrytou testy, takže když vyjde RC setinkové verze, tak ji během pár minut můžou otestovat a nestane se tak, že by jim nová setinková verze něco rozbila. Začátečníci většinou chyby opravit nedokáží, testy nemají a RC verze nezkouší. A pak se diví, že jsou setinkové verze rozbité :)

Tharos
Člen | 1030
+
0
-

Glottis napsal(a):

staci se zamyslet a pouzit spravnou vec na tu spravnou situaci :)

To samozřejmě ano, ale kdyby knihovna Nette\Database dělala to, co má (tj. nebyla zabugovaná), byla by správnou věcí pro mnoho situací. Rozsáhlé projekty (kdy se vůbec projekt stává rozsáhlým?) jsou stejně víc o kvalitním zapouzdřením modelu a pak už je kosmetická věc, jestli je v útrobách Dibi/NDB/whatever.


Moje resumé po diskuzi, která zde proběhla (a za kterou jsem moc rád), je následující…

Pokud si odmyslím NDB, musím uznat, že stable Nette je opravdu stable. Pokud bych NDB nezkoušel používat, stopro bych tohle vlákno vůbec nezakládal.

Že je NDB součástí Nette taky vidím jako nešťastné a to hned z několika důvodů.

NDB ještě není ustálená knihovna a zasloužila by si kratší release cyklus, než má Nette. V tomhle by její osamostatnění velmi pomohlo.

Dále je teď myslím vůbec tendence rozdělit Nette do samostatných balíčků (Tracy…). Pak bych osobně NDB vyčlenil jako první. :-P

Díky všem za cenné odpovědi, pomohli jste mi urovnat si pár věcí v hlavě.

hrach
Člen | 1834
+
0
-

Pak věz, že nevím o nikom, kdo by tu knihovnu dokázal stabilizovat. Je to známý fakt a z mého pohledu tvoje blbost, že ses ji rozhodl používat. Já od ní odrazuji lidi od té doby, co je v Nette. Žádný způsob vydávání verzí neřeší to, že to prostě nikdo neumí řešit. @hrach (a samozřejmě i další) odvedl obrovské množství práce, ale ani přes jeho obrovskou snahu ta knihovna prostě není ani zdaleka tak stabilní jako dibi.

To není o tom to chtít stabilozovat. Ja osobně ani moc nechci, protože vidím obrovský kus práce ještě před námi. Lze si všimnout, jak se postupně řeší jiné a jiné problémy.

  • Nedjříve se řešily chybějící věci jako backjoin
  • Diky DIC se začal používat cache na sloupce a zjistilo se, že je to enormě zabugované
  • Potom se začali opravovat chyby ohledně počtu dotazů, optimalizace zapisu do cache
  • Všechno předchozí je už jakštakš ok, takže těď se řeši insert, update, atp.

Určitě bude docházet ještě k nekompatibinílm změnam ohledně:

  • Reflexe
  • related api.

Ale upgradovat nette database na master není vůbec složité, změn je minimum.
Cca Nette 2.2 stable by mohlo mít stabilní API nette database do budoucna.

K srovnání s dibi: to, co nette database dělá jako dibi je stabilní. Porovnovávat to je amaterismus.

enumag
Člen | 2118
+
0
-

NDB ještě není ustálená knihovna a zasloužila by si kratší release cyklus, než má Nette. V tomhle by její osamostatnění velmi pomohlo.

+100! :-)

Dále je teď myslím vůbec tendence rozdělit Nette do samostatných balíčků (Tracy…). Pak bych osobně NDB vyčlenil jako první. :-P

Tento návrh se tu již několikrát objevil. Bohužel to není tak jednoduché, protože Database má závislost na Caching.

Glottis
Člen | 129
+
0
-

njn, je to zacarovany kruh. jestli by nestalo za to mit nejake NDB lite ktere by bylo soucasti nette a funkcni. orezane o nejake slozitejsi veci. nekde napsat ze to umi to a to, a neumi nic jineho a kdyz chces vic, musis zkusit jinou knihovnu. zacatecnik by na tom mohl zacit si hrat. mel by ohraniceny pisecek. zkusenejsi si zvoli na vlastni riziko co chce. ale je to komplikace :) a asi placam nesmysl

Jan Tvrdík napsal(a):

Glottis wrote: ja NDB vnimam jako neco pro zacatecnika (zatim).

Osobně si myslím, že toto je jeden z důvodů nestability NDB. Kdyby NDB masivně používali zkušení programátoři™ (co dnes velmi často používají Doctrine), tak by na tom ta knihovna byla mnohem líp, protože zkušení programátoři jednak mohou posílat pull requesty s opravami a jednak mají aplikaci pokrytou testy, takže když vyjde RC setinkové verze, tak ji během pár minut můžou otestovat a nestane se tak, že by jim nová setinková verze něco rozbila. Začátečníci většinou chyby opravit nedokáží, testy nemají a RC verze nezkouší. A pak se diví, že jsou setinkové verze rozbité :)