Vendor-lock hell Kdyby/Doctrine & Nette 3.0
- Dan Hundrt
- Člen | 74
Zdravím,
rády bych se zeptal, jak řešíte v Nette projektu problémy s vendory, které chtějí Nette 2.4. Mám balíčky (viz. níže), pokud chci updatovat na Nette 3.0, umře to na Kdyby/Doctrine a Kdyby/Translation.
Rád bych se zeptal, zdali lze přinutit composer pro instalaci a ignorování závislostí nebo jsou projekty s Doctrine odkázané na Nette 2.4.
Díky
{
"name": "project/nette-eshop",
"description": "Nette eshop",
"type": "project",
"license": "Private",
"minimum-stability": "stable",
"require": {
"php": ">= 7.1",
"nette/application": "^2.4",
"nette/bootstrap": "^2.4",
"nette/caching": "^2.5",
"nette/database": "^2.4",
"nette/di": "^2.4",
"nette/finder": "^2.4",
"nette/forms": "^2.4",
"nette/http": "^2.4",
"nette/mail": "^2.4",
"nette/robot-loader": "^2.4",
"nette/security": "^2.4",
"nette/utils": "^2.4",
"latte/latte": "^2.4",
"tracy/tracy": "^2.4",
"nextras/mail-panel": "^2.3",
"kdyby/translation": "^2.4",
"doctrine/orm": "^2.5.10",
"doctrine/dbal": "^2.5.4",
"kdyby/console": "^2.7.0",
"kdyby/doctrine": "^3.2.1",
"kdyby/redis": "^4.0",
"lightools/xml": "^2.0",
"moneyphp/money": "^3.0"
}
}
- suwer
- Člen | 33
Hmm, to bych zase musel predelat cely composer.json a to se mi moc nechce :-). Oproti odkazovanemu reseni jsem tam mel konkretni 2.x verze jednotlivych balicku, ktere jsem lovil na packagist. Samozrejme jsem to pak revertnul bez zalohy.
Kazdopadne to spadlo hned na zacatku pri zavadeni DI extensions kdyby/doctrine.
Pokud by to necemu pomohlo, tak to muzu cele sestavit znova a identifikovat presnou tridu. Podle me tam toho ale bude hromada. Nette 3.0 je striktni a to si myslim nikdy nebude s kdyby/doctrine fungovat, dokud se neupdatne.
- Tomáš Votruba
- Moderator | 1114
Proto je dobrý aktualizovat průběžně a pravidelně.
Tohle pomůže jako workaround:
https://pehapkari.cz/…y-ve-vendoru
Tohle jako dlouhodobé řešení: https://github.com/…iny/doctrine
- Felix
- Nette Core | 1245
Tomáš Votruba napsal(a):
Proto je dobrý aktualizovat průběžně a pravidelně.
Tohle pomůže jako workaround:
https://pehapkari.cz/…y-ve-vendoruTohle jako dlouhodobé řešení: https://github.com/…iny/doctrine
Rad bych doporucil spise Nettrine (https://github.com/nettrine/) ekosystem, ktery se snazi nahradit Kdyby\Doctrine a dalsi prilehle balicky. Nettrine, jak uz nazev napovida, je spojen ze slov Nette a Doctrine. V organizaci jsou tedy adaptace balicku z organizace Doctrine pro Nette Framework.
Za Nettrine stoji vice firem a vice lidi, kteri se na tom podileji.
Bylo by fajn, kdybychom netvorili dalsi a dalsi a dalsi forky a radeji se vydali spolecnou cestou. Radi uvitame treba @Tomáš Pilař a dalsi, abychom spolecne vytvorili Nettrine\ORM jako volbu 1 pro integraci Doctrine do Nette.
Issue zalozeno: https://github.com/…iny/issues/6
Editoval Felix (15. 3. 2018 21:52)
- Machy8
- Člen | 59
@felix nebo může Dan použít portiny/doctrine přímo od Toma Pilaře :D.
Btw. jak každý píše zvlášť vlastní rozšíření do Nette na tatáž věc pořád dokola, tak je to trošku ztráta času. Neexistuje náhodou něco jako FOS pro nette?
Editoval Machy8 (12. 3. 2018 21:49)
- Felix
- Nette Core | 1245
Machy8 napsal(a):
@felix nebo může Dan použít portiny/doctrine přímo od Toma Pilaře :D.
Tomu bych se snazil vyhnout, aby kazdy udrzoval svoji „Doctrine“. Pojdme to delat koncepcne. Proc to musi kazdy delat sam?
- Felix
- Nette Core | 1245
Machy8 napsal(a):
@felix nebo může Dan použít portiny/doctrine přímo od Toma Pilaře :D.
Btw. jak každý píše zvlášť vlastní rozšíření do Nette na tatáž věc pořád dokola, tak je to trošku ztráta času. Neexistuje náhodou něco jako FOS pro nette?
Plha, vzdyt uz o tom dobrou dobu hovorime…
- suwer
- Člen | 33
Diky za navrhy reseni a urcite fandim novemu Nette Doctrine projektu, ktery by byl aktualni a stabilni.
K tem resenim, portiny/doctrine dela problemy pri nasazeni. Vyhazuje notice na config atributy, co nejsou v config.neon uvedene.
nettrine/orm ma zase problem s verzi PHPecka, vyzadovalo po mne 7.1.3 a vys. Ja mam 7.1.13 ;-)
- Felix
- Nette Core | 1245
suwer napsal(a):
Diky za navrhy reseni a urcite fandim novemu Nette Doctrine projektu, ktery by byl aktualni a stabilni.
K tem resenim, portiny/doctrine dela problemy pri nasazeni. Vyhazuje notice na config atributy, co nejsou v config.neon uvedene.
nettrine/orm ma zase problem s verzi PHPecka, vyzadovalo po mne 7.1.3 a vys. Ja mam 7.1.13 ;-)
Muzes sem prosim dumpnout hlasku z composeru? Nejak mi ty tvoje verze nesedi. :-)
- suwer
- Člen | 33
Muzes sem prosim dumpnout hlasku z composeru? Nejak mi ty tvoje verze nesedi. :-)
Muze za to zavislost na symfony/console: ^4.0.3, ktera ma php: ^7.1.3
symfony/console 4.1.x-dev requires php ^7.1.3 -> your PHP version (7.1.13) overridden by "config.platform.php" version (7.1) does not satisfy that requirement
symfony/console 4.0.x-dev requires php ^7.1.3 -> your PHP version (7.1.13) overridden by "config.platform.php" version (7.1) does not satisfy that requirement
nettrine/orm dev-master requires symfony/console ^4.0.3 -> satisfiable by symfony/console[4.0.x-dev, 4.1.x-dev]
Editoval suwer (15. 3. 2018 10:30)
- Felix
- Nette Core | 1245
suwer napsal(a):
Muzes sem prosim dumpnout hlasku z composeru? Nejak mi ty tvoje verze nesedi. :-)
Muze za to zavislost na symfony/console: ^4.0.3, ktera ma php: ^7.1.3
symfony/console 4.1.x-dev requires php ^7.1.3 -> your PHP version (7.1.13) overridden by "config.platform.php" version (7.1) does not satisfy that requirement
symfony/console 4.0.x-dev requires php ^7.1.3 -> your PHP version (7.1.13) overridden by "config.platform.php" version (7.1) does not satisfy that requirement
nettrine/orm dev-master requires symfony/console ^4.0.3 -> satisfiable by symfony/console[4.0.x-dev, 4.1.x-dev]
Ty pouzivas platform.php
? Tam musis hodit presnou verzi, nebude
stacit 7.1
. To pak nedela neplechu.
- Felix
- Nette Core | 1245
Nabidl jsem do portiny/portiny (https://github.com/…iny/issues/6), zda-li se nechteji pridat ke Contributte/Nettrine a tvorit ty veci dohromady.
Uvidime, jak to dopadne. Vic uz udelat nemohu. :-)
- Ondřej Kubíček
- Člen | 494
celý balík Kdyby není vyvíjen, jen udržován
doporučoval bych přejít na Contributte
- Daewoo
- Člen | 37
Taky to s kdyby/doctrine už nějakou dobu řeším. A právě mi prask.
Pánové. To je čurbes v těch balíčkách a to jsem ještě slušnej… Dvacet Package na stejnou věc a stejně všechny po dvou třech letech umřou. K tomu každej doporučuje něco jinýho (svýho a zaručeně je to to pravé ECHT), takže je nemožný se v tom vyznat. A za další rok zas překopemem nejlépe úplně všechno (bude nová Contributte, teď tam je zas Nextras ORM nebo co, prostě čím víc lajtwajtů a thinů, tím víc adidas).
Tohle vás hoši jednou zasype, Nette projeku to DOST škodí. Jsem nucenej udržovat projekty na 7.0 php, protože kombinace balíčků, který používám jako základ, už pod nette 2.4 nejdou poskládat (jsou jiné balíčky s jiným API a to by znamenalo přepsat kód – proč bych to měl dělat? u klienta to neobhájim.). A vážně nemám nic jinýho na práci, než každej den dřepět na fóru a sledovat, co zas kdo „vymyslel“ pod novým cool názvem. To není hejt, to je realita. A na výběr jsou alternativy.
Každopádně držím Nettrine projektu palce. Snad se to ustálí, dám mu šanci.
- David Grudl
- Nette Core | 8229
Bohužel tohle je stinná stránka open source (a důkaz, že open source je úplně vadný model).
Prostě kvalita odpovídá ceně :)
- Daewoo
- Člen | 37
Souhlasím s tebou. Samozřejmě, cena odpovídá. Absolutně nic proti tomu.
Vím, že se s tím moc dělat nedá. Možná by pro začátek jen stačilo, aby autor nějakého nevyvíjeného balíčku dal někam vědět: „Hele kluci, už mě pracovat na tomhle nebaví, ujměte se toho.“ nebo „Je to špatná ulička, přepište to někdo, nemám na to čas.“. Někam na viditelné místo. Dát tuhle funkci (a zařídit, aby se o ní opravdu vědělo) třeba do Componette. Kliknu a je (zdechlost především). Co na tom, že to nový člověk komplet přepíše – od toho máme přece major verzování. Jenže se raději napíše úplně novej balíček a celý se to pak v composeru rozjebe.
- David Grudl
- Nette Core | 8229
Proč by někdo měl držet kompatibilitu s cizím balíčkem, který mu navíc může připadat špatně navržený, když nemusí? To nedává ekonomicky smysl.
- David Grudl
- Nette Core | 8229
@Čamo pokud máš zájem podpořit Nette, pošli prosím příspěvek https://nette.org/cs/donate
- David Grudl
- Nette Core | 8229
Super, díky.
Jinak to je cíl, kterého bych rád dosáhl, abych mohl pokračovat ve vývoji. Zkusím to na stránce lépe vysvětlit.
- Filip Procházka
- Moderator | 4668
Říkám to na každém srazu a otravuju s tím pravidelně na twitteru a spoustě dalších míst.
Používáte nějaký Kdyby balíček v projektu a potřebujete aby byl
udržovaný?
Napište mi, domluvíme se – dám vám práva a můžete se o něj
starat.
Zatím se mi přihlásil jen @enumag, že bude aspoň mergovat PR, ale
vyvijet to nema čas.
A pak další jeden člověk, kterej
si vzal dva balíčky a vyvíjí je dál, protože jsou použite v projektu na
kterém dělá.
… jinak nikdo :)
- Felix
- Nette Core | 1245
Aktualni funkcni implementace Doctrine v Nette je Nettrine.
- https://github.com/…doctrine-orm
- https://github.com/…octrine-dbal
- https://github.com/…e-migrations
- https://github.com/…ine-fixtures
- https://github.com/…ctrine-extra
Vse ukazano ve skeletonu https://github.com/…ine-skeleton