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