ermouth commented on issue #1534: proposed 1.x deprecations
URL: https://github.com/apache/couchdb/issues/1534#issuecomment-412367604
 
 
   > Could your embedded RasPi update function be written declaratively?
   
   Very unlikely, devices do not post json. For now both `_update` and 
`_rewrite` as a fn are able to chop up requests having binary body, and then 
decide. I have no doubts any DSL making this kind of work will be either 
useless for other scenarios, or too complex if it wants to cover everything. 
DSLs are not a substitute for yet unknown tasks. Any DSL is domain-specific, or 
it’s a cumbersome mess.
   
   > The UNIX philosophy applies to CouchDB as to any other program
   
   Indeed, however ‘do one thing’ is, looking at most of modern really user- 
and dev-friendly SW, bit unpopular from UX point of view. This rule was good at 
CLI-only times, and those times are gone. For now, standing for this rule 
mostly increases transaction costs: the approach of loosely stitching things 
together is good for scripts, but often induces heavy deployment and impedance 
alignment costs for continuous systems.
   
   Also let me remind another Unix rule that still stands, the rule of 
diversity: **Make programs flexible, allowing them to be used in ways other 
than those their developers intended.**
   
   > The same goes for a proxy server like HAproxy or Nginx when it comes to 
proxying, vhosts and rewrites
   
   I have nothing to say about vhosts and proxying, we never used them 
seriously as those settings are not replicatable, but as for rewrites...
   
   What about deployment? If you have hundreds of nodes which are not intended 
to be members of a cluster, updating external proxy rules is a serious pain 
with immense number of uncomfortable (or just dangerous) subtleties. With 
delivering API wiring using regular data flow deployment is just one click, 
because it uses most powerful feature of Couch: replication. Utils like 
nginx-sync do not stand even near.
   
   > So far, the big place he's stuck is implementing lists
   
   It would be nice to have more info, no one can help having no description of 
a problem. 
   
   Should removing or simplifying `.info` obj ease the task? It was done for 
rewrites as a fn, and this trim, aside of other effects, gives good perf 
improvement comparing to other QS stuff. Actually, CouchDB 1.6.1 patched with 
JS rewrites and called through rewrite JS function is still in most cases bit 
faster then naked single-node 2.x.
   
   > Alternately, what would Mango need added to it to give you sufficiently 
improved list functionality to fully replace JS lists?
   
   Full replacement is impossible, or you will make new DSL just another 
programming language. However if narrow the scope to simplest cases and 
JSON-only, joins and reducers are obvious answer. If former is more or less 
clear and implementable, the latter just does not fit well into DSL concept 
except simplest cases.
   
   So, summing up: I have nothing to say about non-replicatable features or 
features proven to be buggy and unreliable. But I think most features using 
benefits of syncing code with data flow better be kept.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to