… I've looked at something implementing this in JS
… the API is similar to Futures, but not identical
… I went ahead and implemented Futures. Some changes is that previously we could just call the callback, now we have to pass an object [niklasl: did I get that correctly?]
… [dave describes details on the implementation, regarding input and return values]
... I did complete an implementation of Promises/A+; I need to wrap that to make it compliant to the Futures spec. However, it may be that that spec changes to become closer to Promises/A+
Dave Longley: I found it more difficult to use Futures than the node.js continuation-style, but that may be a part of the learning curve. It seems like the Futures spec may be changing and it may be changing closer to the Promises API. [scribe assist by Manu Sporny]
… it's unclear right now. Noone uses this incarnation of Futures yet, apart from us...
Markus Lanthaler: create/fulfil and reject are missing from Promies/A+, need to be added for Futures
Manu Sporny: is this the right direction? It seems clear that we can add this, and that the Futures spec can evolve independently
Dave Longley: from what I can tell, I'd expect that more people with experience will look at the Futures API and demand changes. But it will probably become what ends up in web browsers.
… I don't think people will give up and go with the node callback style. It will end up different from now, but people are used to having a framework for this.
Gregg Kellogg: it seems like a very elegant way of doing things. I'm nervous about using this at this early stage, but it seems like the right direction.
… we seem to be able to handle spec changes of that , unless radical. The test suite must be adapted, but the spec text is ok.
Paul Kuykendall: adding these changes this late in the game, using a spec in such an early stage, is somewhat worrying
Manu Sporny: if we choose to take a path that goes away from the web platform (the browser vendor's POV), it may very well cause problems (with uptake..)
… since this API is targeted to JS impl.s in the browser, this is important
Paul Kuykendall: decoupling this would be good to get further along with the specs
… it would be good to not bind the algorithms to the API
Manu Sporny: that's done now
Gregg Kellogg: but they are bound – they're in the same spec
Gregg Kellogg: if we fail to get to LC due to API instability, the algorithms fail along with that
Manu Sporny: we could split the API out, we need to go to another LC; if we move to futures, same thing
… we don't seem to want to take the no-change route
Markus Lanthaler: also, the current callback style isn't like the callback-style done in browsers
Dave Longley: we also need two independent implementations
Manu Sporny: it could be fairly easy: use the core js impl. . of the algorithms but implement your own Futures on top
Markus Lanthaler: most important to have impls implement the features/algorithms
Gregg Kellogg: it doesn't seem to be required that futures are implemented async.
Niklas Lindström: Regarding any other options - is it possible to have some parts of the API by demanding that the data passed in has previously resolved any fetching of any entities? [scribe assist by Manu Sporny]
Niklas Lindström: This would be a two-pass approach, where every external reference would be resolved. [scribe assist by Manu Sporny]
Manu Sporny: I think we tried to think about that approach, it would be a lot of cognitive load on the developers. [scribe assist by Manu Sporny]
Niklas Lindström: It would be nice to have a mathematically pure transformation that is synchronous... it's sort of beside the point at this stage. [scribe assist by Manu Sporny]
… [it would still have to be async to do the initial loading of external resources]
PROPOSAL: Address ISSUE-125 by adopting a Futures-based approach for the JSON-LD API.
Manu Sporny: +1
Gregg Kellogg: +1
Niklas Lindström: +1
Markus Lanthaler: +1
Dave Longley: +1
Paul Kuykendall: +1
RESOLUTION: Address ISSUE-125 by adopting a Futures-based approach for the JSON-LD API.
Manu Sporny: This decision requires that the JSON-LD Algorithms and API spec must go through a second Last Call.
Dave Longley: to recap: this issue is about what the behavior is if you in a new context use a term in the RHS which is already defined. Should it remove the old term def before interpreting of the RHS
… recursion would fail with recursion if the term is completely new...
Manu Sporny: the last time, a bunch of us seemed to agree that the definition should be reset before the interpretation is done
Markus Lanthaler: it's not a partial redefinition if you just use a term for expansion
… if you delete a term as soon as it is defined you introduce an asymmetry
Gregg Kellogg: re. the above example, this illuminates the choice
Dave Longley: the cognitive load is reduced if we reset the term as soon as it is defined
Markus Lanthaler: do we need to change anything in the algorithms?
Dave Longley: just fix a bug and put some clarification in text in the algorithm
PROPOSAL: When re-defining a term 'A', any previous definition for term 'A' is removed before the right hand side for the new re-definition is evaluated.
Gregg Kellogg: +1
Manu Sporny: +1
Niklas Lindström: +1
Markus Lanthaler: +1
Dave Longley: +1
Paul Kuykendall: +1
RESOLUTION: When re-defining a term 'A', any previous definition for term 'A' is removed before the right hand side for the new re-definition is evaluated.
Dave Longley: the only change in the algorithm is if you redefine a term which looks like a curie (which was brought up initially)
Topic: Test Suite Design
Manu Sporny: basically we're keeping the test suite the same
… for the api, we're going to have developers point to the test harness they use for the api
… we have the approach for both the main syntax-focused suite and the API test suite
Gregg Kellogg: EARL reports for the different manifests is enough to produce the report (in turtle or json-ld)
Gregg Kellogg: the driving manifest will determine the absolute IRIs for the tests
Markus Lanthaler: but locally hosted manifests will then resolve to different IRIs
Gregg Kellogg: perhaps a base would be enough
… the turtle test suite manifest has this problem currently
Markus, Gregg, and Dave Longley will submit implementation reports for a total of 5 implementations.
… digital bazaar will have implementations in js, php and python
... [gregg on negative tests, datatypes, syntax tests]
Manu Sporny: next stage is getting some reports done
... it would be good to get EARL reports from implementors
Gregg Kellogg: the report I use takes test manifests and individual reports; processes as RDF, runs sparql to extract results; and generates a json-ld file from that
Manu Sporny: can each implementation produce JSON-LD?
Gregg Kellogg: yes; it can take any RDF format, including JSON-LD
Manu Sporny: better to send a report, or publish it?
Gregg Kellogg: best to submit them through rdf-comments mailing list