Jak se rodí Nette
Dnešní díl bude ještě mnohem obecnější, než ten včerejší, ale příště se už dočkáte konkrétních ukázek.
Jak se vymýšlí framework?
Kdybych řekl, že Nette jsem tři roky vymýšlel a měsíc programoval, nebyl bych daleko od pravdy. Zadání totiž znělo: velmi jednoduchý, malý a intuitivní framework s nímž bude tvorba i údržba webových aplikací úplná brnkačka.
Neodpustím si aktuální vsuvku na téma „jednoduchost“:
Poměry prvků v chemických sloučeninách představují vždy malá přirozená čísla. Klíčem k životu jsou pouhé tři prvky – vodík, uhlík a kyslík. DNA si vystačí se čtyřmi nukleovými bázemi. Příroda má ráda nejjednodušší řešení nejkomplexnějších problémů. Říkáme jim geniální řešení.
Geniální řešení se bohužel nedají vymyslet, ty nás mohou pouze napadnout. Když se to náhodou podaří, intuitivně to poznáme. Jsou to totiž ryze Přírodní projevy, podvědomě nás přitahují a vzbuzují v nás úžas. Jenom debil může prohlásit, že „E=mc2“ je jednovečerová záležitost.
Tím v žádném případě nechci říct, že by se mi kdy podařilo něco geniálního vytvořit. Jen mám chuť a snahu se tímto směrem ubírat. Za dosaženou jednoduchostí tedy stojí stovky hodin přemýšlení, permanentní sebekritická nespokojenost, šťastná náhoda, nebo prostě náhlé osvícení, co vás ve tři ráno vzbudí ze snu. Nikoliv omezenost. To jenom, až mi bude někdo vytýkat, proč dělám ramena, když těch 50kB kódu Nette napíše cvičená opice za víkend.
Konec vsuvky.
Tak ještě jednou, jak se vymýšlí framework?
Předně: vymýšlení frameworku je slepou uličkou. Na tom jsem se řádně vypekl hned v začátcích. Naopak k cíli vede myšlenkový experiment: vymyslíte si zadání nějaké webové aplikace a pokusíte se ji s pomocí úžasného (leč neexistujícího) frameworku napsat. Píšete aplikaci tak, aby se vám psala dobře. Rychle. Přehledně. A také aby byla co nejméně náchylná k chybám.
Pak přijde na řadu údržba. Zadání se změnilo, část aplikace je třeba překopat. Sledujete, jak framework pomůže. Pak zkoumáte jiná zadání, hledáte kolizní stavy atd.
Framework však stále neexistuje a tohle všechno se odehrává jen v myšlenkách. Je to hodně zdlouhavé a snad i náročné, nicméně přináší to nejlepší ovoce. Framework si vysníte na konkrétních a ryze praktických úkolech, a pak teprve napíšete.
Jiné frameworky
Už jsem se zmiňoval dříve, po dobu úvah nad Nette jsem se raději moc nedíval na nástroje jiné. Důvodem je efekt „nadšení-vystřízlivění“. Podíváte-li se na hotové řešení, které vás nadchne, přijmete jeho filozofii a uvažujete jen nad tím, co vylepšit, co změnit, co nechat. Myslíte tedy jen v jeho mantinelech. A to bohužel trvá až do fáze „vystřízlivění“, kdy jej přerostete a uvažujete opět svobodně.
Velmi krásným důsledkem tohoto efektu je skutečnost, že existují stovky frameworků (nejen) pro PHP, které se dají obecně rozdělit do tří skupin a v rámci skupiny se podobají jako vejce vejci.
Nicméně i když postupujete metodou „čistá hlava“, musíte stejně počítat s tím, že objevujete kolo! „Moderní“ programátorské techniky jsou často principy známé přes třicet let. Jenže… v takovém případě by právě průzkum jiných řešení byl velmi inspirující a pomohl by vyhnout se úskalím, která už jiní úspěšně překonali. No, pak si vyberte 🙂
Dnes vidím, že návrh Nette se lehce blíží ASP.NET. Tedy v tom, že používá komponenty a událostmi řízený model. V tom se se softwarovými architekty Microsoftu shodnu. Naopak s MVC asi mnoho společného nemá a jestli jsem někdy tvrdil opak, tak jsem záměrně kecal. Z hlediska marketinku je MVC dobrá nálepka.
Licence & spol.
Protože jsem si vybral tu nejsložitější cestu, jak „objevit“ Nette, bylo by velmi špatné si je nechat jen pro sebe. Uvolnění jako open source vidím jako jasnou věc. Také chci zhodnotit ten nekonečný čas, co mi v něm leží. Jak nastavit obchodní model? Pohrávám si s představou, že bych Nette pustil do světa pod nějakou hodně volnou licencí a zdrojem příjmů by byly dobrovolné příspěvky + obchod s věci souvisejícími. Tak uvidíme.
Komentáře
Tomik #1
Jak jsem psal minule – velmi se těším… :)
Každopádně uvolnění pod OS vítám a jsem rád, že Ti vydržel elán a ochota dělat něco pro komunitu i po té příhodě s nominací Texy! na nejlepší OS z ČR (a to předpokládám nebyla jediná zkušenost podobného rázu).
Mám radost a držím palce.
A stejně jako u Texy!, tak i u Nette – pokud to bude kvalitní framework a ulehčí mi práci (což předpokládám… ;D), tak velmi rád přispěji autorovi na vývoj.
johno #2
https://web.archive.org/…/evolve.html
Pavel #3
Teším se až budu moci těch „50kB“ prozkoumat.
Z toho, že Tě bude někdo kritizovat si nic nedělej. Většinou nic neudělal a jen dělá velká ramena.
Gratuluji k Texy.
yyy #4
Dám všechno co vyžebrám 🙂
Odin #5
Jsem rád, že si Nette nenecháš jen pro sebe a uvolníš ho všem. Snad se kolem vytvoří časem větší komunita, která pomůže s dalším rozvojem.
Šlaha #6
Jak se vymýšlí framework?
To si zichruješ, až budeš zase někam nominovanej?
nebko #7
Určitě už sis na nějakém webu musel vyzkoušet, jak Nette hezky funguje..máme se těšit na nových základech postavenou La Trine? ;)
wizard #8
A kdy už tu Nette bude? My ho chceme!!!
llook #9
Nevím jak ASP.NET, ale Prado toho triku s MVC využívá docela dost. Je fakt, že se to dá nalepit takřka na všechno, viz ten nedávný Lerdorfův spot o MVC bez frameworku.
I klasické vaření špaget lze označit za „aplikaci vzoru MVC“ – C je Apache, V jsou šablony a ten zbytek je M.
rADo #10
Hehe, tyto články mi začínají připomínat všudypřítomnou „červenou ruku“. Aneb jak se rodí Vodafone. now
Mirek Novotný #11
Tak marketing zvládáš obstojně, už jsem potkal dva případy, kteří na Nette přísahají, aniž by ho viděli („Pche, Symfony, Mojavi, phpCake? Počkej si na nete, to ti je bomba!“). Uvidíme, jestli ti programování jde alespoň stejně tak dobře.
Těším se na ten „obchod s věci souvisejícími“. Přijmi prosím moji předobjednávku na osušku s polonahým Davidem a nápisem Nette v rohu.
hvge #12
obchod s věci souvisejícími – no ja by som si nejaky ten hrnek alebo slipy s logom nette kludne aj poridil 😉
Michal Hantl #13
OT : Já sice ASP nerozumím, ale kdybych měl vycházet z toho, co jsem viděl ve videích na microsoftích stránkách, tak bych se ASP 2.0 nedotkl ani klackem.
Míchání html, xml, asp, samá tabulka… Přijde mi to jako programování webu pro neprogramátory a zároveň newebdesignery. Nebo se mýlím?
cita #14
#11 Mirku Novotný, heckler is comming back
Jakub Podhorský #15
#13 Michale Hantle, teď mluvíte o ASP nebo o ASP.NET? sice jsem v ASP.NET začátečník a ASP jsem viděl jenom z rychlíku ale v případě ASP.NET nevím co myslíte tím mícháním xml, html, asp a samých tabulek…chtělo by to trochu asi upřesnit
Michal Hantl #16
#15 Jakube Podhorský, Jde o .net, nevěděl jsem, jaký je mezatím rozddíl:) Koukal jsem na „How do I? Videos“ a byl jsem docela zděšený. http://www.asp.net/Default.aspx?…
Xml struktura webu, asp+html+tabulky = layout. Proti tomu xmlku bych ani moc nebyl. I když bych to nikdy nepoužil.
mylan #17
V tej ukážke nabudúce bude aj „puzzle“ kravičky? Alebo to je „tam“ len tak 🙂
Milf #18
Předpokládám, že už v příštím díle se představí i číslo účtu, kam posílat první dotace projektu. Vlastního kódu snad ani netřeba, už jen ta myšlenka ve dvou zápisech na shodné téma si zaslouží ocenit. 😛
BTW proč mám pocit, že PERKO opět neběží? Čtu si o Nette, bavím se Nette a ejhle – před mé zraky se v posledních komentářích snaží protlačit .NET, dokonce ASP.NET. Za co? 😄
Maňas #19
jo, ja sem si přesně takhle framework udělal :)
David Grudl #20
#7 nebko, jedna z prvních věcí bude diskusní fórum (mám obavy z těch zabugovaných opensource projektů) a bug-tracking systém. Ty potřebuju. Samozřejmě si rád vyzkouším i blogovací systém – ale to už jen jako praktický test.
#10 rADo, #11 Mirek Novotný to víš, na světě jsou tisíce báječných aplikací, o kterých nikdo kromě autora neví, kvůli nezvládnutému marketingu…
Pod tím „obchodem s věci souvisejícími“ si nemusíte hned představovat merchandising. Ale ani to není špatný nápad ;)
#13 Michale Hantle, S ASP.NET má Nette společné asi jen to, že jeho tvůrci stejně jako já zvolili architekturu komponent a událostmi řízené modelování. A tím nejspíš i veškerá podoba končí.
#18 Milfe, Jasně 🙂 A pokud se do měsíce nenasbírá alespoň $10.000, tak máte útrum a žádné Nette nebude. To by byl v dějinách Open Source unikát 🙂
Michal Hantl #21
#20 Davide Grudle, To jsem pochopil z článku;)
Ivan #22
Takze teraz nas caka 30 dielny serial, plny nadherneho kodu, pri ktorom budeme vsetci slintat a na konci ktoreho bude 50kB zazrak.
Nechapem, doteraz som videl len serialy, ktore popisovali kod ktory bol k dispozicii.
Mam pocit, ze mi staci tucny, nafuknuty Smarty, kde mozem zasuvat a vysuvat co potrebujem, aj ked mi bude luto automatickeho prenasania parametrov v URL.
jules #23
BSD style licencia by bola fajn 🙂
Tomik #24
#12 hvge,
Já bych si jeden hrnek taky vzal…
noregret #25
Líbí se mi ta myšlenka, kdy je zohledněná praktická část využití frameworku, který tak vychází ze skutečné praxe a ne z pouček a ryze akademických diskusí. Jsem náramně zvědavý, jak se to bude dál vyvíjet a těším se, že budu třeba moci přiložit ruku k dílu! 🙂
hvge #26
#24 Tomiku, Ty brdo, az som dostal chut na ranne kakavko s rozkom a maslom 🙂
SQi #27
#10 rADo, no jasně:-)
#20 Davide Grudle, aby se pak nette nešířilo mimo zákon..:-)
Zdenda #28
Na úvod bych rád řekl, že na znovuobjevování objeveného není nic špatného – je to vlastně princip učení složitějších věcí…ale framework…
Nejlepší ovšem je obalit první dva články prázdnými frázemi (nechápu místní slintající diskutující.) Vybírám několik perel, nebo snad až neuvěřitelných tvrzení.
Úlet – jestli se Nette opravdu lehce blíží ASP.NET tak Vás obdivuji. Zřejmě máte na mysli serverové ovládací prvky, obousměrný databinding, validaci …blábolení o hezkých url mě moc neuspokojuje.
Po pravdě řečeno, chtěl jsem napsat už do diskuze pod článkem o asp.net, ale po tomto výtvoru jsem se konečně odhodlal – pokud sperete technologii, kterou ani pořádně neznáte a pak napíšete dva bezobsažné články o geniálním Nette, tak tu něco smrdí.
freddy #29
#28 Zdendo, nechápu místní slintající diskutující – když programátor, který UŽ něco dokázal, napíše že připravuje framework který by měl stát za to, tak je to důvod se o to zajímat. Zadné slintani nevidim, jen normalni zajem.
malá přirozená čísla atd: co proboha řešíte, to jste nepochopil myšlenku? Si to přečtěte ještě jednou.
David Grudl #30
#25 noregrete, vždycky jde o to najít správnou míru abstrakce. Akademický pohled v tom má jasno – nejlepší je abstrakce totální. Praktický pohled je značně mírnější, ale nejasný, chce to hledat a zkoušet.
#28 Zdendo, nedělám si iluzi, že bych (skalní) zastánce ASP.NET dobrým frameworkem přetáhl k PHP, ani neočekávám projev uznání nad čímkoliv v PHP 🙂 Cílovou skupinou jsou naopak programátoři, kterým záleží i na hezkých URL, neboť ví proč. Poslední odstaveček jsem ale nepochopil – co tu konkrétně smrdí?
pavel #31
Dej to pod GPL a prodavej komercni licence. MySQL se takhle uzivi, uvidime jak ty :)
Tomik #32
dgx už takhle šíří Texy!, těžko říct, jak se s tím dá u takovýhle projektů uživit, to se zeptej přímo jeho…
llook #33
#31 pavle, Ale MySQL lze v pohodě používat v komerčních aplikacích, protože ty nemají povahu díla odvozeného. Těžko říct, jestli by jim kšefty klapaly stejně dobře, když by neměly tak silnou uživatelskou základnu. Nevím o žádném aplikačním rámci v PHP, který by produkoval tímto způsobem zisk, všechny rozšířenější jsou MIT/BSD/LGPL. Je to tak proto, že to ještě nikdo nezkusil?
Jestli chceš zavést dobrovolné příspěvky, tak určitě udělej stránky i v angličtině a zaměř se víc na propagaci v anglofonní části Internetu, na Čechy se víš co. A pořiď si PayPal účet – jednak si nejsem jistý, jestli lze běžný osobní účet používat k podobným účelům (je to de facto veřejná sbírka) a jednak mezinárodní bankovní operace (pokud se zaměříš na západ) jsou pro mikroplatby strašně nevhodné.
binarniladin #34
DGX ty si zapoměl na síru? Pche. Tak to sem teda pohoršen. Bych si to Nette nekoupil ani kdybych věděl k čemu je to dobrý 🙂
David Grudl #35
#32 Tomiku, #33 llook V čechách si prodejci komerčních licencí a doplňku Open Source aplikací žijí na velmi vysoké noze. Z příjemců dobrovolný dotací jsou rázem miliardáři 🙂
Zcela upřímně, vyhovovalo by mi dělat návrháře a programátora zajímavých Open Source aplikací na plný úvazek, ale to je běh na dlouhé trati s velmi nejistým výsledkem. Samozřejmost je orientace na svět. Je třeba získat obrovské množství příznivců, dobře nastavit pravidla byznysu, vyřešit platební systém (Paypal v ČR je problém & Paypal vůbec je problém), vyřešit účetní záležitosti (dobrovolný příspěvek na firemní účet = smrt účetní). A těžko lze srovánat s jinými modely, protože každý projekt je docela jedinečný.
Je tedy velký rozdíl mezi „příjemné zpestření“ a „uživit se“.
hvge #36
#35 Davide Grudle, Ako free navrhar open source rieseni sa da asi tazko uzivit. Jedine dlhodobo stabilne riesenie je zamestnat sa ako zamestnanec nejakej korporacie, ktora si to moze dovolit. Pre taku firmu to moze byt navyse celkom dobre PR.
johno #37
Ak sa nikto nenahnevá, tak sa vrátim späť k článku.
MVC je tak široký pojem, že si vlastne asi ani nekecal. MVC si viem predstaviť aj na jednom komponente s udalostami.
Model je logika komponentu, View je šablóna komponentu, Controller je nejaký Invoker, Front Controller, Dispatcher,… čo zvonka zavolá tú správnu metódu pri správnom evente a vypľuje výstupy.
Mirek Novotný #38
Zaměření na světový trh znamená nutnost mít světovou kvalitu produktu. MySQL podmínku splňuje, mnohé české open-source stěží.
Marek #39
Rád bych se zeptal dgx-e na takovou věc, co už mě zajímá delší dobu ale nevím, jestli mě odpovíte po pravdě.
Kolik lidí je dgx? To je fakt jeden člověk David Grudl nebo to je skratka pro víc lidí? Ani to nevypadá jako přezdívka, fakt spíš jako zkratka. Zkuste si schválně v RSS čteče porovnat časy kdy třeba sem píše dgx komentáře nebo články. Odpoledne, dopoledne, večer, v noci, ve 2hod ráno, v 6 ráno. Spí někdy? Nebo to nechápu.
Děkuji za odpověď.
David Grudl #40
#39 Marku,
Když si zrovna nezapomenu vzít chlorpromazin tak jeden 🙂
No jistě! Ale střídáme se.
Borek #41
#39 Marku, Správný vývojář nikdy nespí :)
zirafka #42
#7 nebko,
Něco jako oblíbená dětská karetní hra „záchod“?
mach #43
Gauss (myslim) na zaver nejakeho dopisu napsal „Omlouvam se, ze je ten dopis tak dlouhy, ale nemel jsem cas napsat ho kratce.“
Roman #44
#39 Marku, Ono to sice nie je zdrave, dokonca to ani nezlepsuje produktivitu ani nezvysuje efektivitu prace, ale programatori, dizajneri, umelci a podobne maju tendenciu poncovat a rozne si natahovat cas. Potom to obycajne naraz dospia, alebo ochoreju.
Lovermann #45
No jasne, neumis rozeznat ASP od ASP.NET ale jak to hodnotis :) Takove aroganci se muzu jen smat. :)
roman #46
#45 Lovermanne, Aha toto je ten co ho Artur spominal.. tzv „kolemjdouci“.. 😉 😉 🙂 😉 😉 🙂 😉 😉 🙂
Tento článek byl uzavřen. Už není možné k němu přidávat komentáře.