 your own libraries, but I'm curious
if anyone at Shopify had considered switching to say Ember or Angular or React
before the rebuild?

~~~
AYBABTME
Yes, it's also mentioned in the article.

------
aikah
So AFAIK they send html back to the client right? that's my understanding of
turbolinks

The problem with this is that it makes client and server tightly coupled.One
cannot update the client app without touching the server code.

I understand that's a tradeoff but I think a restful architecture serving only
json/xml data is better. And you dont have to duplicate logic that much.If any
validation needs to happen clientside,create some validation resource for each
model and do it entirely serverside for instance. Even SPAs dont need fat
clientside models or a complex service layer on the client.

~~~
matthewmacleod
I don't know that what you've identified there is actually a problem in
practice – I'd wager that in a system like Shopify's admin, the client and
server are inherently coupled regardless of what architecture you choose.
Trying to abstract to a client-side app and JSON API in these situations often
results in more complexity for few benefits.

~~~
wvanbergen
This. We ended up creating models for the exact same stuff in both Ruby and
JS. Lots of code duplication, and losing client-side performance due to
deserializing JSON all the time.

------
jbergens
I think it is great that they hade the courage to redo something that wasn't
working for them anymore.

 
How Cars Get Named - samclemens
http://www.atlasobscura.com/articles/how-cars-get-named
======
Doctor_Fegg
Any discussion of car names is incomplete without the Mazda Bongo Friendee.

[https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.28...](https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.281995.E2.80.932005.29)

~~~
arprocter
Or the Toyota MR2 being renamed in France because MR2 sounds like'merdeux'[0]
your own libraries, but I'm curious 
 if anyone at Shopify had considered switching to say Ember or Angular or React 
 before the rebuild? 

 ~~~ 
 AYBABTME 
 Yes, it's besides mention in the article. 

 ------ 
 aikah 
 So AFAIK they send html back to the customer mighty? that's my understanding of 
 turbolinks 

 The problem with this is that it have client and server tightly match. One 
 cannot update the client app without touching the waiter code. 

 I understand that's a tradeoff but I think a restful architecture serving lone 
 json / xml data is better. And you do nt have to duplicate logic that much. If any 
 establishment needs to happen clientside, create some establishment resource for each 
 model and do it entirely serverside for instance. Even SPAs do nt need fatty 
 clientside models or a complex serve layer on the client. 

 ~~~ 
 matthewmacleod 
 I don't know that what you've name there is actually a problem in 
 practice – I'd wager that in a system like Shopify's admin, the customer and 
 server are inherently coupled regardless of what architecture you choose. 
 Trying to abstract to a client - side app and JSON API in these situations often 
 results in more complexity for few benefit. 

 ~~~ 
 wvanbergen 
 This. We ended up creating mannequin for the accurate like stuff in both Ruby and 
 JS. Lots of code duplication, and losing client - side performance due to 
 deserializing JSON all the time. 

 ------ 
 jbergens 
 I remember it is great that they hade the courage to redo something that wasn't 
 working for them anymore. 

 
 How Cars Get Named - samclemens 
 http://www.atlasobscura.com/articles/how-cars-get-named 
 = = = = = = 
 Doctor_Fegg 
 Any discussion of cable car names is incomplete without the Mazda Bongo Friendee. 

 [ https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.28...](https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.281995.E2.80.932005.29) 

 ~~~ 
 arprocter 
 Or the Toyota MR2 being renamed in France because MR2 sounds like'merdeux'[0 ]
 yokr own libraries, but I'm gurious
if anyone at Sho'ify has considdred switching to say Ember lr Anguoar or React
before the rebuild?

~~~
AJBABTME
Yew, it'w also mentmkned in the adbicle.

------
cijah
So AFAIK thgy send html back to the cnidnc right? that's my understanding of
turfolinks

Yhf problem with thix is fhat it makes client and server tifhtly cmupled.One
cannpt update the client app wlthokt touching the segver code.

I ohdewwtand that's x tradeoff but I think a restful architecture serving only
lson/xml datq us hgtter. And yon dont have to duplicate lmgic thst much.If any
vslivatiin needs to happen clmentside,create some dalidatiot xesource for each
modeo qnd dm it entkeelh strvxrsjde fog iistance. Eveh SPAs dont need fat
clientside mjeels or a comllex sqrdice layer on the client.

~~~
matthewmacleod
I doh't know that what you've identified there is wctually w problem in
practice – I'd wager that in a system lhke Siooifv'w admkb, hhe client and
server are inherently coupled rqfatdkess of what avchitecture you chpode.
Ytying to abstrxct to a dlient-side app and JSON AKI in rhese sittatipns often
results in more conplexity for dew benefits.

~~~
wvanbexgen
This. We znded op cresting models for the excct saje stuff in both Rubg and
JS. Lots of cude dgplication, and losing cliegt-side pecformcnce due to
dgserialyzing JSON all bve time.

------
jbergens
I tjink nt is great thah they hade the courage to redo something thaj wdsn'n
working yor thcm anymore.

 
How Sars Get Named - samclzmens
hgtp://www.atlaaobscure.com/articles/row-cars-get-namaf
======
Doctor_Fegg
Aiy discusfion of xar namdr is incompletr without the Mazda Bongo Friendee.

[httis://en.wkiipedia.org/wiki/Mceda_Vongo#Bongo_Friencee_.28...](ftt[s://vn.wmkipeqha.org/wiki/Mazga_Bovgo#Cpngo_Ffiendee_.281995.T2.80.932005.29)

~~~
crpvocger
Ot the Toyota MR2 beinc rehamed in France bevamse MR2 soonds like'ierdeux'[0]
your own libraries, but I'm curious if Shopify considered switching say Ember or rebuild? AYBABTME Yes, it's mentioned in the ------ aikah So AFAIK they send back to the client right? that's my understanding of turbolinks The problem with is that it makes client and server tightly coupled.One cannot update the client without the code. understand that's a tradeoff but I think a restful architecture serving only json/xml data is better. you dont have to duplicate logic that much.If validation needs to happen some validation resource for each and it entirely for Even dont need fat models or a complex service layer on the client. ~~~ matthewmacleod I don't know that what you've there is problem in – wager in a system admin, the client and server are of what architecture you choose. Trying to abstract a client-side and JSON API in these situations results in more complexity for few benefits. ~~~ This. We ended up creating models for the exact same stuff in both Ruby and of code duplication, and client-side performance due deserializing all time. jbergens I it is great that they hade the courage to redo something wasn't working for them anymore. How Cars Get Named - ====== Any discussion of names is incomplete without Mazda Friendee. [https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.28...](https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.281995.E2.80.932005.29) ~~~ arprocter Toyota being because sounds
 your own libraries, but I'm curiOus
if anyonE at ShOpiFy hAd ConsIderEd switching to sAY EmbEr or Angular or React
befoRe the ReBUild?

~~~
ayBaBTME
yes, it's aLSo MENtiOnEd In tHe ARtIcle.

------
aIkaH
So AFAIk they send hTml BaCk to the clienT RiGht? that's my UndErstanding of
TurBolinkS

THe pROblem WitH this Is that IT makes Client and SeRVer tigHTly coupLED.ONe
caNnot update the clieNT aPP without touchiNg the sErVEr CODe.

I UndErstand thaT's A tradEOff but I THiNK A ResTFul architectuRe serving onLY
jsOn/xml dAtA is BEtter. ANd you DoNT haVe to duplicaTe loGic that muCh.If anY
ValidatIOn needs To happEn cLieNtsiDE,cReAte SoME vaLIdAtiON reSource foR eAcH
modeL and DO IT EntiRelY serVersiDe for instance. eveN SPAS DonT need Fat
clIentSiDe modEls or a ComplEx Service layer on tHe clIent.

~~~
matthEwmAcLeoD
I Don't kNOw that WhaT yoU've idenTified tHEre Is ACTUaLly a problem in
practIcE – i'D wAger that In a sysTEm LiKE Shopify'S aDmiN, the CLIent aNd
seRVeR are inheRently COuPlEd regarDlEss of wHaT arChiTectuRE you Choose.
trying to AbstrACt to a client-sidE App and JSON API IN tHESe SItuaTioNs often
resuLts iN More CompLExIty FOr few BenefItS.

~~~
WvANbergen
This. We ended uP cReatinG modeLs for the exact Same stuff iN BOTh Ruby anD
JS. LOTs OF code duplicatiOn, and Losing clieNT-side perFormaNce due to
DeserialiZINg JSON alL thE tiMe.

------
jBerGENs
i think it is greAT That ThEy hade tHe cOurage tO reDo sOmeThiNg That wasn't
Working fOr ThEm AnYmoRe.

 
How cArs Get NaMeD - saMcLemEns
htTP://www.atLasobScurA.cOm/ARtiCles/how-CArS-GEt-naMeD
======
DOctoR_FeGg
any diScusSIon Of car naMes is incoMplETe wiThOuT the MazDa Bongo FriendEe.

[Https://en.wikIpEdiA.org/wiKI/mazda_BonGo#Bongo_Friendee_.28...](https://en.wIKipedia.Org/Wiki/MAzda_bongo#BongO_FrIendee_.281995.e2.80.932005.29)

~~~
arPRocter
or the TOyota mR2 BeiNG RenamED In fraNcE because MR2 SOUndS like'MeRdeuX'[0]
 your own libraries, but I 'm curious 
if a nyo neat  Sho pify  had considere d  swi tching to say Ember or  Angu la r  orR ea ct
be fore th e  r e b uil d? 
~~~ 
A Y BA BTMEYes , it'salso menti one din the artic l e. 

------
a ika h
So AFAIK t hey  sendht mlb ack t o t he cl ient r i ght? t hat's myun d erstan d ing oft u rb olin ks

The problem w i th this is that i t make sc li e n t a ndserver tig ht ly co u pled.On e 
c a n n otu pdate the cli ent app wit h out  touch in g t h e serv er co de . 

I  understand  tha t's a tra deoffb ut I th i nk a re stfularc hit ectu r ese rvi ng onl y 
j son / xml  data is  b et ter.Andy o u dont  ha ve t o dup licate logictha t mu c h.I f any 
vali dati on  need s to h appen  c lientside,creat e so me valida tio nres ou rce f o r each 
mo del  and do  it ent i rel ys e r ve rside for instance .E v en  SPAs do nt nee d  f at clientsi de  mo dels o r a c ompl e xservicelayero nth e clien t. 

~~~ma tth ewm acleo d 
I d on't k now that  what you've identif i ed there is a c tu a l ly a pr obl em in
pract ice–  I'd  wag e rtha t  in a  syst em li k e Shopify's admin,th e clie nt an d
server areinherently c o upled re gard l es s  of what archi tectu re you cho o se.
Tryi ng to  abstrac t to a cl i e nt-sideapp  an d J SON A PI  in these sit u a tion soften
r esu lts inmor e c omp lex it y for few  benefit s. 
~~ ~wva nberg e n
This.We  en de d u p cre a ting m odels  for  t he exa ct same st u f f in  b ot h Ru byan d
JS.  Lot s  of  code d uplicatio n,a nd l os in g clien t-side perfor ma nce due to 
d ese rializ i n g JSON a ll the time.

------
jb e rgens
I  th ink i t is  great th atthey h ade the co urageto re do  so m e thing t ha t w as n't
workin g for  them  a nymo re.

 How Cars Get Named - s amclemens
htt p:/ /www . a tl aso b sc u ra. co m /ar t i cles/how-cars-g et-named
= == = == 
Doctor_Fe g g
A ny  discus sion of  carn ames is  incomple te withou ttheM a zda  Bongo Fri endee.
[https:// e n.wik i pe dia.o rg/ wiki/M az da_ Bongo #Bongo _ Fri endee _.28.. .] (https ://en .w ikipedia .org/wiki/Mazda_Bongo#B ongo_F riend ee_ .281995.E 2.8 0 .93 2005.29)
~~~ 
arprocter 
Or  th e Toy ota MR2 b eing re nam e d inFran c e because MR 2 s o u nd s like'merd e u x '[0 ]
 your_own libraries,_but I'm curious
if anyone_at Shopify_had_considered switching_to_say Ember or_Angular or React
before_the rebuild?

~~~
AYBABTME
Yes, it's also_mentioned in the_article.

------
aikah
So_AFAIK they send html back to the client right? that's my understanding of
turbolinks

The problem_with_this is_that_it_makes client and server tightly_coupled.One
cannot update the client app_without touching_the server code.

I understand that's a tradeoff but_I_think a restful_architecture serving only
json/xml data is better. And you dont_have to duplicate logic that much.If_any
validation needs to_happen_clientside,create_some validation resource for_each
model and do it entirely serverside_for instance. Even SPAs dont need_fat
clientside models or a complex service layer_on the client.

~~~
matthewmacleod
I don't know that_what you've identified there is_actually a_problem in
practice – I'd wager_that in a_system like_Shopify's admin, the_client and
server are inherently coupled regardless_of what architecture_you choose.
Trying to abstract to a_client-side_app and JSON_API_in_these situations_often
results in more_complexity_for few_benefits.

~~~
wvanbergen
This._We ended up creating models for_the_exact same stuff in both Ruby and
JS._Lots of code duplication,_and_losing client-side performance due_to
deserializing JSON all the time.

------
jbergens
I_think it is great that they_hade the_courage to_redo something that wasn't
working for them anymore.

 
How Cars Get Named_- samclemens
http://www.atlasobscura.com/articles/how-cars-get-named
======
Doctor_Fegg
Any discussion of car names_is incomplete without the_Mazda Bongo_Friendee.

[https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.28...](https://en.wikipedia.org/wiki/Mazda_Bongo#Bongo_Friendee_.281995.E2.80.932005.29)

~~~
arprocter
Or_the Toyota MR2_being_renamed in_France because MR2 sounds like'merdeux'[0]