On 19/11/2009 1:59 PM, Mikeal Rogers wrote:
        If we don't require a certain feature set in javascript, like if
        we want to
        go lowest common denominator and make sure views are usable even
        in a
        pure-javascript CouchDB in Internet Explorer then it would be
        pertinent to
        add some additional features to the default javascript view
        server API that
        abstract some of the largest pain points between javascript
        implementations
        (think jQuery forEach).


    This is getting gray too.  In a Python based API, the actual
    implementation of Python which is available to you will determine
    what code is valid, or not valid, in the supplied functions, even if
    your API is version neutral.

    So while couchdb's JS implementation could provide helpers to hide
    some of these details (as the Python one could too), I don't see it
    as directly related to the confusion between "language", "api" and
    "protocol".


This is just like writing cross browser javascript, a js framework
(jquery, dojo) doesn't insure that *all* your code will work, it just
provides you some tools to use that smooth over the differences for you
if you use them. ATM we aren't including anything like this because it's
somewhat assume that you're using Spidermonkey 1.7.

Where is crosses this API definition is that a new API may chose *not*
to implement this kind of cross-version code and simply require a
specific version of js, Python, etc.

I guess my problem was that I was erroneously splitting "API" from "utilities" - ie, I didn't see 'forEach' as part of the "API", but I must concede it would be)

If it looks anything like web frameworks look right now, there is a
defacto winner and some strong 2nd and 3rd place competitors with decent
communities behind them.

I think they are quite different environments though; view engines are heavily constrained by couch itself, so different python implementations are likely to differ by not much more than the spelling or other "semantic sugar" type distinctions. I think this is the reason why alternative JS implementations haven't evolved - the requirements are so tightly constrained that alternative implementations really have no way of providing compelling advantages. People want the ability to use different engines for entirely pragmatic reasons, but they aren't calling for a different API.

        create some new design doc semantics, or
        throw away portability to handle the diversity of APIs.


    I don't follow what would need to be thrown away here?


other design doc semantics would be something like creating a new
property to replace "language" and/or a property for version
information.

Yeah - I understood the semantics would change, but still don't quite follow what aspect of portability would be thrown away?

Without some way to give different APIs of the same language their own
assignment in the design doc you can't insure much portability since
there is no assurance that *my* "python" views will work in *your*
"python" view server. This is currently the case between the view server
in couchdb-python[1] and couchdb-pythonviews[2].

I just don't understand why I would *want* to choose between the 2. Unlike web-frameworks, I can't see how the two could offer APIs so different that only 1 is suited to some kind of task, while the other is suited to some other kind of task. IOW, I don't see how they could differ in ways meaningful enough to make the choice valuable. Just like for Javascript.

Cheers,

Mark

Reply via email to