2017-05-04 Meeting notes

Table of Contents

Date

Attendees

NameOrganisation
Symphony LLC
Former user (Deleted)Symphony LLC
Prashant DesaiIpreo
Łukasz DróżdżSymphony LLC
Symphony LLC
Dan NathansonSymphony LLC
FactSet
Former user (Deleted)Markit
Jeff SternbergIpreo
Markit
Paul TeyssierSymphony LLC
Symphony Software Foundation
Aaron WilliamsonSymphony Software Foundation

Actions items from previous meetings

Agenda

TimeItemWhoNotes
5 minConvene & roll call



10 minReview action items from previous meetings


See above

15 minDiscussion of CDS reference data proof-of-conceptFormer user (Deleted)

20 minEnd-to-end demo of MessageML 2.0 rendererFormer user (Deleted)

15 minDiscussion of proposed "marketing" material for WG's activityFormer user (Deleted)

5 minAOB & adjourn



Meeting notes

Paul Teyssier: We’ll start with the demo, so we can let the LLC engineering team go and then move forward with other topics. What we’re going to demo is what we call “structured objects,” which lets you send financial objects via the REST API and read and render them in the client. This will be in our next release, 46, in 4-5 weeks.

Glenn Anderson: I’m going to show two things. First, I’m going to send this Message ML through the agent so you can see it come out the other side. I’ve highlighted this MessageML in my text editor. It’s using our JavaScript API. I’ve got a card, some headers, some tables, etc. These cashtags, mention and hashtag, are shortcuts to stick standard entities into the message inserted into the agent.

Dan Nathanson: When the agent sees these, it’s going to expand them into PresentationML and EntityJSON that the client can render.

Glenn Anderson: My EntityJSON is just an empty object because I’m using the shortcuts. I’m going to run my test program to send this, then we’ll open Symphony. This is the card I just inserted. I’ll open it, and I’ve got headers, a table, and a cashtag. And that came from this part of the MessageML. So MessageML inserted a card, where the entity gets rendered in the default format for cashtags and hashtags.

Dan Nathanson: So that’s the default renderer, because Glenn doesn’t have a separate app installed to handle those.

Glenn Anderson: Now I’ve installed my application that is registered to handle cashtags, and where the cashtag used to be, there is a graphical rendering generated by the application.

Dan Nathanson: We’ve got a custom register that recognizes the cashtag and takes over rendering from the default renderer.

Glenn Anderson: Here I’m saying “I want to render these things, so when an entity of this type comes along, pass it to me to render.” And then here’s the code that actually renders it. Looks a lot like MessageML but more oriented toward front-end applications. So this piece here is an iframe, and it’s a live ticker, and the data’s coming in every second.

Dan Nathanson: Is that it Glenn? Questions?

Bruce Skingle: So what we’ve just demonstrated is that you can send a MessageML message containing convenient shortcuts to specify a cashtag. The agent expands the shortcut into a PresentationML cashtag with structured data associated with it, and we’ve seen it rendered in two different ways, once with the default renderer and once with a custom app providing a richer custom rendering.

Paul Teyssier: The renderer has two modes – it can insert PresentationML at display time, or if you want live rendering that has to be done through extensions, not through PresentationML

Dan Nathanson: Through the extension API, you can register renderers that will run as JavacSript in your application, and that is what is called out to at rendering time.

Frank Tarsillo: So if you have two separate apps and both have extensions registered, which takes precedence?

Dan Nathanson: That’s to be built, but the default is the most recent one installed. Eventually the user/admin will choose.

Paul Teyssier: We also anticipate that you’ll be able to have compound renderers, so they can be mixed together.

Frank Tarsillo: One quick question: the identity part, since we’re dealing with sensitive data, are we going to implement that whole circle of trust to get the identity of users when rendering the iframe, in a simplified, responsive way?

Glenn Anderson: You can think of the iframe as having all the same permissions as a module would. You’ve done the authentication by the time the iframe comes along and gets passed on.

Frank Tarsillo: Ok, so all the authentication is taken care of during application startup?

Glenn Anderson: Yep.

Johan Sandersson: This looks fine, and I like the convenience tag, but how do we use multiple identifiers in the security object? If Markit is rendering this inline, but when you hover I want to send the ISIN out to another app, what happens?

Bruce Skingle: The convenience tag is something we’re providing in addition to the current functionality. It will be expanded into a simple structured object with limited data. But if you want to send a message that contains a structured object with more information, including multiple identifiers, you can do that the way you always have.

Lukasz Drozdz: My message-create example is not as nice as Dan’s, so I’ll just show you what comes out of the agent on message retrieval. You can see that the MessageML was converted to PresentationML, and the main tag and convenience tag cards. And if you look at the data, this is the entity we generated from that message – a user mention, two keywords… this is what you get on the backend when the message is retrieved.

Dan Nathanson: If you look at wheat is sent here, this exact message could have been sent in instead of the MessageML with the shortcut. And this could be a bigger object with more of the identifiers you care about.

Johan Sandersson: And that whole entity can be sent when the link is clicked?

Dan Nathanson: Yes, you get the whole object.

Bruce Skingle: Instead of using the convenience tag, you could submit the message in this format, and include all of the IDs you want to in with the object.

Paul Teyssier: Just to clarify a related point: the entire EntityJSON can be consumed by the registered apps that are renderers. At first, the ability to add hover-type behavior will only apply to the legacy objects: hashtags, cashtags, and mentions. We haven’t yet built the ability to have a hover-type behavior for other objects. In the next release we hope to have it for any kind of object.

Glenn Anderson: If you do your own renderer, you could insert something that could looks like the old-style hashtag, and has a hover. That was in my demo. And that will give you that old support, but you have to put that in yourself.

Paul Teyssier: But Johan is asking about the next step, when you click the hover, will you pass on all of the IDs he’s interested in.

Johan Sandersson: Take the example Lukasz just showed—say the user has Markit’s renderer registered to handle the ticker object, and the object includes the ticker, CUSIP, and ISIN. The user also wants to send that information to other applications. Markit should not need to know what kind of identifier those applications want, it should just hand off the object.

Bruce Skingle: It’s not a ticker object, it’s a financial security object, so it contains all of that data. We want to provide the ability for the user to display multiple applications & renderings side-by-side.

Johan Sandersson: Yeah, I just see it as a workflow thing, because you’ll want to do different things in different use cases. But in every case, you want to see a standard rendering for financial instruments, but what you’ll do from there will change day-by-day and use-by-use.

Dan Nathanson: What he’s actually talking about is forwarding the entity to other apps. And that’s something that will be dealt with the next release.

Bruce Skingle: Johan, you’re saying you have views on how that should work?

Johan Sandersson: My concern is that we don’t lose data along the way as users choose to install various renderers. The data object should always be intact as it’s passed from one app to another.

Bruce Skingle: Whichever renderer is being used, they’ll get the entire object.

Peter Monks: One of the topics that’s come up a couple of times in the DWAPI working group is launchers, so that’s another place you might raise this issue.

Johan Sandersson: Yes, good point. Lukasz, in the previous screen where you’re sending the cashtag, you cut out some data.

Paul Teyssier: The object that Lukasz is showing, the $goog, on the presentation side corresponds to a true old-style cashtag. Without a renderer, that’s what you’ll see. If you register a renderer, instead the frontend app will instantiate the application and display what it provides, which is an iframe with PresentationML data. It just so happens that what was passed back also included a cashtag. But regardless, when you hover, all that’s passed in is the simple cashtag, not the whole object. That will come later. We call that “Structured Objects 1.1,” so that’s how urgent that is for us.

Lukasz Drozdz: I also wanted to show how we degrade gracefully from Markdown. This is not a very simple example, but here’s MessageML with a card and entity data. Here I’m sending a message and also injecting data from the object into the message. Looking at the UI, what we get back is PresentationML with the data object in it.

Dan Nathanson: For those of you familiar with our Jira integration, this is the reimplementation of the original in the new style. It no longer requires a custom renderer but uses the native functionality of MessageML and PresentationML. By setting up presentation at the time of ingestion, this will all be available crosspod.

Paul Teyssier: In 4-5 weeks, this will all be available on your test pods. Frank, you want to take it from there?

Frank Tarsillo: Sure. Hershal and I posted some CDS use cases that we were discussing last time. Johan happened to be in NY, so we sat down and walked through this a bit. We published one really detailed use case in Confluence. Has everyone looked at the detailed use case page I sent out?

Bruce Skingle: I did, I liked it.

Frank Tarsillo: I’ll share my screen and focus in on a particular use case.

Lawrence Miller: I had one question that came up as I was reading through the page. Are entity clips and pair clips unique IDs for particular CDSs, or used in combination with each other?

Frank Tarsillo: In interpreting the red database, there is an understanding that entities have 6-digit identifiers. The pair clip is an entity plus a set of obligation. The idea is to create a hierarchical representation: one being the entity itself with a 6-digit code for the parent identity, then with the obligation pairing, you have a 9-digit ID as the pair clip.

Lawrence Miller: Are these attributes of a CDS, or an identifier for an individual security? Are they things like CUSIPs or…

Frank Tarsillo: It is a cross-ref identifier, the 6-digit version. I think it’s an extension of a standardized reference data set – no different from a CUSIP or any other identifier. How you want to classify the reference data attributes for other applications – I don’t think we have to deal with that. The other applications can deal with it however they want.

Lawrence Miller: Would an entity clip ID uniquely identify a particular security?

Frank Tarsillo: Yes, it would. Ok, so the entity and pair clip are the two new entities we’re proposing to define. This is what it would look like in EntityJSON. Then we broke it into use cases, here’s the simple bot use case, direct web query, and then this bot which is part of a multiparty conversation. This bot is doing NLP where you don’t necessarily have to be using special formats but the bot can insert things based on what it’s interpreting. That’s something I’d like to do as a POC. These are buttons or links that would call out to FactSet or another application to display deeper representations of the data. Then here’s what it would look like with a hover-over. This is very specific to reference data and doesn’t cover the pricing data that would come out of it.

Paul Teyssier: Is the underlying usecase for the direct web query that, as an end user, I could avoid typing all the identifiers and everyone in the conversation can know what I’m referring to?

Frank Tarsillo: Yes, that’s one use case.

Paul Teyssier: And as we extend the platform to autocomplete that could apply to different types of objects, would that be useful here?

Frank Tarsillo: Yes, that’s a great idea. So I think the inline one is an easy use case to start with, which then sets us up for the hover-over use case.

Paul Teyssier: You won’t be able to put this kind of data into a hover in this next release. But you can get close to a use case like this by using the card primitive, putting what you’d put in the hover into the card, which might actually be a better implementation.

Frank Tarsillo: So in the current form, I can’t get my CDS reference data populating in the hover card?

Bruce Skingle: Not at the moment.

Frank Tarsillo: So then going on to this last bot use case, we can do this today and I don’t think it’s too difficult to produce.

Bruce Skingle: I think the bot is a different use case from the renderer. The bot responds to a message by handing you a message with additional data. The renderer is way of presenting what the message contains.

Frank Tarsillo: What I’d suggest for this use case is that we do the rendering in-line, then decide later how to pass the data off to a renderer. So I’ll create the bot and if someone else could work on a custom renderer for these objects, that would be great.

Action items

  • Former user (Deleted) develop a proof-of-concept bot to recognize CDS entity references and respond with in-line data about the security.
    • All: contact Former user (Deleted) if you're interested in working on a custom renderer for the CDS data returned by the bot

Need help? Email help@finos.org we'll get back to you.

Content on this page is licensed under the CC BY 4.0 license.
Code on this page is licensed under the Apache 2.0 license.